首页 > 其他分享 >时序约束总结(2)net18

时序约束总结(2)net18

时间:2023-05-04 21:44:06浏览次数:39  
标签:总结 Tcycle 时序 delay net18 bskew input bit Data

课程中对rx_clk 和 rx_data进行时序约束,实际采用时钟是经过PLL相移的rx_clk_90时钟和rx_data rx_ctrl的约束

假设时钟Tskew的偏斜 = 2  ,数据的偏斜一般都很小,大概是数据周期的1/40,假设周期为8ns, 则数据偏斜为0.2ns    注意,这里是双边沿采样

之前章节的计算方法  : dMax = 2+skew/2 = 2.1 
Xilinx 官方计算方法: dMax = Tcycle/2 - dv_bfe = 4 – (2-0.1) =2.1
-------------------------------------------------------------------------
之前章节的计算方法  : dMin = 2 – skew/2 = 1.9
Xilinx 官方计算方法: dMin = dv_bre=2 – 0.1=1.9



这里查看top的输入数据

未约束时,set up 和 hold 都是无限大 

 设置input delay

 选择相对应的时钟,对应的数据,延迟时间,采样的边沿

 再对最小值进行约束

 由于是DDR,所以要对下降沿约束

 input 时序优化方法之indelay control

使用这个原语可以在 select io HDL 的 user guide 找到也可以在 language template 里找到

 

