时序约束(二): input delay约束和output delay约束

news2024/7/4 18:24:00

一、input delay约束

在千兆以太网数据收发项目中,RGMII的数据输入方式为DDR,源同步输入方式,可以用之前提到的分析模型进行约束。 

在时序约束原理中我们提到,input delay约束的就是发射沿lunch到数据有效的延时,根据时序图得到:

         LrMax = Tco max + Td_bd max -(Tc_d + Tc_bd) ------分析建立时间时序

         LrMin   = Tco min + Td_bd min -(Tc_d + Tc_bd)  ------分析保持时间时序

一般在input delay分析中,我们默认Td_bd ==Tc_bd,并不考虑Tc_d。因此LrMax和LrMin就指的是上游器件输出数据和输出时钟的延时。

PHY芯片datasheet中时序图如下,图中的TskewR==2ns是时钟信号相对于数据信号的延时。数据线之间的SKEW未知,我们假设为0.2ns。

可以得到:

                                 LrMax = 2 + skew/2 = 2.1

                                 LrMin = 2 - skew/2 = 1.9

接下来就可以在工具中进行约束。首先,打开Open Implementation----->Edit Timing constraints。

然后选择Set Input delay,点击加号“+”添加约束信息。

设置参数。

        Clock:时钟,选择rx_clk。

        Objects:约束目标,选择RGMII输入信号。

        Delay value:延时时间。

        Delay value is relative to clock edge:边沿选择。

        Delay value specifies:最大最小选择。

Delay value is relative to clock edge选择rise,Delay value specifies选择max,在Delay value处设置上升沿的最大、最小延时;Delay value is relative to clock edge选择full,Delay value specifies选择max,在Delay value处设置上升沿的最大延时;Delay value is relative to clock edge选择rise,Delay value specifies选择min,在Delay value处设置上升沿的最小延时。下降沿的延时最大、最小延时设置同理。

这样就完成了input delay的约束,点击保存,可以看到input delay约束信息已经更新到了.xdc文件中。

 重新综合、布局布线,点击Report Timing。

 设置要打印的时序报告的参数。设置要打印的信号。

 在option 中的设置观察时序路径条数和每个路径打印多少条信息, 点击 OK 。

 这样就生成了时序报告。可以看到建立时间和保持时间没有发生时序违例。

二、indelay control方式input delay约束 

         以上的input delay约束方式是通过PLL调整时钟相位以达到时序要求,indelay control方式是通过对数据进行延时以满足时序要求。

        通过IDELAY2源语实现这个功能,例化该源语在ODDR模块中,模块输入数据信号tx_dat[7:0]和使能信号tx_en首先进入该源语进行数据延时,源语输出再进行ODDR转换。

DELAYE2 #(
.CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)
.DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)
.HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
.IDELAY_TYPE("FIXED"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
.IDELAY_VALUE(0), // Input delay tap setting (0-31)
.PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE
 .REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-
.0).
 .SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal
 )
 IDELAYE2_inst_dv (
 .CNTVALUEOUT(), // 5-bit output: Counter value output
 .DATAOUT(rx_ctrl_t), // 1-bit output: Delayed data output
 .C(1'b0), // 1-bit input: Clock input
 .CE(1'b0), // 1-bit input: Active high enable increment/decrement input
 .CINVCTRL(1'b0), // 1-bit input: Dynamic clock inversion input
 .CNTVALUEIN(5'd0), // 5-bit input: Counter value input
 .DATAIN(1'b0), // 1-bit input: Internal delay data input
 .IDATAIN(rx_ctrl), // 1-bit input: Data input from the I/O
 .INC(1'b0), // 1-bit input: Increment / Decrement tap delay input
 .LD(1'b0), // 1-bit input: Load IDELAY_VALUE input
 .LDPIPEEN(1'b0), // 1-bit input: Enable PIPELINE register to load data input
 .REGRST(1'b0) // 1-bit input: Active-high reset tap-delay input
 );

IDDR #(
 .DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), // "OPPOSITE_EDGE", "SAME_EDGE"
 // or "SAME_EDGE_PIPELINED"
 .INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1
 .INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1
 .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
 ) IDDR_rxctrl_inst (
 .Q1(rxdv), // 1-bit output for positive edge of clock
 .Q2(rxerr), // 1-bit output for negative edge of clock
 .C(rx_clk_90), // 1-bit clock input
 .CE(1'b1), // 1-bit clock enable input
 .D(rx_ctrl_t), // 1-bit DDR data input
 .R(1'b0), // 1-bit reset
 .S(1'b0) // 1-bit set
 );

其中IDELAY_VALUE表示设置延时大小,可以填写的值为0~31,具体分辨率是多少每个器件并不相同,需要查看手册。

此外,这个源语还要配合IDELAYCTRL使用:

IDELAYCTRL IDELAYCTRL_inst (
 .RDY(RDY), // 1-bit output: Ready output
 .REFCLK(sysclk), // 1-bit input: Reference clock input
 .RST(~locked) // 1-bit input: Active high reset input

通过调整IDELAY_VALUE的值,就可以调整数据和时钟之间的延时,消除时序违例。当IDELAY_VALUE增大时延时增大,建立时间裕量减小,保持时间裕量增大。

三、output delay约束 

同样使用千兆以太网数据收发中的RGMII输出端作为约束对象。在不知道目标端的建立时间和保持时间时,可以利用数据的skew进行output delay约束。

 根据时序图可得:

                                                dMax = Tcycle - askew

                                                dMin = bskew

设置SKEW 的目的是让综合工具知道输出的时钟采样沿不能落在 SKEW 的区域 。我们可以通过调整skew的值使时钟沿落在数据的中心位置。这里设置askew=bskew=1.5ns,则dMax = 2.5,dMin = 1.5。

这样就可以在工具中进行约束了。首先要创建生成时钟,告诉综合工具tx_clk是时钟信号。打开Open Implementation----->Edit Timing constraints,选中Creat Generated Clock,点击加号“+”,这里设置时钟源为PLL输出时钟,目标时钟为tx_clk。

 然后选择set Output Delay,点击加号“+”添加约束信息。

设置参数。

        Clock:时钟,选择tx_clk。

        Objects:约束目标,选择RGMII输出信号。

        Delay value:延时时间。

        Delay value is relative to clock edge:边沿选择。

        Delay value specifies:最大最小选择。

Delay value is relative to clock edge选择rise,Delay value specifies选择max,在Delay value处设置上升沿的最大、最小延时;Delay value is relative to clock edge选择full,Delay value specifies选择max,在Delay value处设置上升沿的最大延时;Delay value is relative to clock edge选择rise,Delay value specifies选择min,在Delay value处设置上升沿的最小延时。下降沿的延时最大、最小延时设置同理。

这样就完成了output delay的约束,点击保存,可以看到output delay约束信息已经更新到了.xdc文件中。

  接下来我们重新综合、布局布线,Open Implemented Design,点击Report Timing。

设置时序报告打印参数。这里在End Points处添加。

 这样就生成了时序报告。可以看到建立时间和保持时间没有发生时序违例。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1886478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地项目推送到gitlab仓库的保姆级教程

目录 1、安装git (1)Windows系统 (2)Linux系统 2、gitlab创建空白项目 3、创建密钥 4、将密钥添加到gitlab中 5、远程配置 (1)配置全局的用户和邮箱 (2)本地文件夹初始化 …

Rust: polars行遍历,从dataframe到struct及Bar设计比较

pandas提供了iterrows()、itertuples()、apply等行遍历的方式,还是比较方便的。 polars的列操作功能非常强大,这个在其官网上有详细的介绍。由于polars底层的arrow是列存储模式,行操作效率低下,官方也不推荐以行方式进行数据操作。…

序号不足两位前面补0

预期目标 原始效果 代码实现 {${(index 1).toString().padStart(2, 0)}. ${item.sentence}}要实现自动编号并确保显示为两位数的格式,可以在 {index 1} 的地方进行格式化。在 JavaScript 中,可以使用 String.prototype.padStart() 方法来补足数字到指定…

Webpack: Loader开发 (1)

概述 如何扩展 Webpack?有两种主流方式,一是 Loader —— 主要负责将资源内容翻译成 Webpack 能够理解、处理的 JavaScript 代码;二是 Plugin —— 深度介入 Webpack 构建过程,重塑 构建逻辑。 相对而言,Loader 的职责…

三个方法教大家学会RAR文件转换为ZIP格式

在日常工作当中,RAR和ZIP是两种常见的压缩文件格式。有时候,大家可能会遇到将RAR文件转换为ZIP格式的情况,这通常是为了方便在特定情况下打开或使用文件。下面给大家分享几个RAR文件转换为ZIP格式的方法,下面随小编一起来看看吧~ …

如何通过指纹浏览器使用代理IP?

1.指纹浏览器定义 指纹浏览器是 一种浏览器技术,它根据用户设备的硬件、软件和配置等特征生成唯一标识符(称为“指纹”)。此指纹用于识别和追踪用户身份,即使用户更改其 IP 地址或清除浏览器数据(如缓存和 Cookie&…

美国抗攻击服务器有哪些可靠的解决方案

美国抗攻击服务器在面对日益严重的网络安全威胁时,需要采取一系列可靠的解决方案来确保服务器的稳定运行和数据安全。以下是一些科普性质的抗攻击服务器解决方案: 一、流量清洗与过滤 流量清洗是美国抗攻击服务器应对DDoS攻击的重要措施。当检测到异常流…

助力构建新型电力系统自主可控实时底座

近日,2024亚洲新型电力系统及储能展览会&亚洲新型电力及储能论坛会在广州广交会展馆圆满落下帷幕!科东软件携多款电力产品亮相展会,并在2024亚洲新型电力及储能论坛发表《“鸿道Intewell操作系统助力构建新型电力系统自主可控实时底座”》的主…

机器学习-EM算法

目录 一:最大似然估计 二:EM算法 加入隐变量 EM算法推导 1.Jensen不等式 点个赞呗!!! 一:最大似然估计 举个栗子:一个袋子里有很多个球,每次放回的取一个球,取了十次,其中有六次白球,4次黑球。那么就认为袋子里面取到白球的概率为6/10,黑球的概率为4/10。…

C++——list类用法指南

一、list的介绍 1、list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代 2、list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素 …

51单片机外部中断(按键识别)

欢迎入群共同学习交流 时间记录:2024/7/2 一、电路原理图 51单片机包含INT0、INT1两个外部中断接口 二、知识点介绍 1.中断寄存器位介绍 (1)TCON定时控制寄存器,位0(IT0)中断INT0请求信号选择位&#x…

性能调优 性能监控

1.影响性能考虑点包括: 数据库、应用程序、中间件(tomcat、nginx)、网络和操作系统等方面。 首先考虑自己的应用属于 CPU密集型 还是 IO密集型 cpu密集型 计算,排序,分组查询,各种算法 IO密集型 网络传输,磁盘读…

聊聊 golang 的 map

1、哈希表 哈希表是一个很常见的数据结构,用来存储无序的 key/value 对,给定的 key 可以在 O(1) 时间复杂度内查找、更新或删除对应的 value。 设计一个好的哈希表,需要着重关注两个关键点:哈希函数、冲突处理。 1.1 哈希函数 …

观成科技:某修改版哥斯拉Webshell流量分析

一、工具介绍 哥斯拉是一款webshell权限管理工具,由java语言开发。功能特点:全部类型的shell能绕过市面大部分的静态查杀、流量加密能绕过过市面绝大部分的流量Waf。哥斯拉Webshell还可以通过各种魔改,绕过流量检测设备,近期&…

【CSAPP】-attacklab实验

目录 实验目的与要求 实验原理与内容 实验设备与软件环境 实验过程与结果(可贴图) 实验总结 实验目的与要求 1. 强化机器级表示、汇编语言、调试器和逆向工程等方面基础知识,并结合栈帧工作原理实现简单的栈溢出攻击,掌握其基…

怎么快速给他人分享图片?扫描二维码看图的简单做法

现在通过二维码来查看图片是一种很常见的方法,通过二维码来查看图片不仅能够减少对手机存储空间的占用,而且获取图片变得更加方便快捷,只需要扫码就能够查看图片,有利于图片的展现。很多的场景中都有图片二维码的应用,…

注意!年龄越大,社交圈子越窄?其实这是老人的理性选择!数学家告诉你:何时该跳槽,何时该坚守!你必须知道的三个智慧:让你的人生更加精彩!

我们到底应该在什么情况下探索新事物,什么情况下专注于已有的东西呢?本质上来说,这个问题就是在询问,你究竟应该耗费精力去探索新的信息,还是专注从既有的信息中获取收获? 有人采访了临终的老人&#xff0c…

AI图生视频工具测试

环境: 即梦 pika LUMA 可灵 问题描述: AI图生视频工具测试下面是原图 解决方案: 1.即梦 效果 2.pika 生成效果 3.LUMA 生成效果还行 4.可灵 生成效果最好

Cookie的默认存储路径以及后端如何设置

问题场景 最近在写一个前后端分离的项目,需要跨域,前端开发同学遇到一个问题一直报错,本质上就是后端返回的cookie中的sessionID在前端发送http请求时无法被请求自动携带,每次htttpRequest都被后端识别为一个新的session&#xf…

Python 文件夹同步工具(sync_folders)

分享一个自己写的文件夹同步工具,可以实现文件夹备份/同步。 下载地址: https://download.csdn.net/download/frostlulu/89506856?spm1001.2014.3001.5501 使用方法: 下载后解压,会得到下面3个文件:sync_folders.…