.IDELAY_VALUE(0), // Input delay tap setting (0-31), 通过给定不同的值改变延时时间,分辨率为 1/(32x2xFREF)us,当前200M时钟的分辨率是78.125ps

 

 1 IDELAYE2 #(
 2     .CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)               不使用动态配置
 3     .DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)                        延时源的输入端口选择
 4     .HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")       低功耗模式
 5     .IDELAY_TYPE("FIXED"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE                  FIXED模式
 6     .IDELAY_VALUE(0), // Input delay tap setting (0-31),                          给定延时值
 7     .PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE                        
 8     .REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
 9     .SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal                           对数据进行延时
10     )
11     IDELAYE2_inst_data (
12     .CNTVALUEOUT(), // 5-bit output: Counter value output                          不使用动态配置
13     .DATAOUT(rx_dat_t[i]), // 1-bit output: Delayed data output                       数据延时输出
14     .C(1'b0), // 1-bit input: Clock input                                     
15     .CE(1'b0), // 1-bit input: Active high enable increment/decrement input
16     .CINVCTRL(1'b0), // 1-bit input: Dynamic clock inversion input
17     .CNTVALUEIN(5'd0), // 5-bit input: Counter value input
18     .DATAIN(1'b0), // 1-bit input: Internal delay data input
19     .IDATAIN(rx_dat[i]), // 1-bit input: Data input from the I/O                       数据输入
20     .INC(1'b0), // 1-bit input: Increment / Decrement tap delay input
21     .LD(1'b0), // 1-bit input: Load IDELAY_VALUE input
22     .LDPIPEEN(1'b0), // 1-bit input: Enable PIPELINE register to load data input
23     .REGRST(1'b0) // 1-bit input: Active-high reset tap-delay input
24     );

此 IP 必须配合 IDELAYCTRL 使用, IDELAYCTRL 只需要引入一个 200M 时钟和复位即可,一般在顶层例化就行了  注意 REFCLK设定的值要和IDELAY里的值对应

1 IDELAYCTRL IDELAYCTRL_inst (
2  .RDY(RDY), // 1-bit output: Ready output
3  .REFCLK(sysclk), // 1-bit input: Reference clock input 200M
4  .RST(~locked) // 1-bit input: Active high reset input
5  );

 

 

output delay约束

建立时间余量计算
Data Required time = Tcycle + Tc_d 
Data Arrival time  = Tco+askew
Setup Slack = Data Required time - Data Arrival time
            = Tcycle + Tc_d – Tco – askew
            = Tc_d – Tco + (Tcycle - askew)
dMax = Tcycle - askew
保持时间余量计算 Data finish time = Tco + Tcycle - bskew Data Required finish time = Tcycle + Tc_d Hold Slack = Data finish time - Data Required finish time = Tco + Tcycle - bskew - (Tcycle + Tc_d) = Tco –Tc_d -(bskew) dMin = bskew

这里设置的 bskew 和 askew 和 input delay 是不一样的思想,input delay 是根据上游器件的参数决定的,而 output delay 是我们设置约束使得我们的时钟不要落到 skew 的区间内,这样我们可以通过调整 skew 的值使时钟在一个中心位置。

通过约束 askew 和 bskew 的值,综合工具会调整布线长度使得时钟落在 a/bskew 之间红色箭头指示的区间,如果落在了bskew 和 askew 范围内就会出现时序违例。我们设置 askew=bskew=1.5,dMax=8/2-1.5=2.5,dMin = 1.5。注意这里是ODDR输出

 

 



 

标签:总结,Tcycle,时序,delay,net18,bskew,input,bit,Data
From: https://www.cnblogs.com/tuzki9611/p/17372636.html

相关文章

  • 数学期中测试卷错题总结
    1.概念不清,涉及概念:如果一个数的立方等于a,那么这个数叫做a的立方根,用“”表示,读作“三次根号a”2.概念不清,涉及概念:    1)经过直线外的一点,有且只有一条直线与已知直线与已知直线平行    2)两直线平行,同位角相等    3)垂线段的长度,叫做两条直线的距离......
  • 每日总结· 5.4
    今日学习了matlab的使用随后进行了html学习/*表格样式*/table{width:90%;background:#ccc;margin:10pxauto;border-collapse:collapse;/*border-collapse:collapse合并内外边距(去除表格单元格默认的2个像素内外边距*/}th,td{height:......
  • 各种常用的默认端口号 总结
    端口号的范围是从1~65535。其中1~1024是被RFC3232规定好了的,被称作“众所周知的端口”(WellKnownPorts);从1025~65535的端口被称为动态端口(DynamicPorts),可用来建立与其它主机的会话,也可由用户自定义用途。详细版常见端口0端口|无效端口,通常用于分析操作系统1端口|传输......
  • Z-index优先级总结
    因为HTML元素显示在显示器上都是一个二维平面,只拥有x和y轴的属性,为了让元素显示有一些层级关系的效果,所以引入了z-index属性来表示三维立体空间的z轴方面,这样显示出来的界面就有了三维立体的上下关系的效果。z-index的属性值有三种可能:注释:所有主流浏览器都支持z-index属性......
  • 时序约束总结
    关于输入时钟的时序约束,如果输入的基准时钟没有送入PLL就直接给内部模块使用,那么需要进行时序约束,点击IMPLEMENTATION,完成后打开报告时序报告,关闭红色箭头所指的报告 进行时钟的约束 点击加号,添加需要约束的时钟,输入时钟的名称(可自定义),添加时钟源  I/OPort指top层......
  • odoo context上下文用法总结
    环境odoo-14.0.post20221212.tarcontext用法总结获取上下文>>>self.env.context#返回字典数据,等价于self._context{'lang':'en_US','tz':'Europe/Brussels'}>>>self._context{'lang':'en_US','......
  • odoo Web Controllers 学习总结
    环境odoo-14.0.post20221212.tarWebControllersControllers控制器需要提供可扩展性,就像Model,但不能使用相同的机制,因为先决条件(已加载模块的数据库)可能还不可用(例如,未创建数据库或未选择数据库)。因此,控制器提供了自己的与模型的扩展机制:通过继承Controller创建控制器。通过route(......
  • Nginx 面试题总结大全
    转载请注明出处:1介绍下nginx特点与常用模块2nginx特点详细3反向代理和正向代理4负载均衡策略有哪些5Nginx如何实现动静分离? 6Nginx常用命令有哪些?7Nginx进程模型8nginx是四层协议还是七层的 9nginx如何自定义负载均衡......
  • 【游戏设计随笔04】关于《桃源》的一些设计运营总结
    1:《桃源》有着非常明显的优势区间“美术”。用出众的美术风格为玩家制造记忆点,依旧是游戏获客的重要方式,尤其是对于那些缺乏用户积累的新IP、新团队来说。2:度过了初期的视觉冲击,就需要用玩法让玩家留下,《桃源》采用了一套简练的核心循环。仅从生产经营的资源循环来看,《桃源》有......
  • 最近公共祖先 算法总结
    现知LCA算法有倍增、Tarjan、树链剖分再LCA问题上各自的特点如下表倍增Tarjan树链剖分数组fa[u][i],depfa,vis,query,ansfa,dep,size_tree,heavy_child,top_chain思路深搜打表,跳跃查询深搜回溯,离线查询二重深搜打表,跳跃查询时间复杂度O((n+m)lo......