取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

运用Language Template来创建set_input_delay/set_output_delay约束

yolanda
Moderator
Moderator
2 0 107

BY Vivian Yin

注意:本论坛博客所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途 


时序约束中的set_input_delay/set_output_delay约束一直是一个难点,无论是概念、约束值的计算,还是最终的路径分析,每一次都要费一番脑子。

Vivado为方便用户创建输入输出接口的约束,整理出了一套非常实用的Input Delay/Output Delay Constraints Language Templates。只需根据接口信号的特征匹配到对应的template分类,就可以轻松套用模板中的公式创建约束。

本文将通过几个例子来展示,如何精确找到匹配的template。

1. Input Delay/Output Delay Constraints Language Template

首先来介绍下Vivadolanguage Template。在Vivado GUI界面下,Tools菜单里即可打开Language Template。下图红框部分即Input Delay/Output Delay Constraints部分的模板

1.png

 

2. 我们看到模板的分类目录中有几个关键字,理解了这几个概念才能正确分类精准匹配。

a. System Synchronous(系统同步)和Source Synchronous(源同步)

System Synchronous:两个device之间进行通信时,使用一个共用时钟,用于数据发送和接收。

2.png

Source Synchronous:两个device间进行通信时,发送端生成一个伴随发送数据的时钟信号。接收端利用该随路时钟进行数据接收。

3.png

b. SDR和DDR

SDR: single data rate。一个时钟周期只传输一个data

4.png

DDR: double data rate。一个时钟周期传输两个data

5.pngc. Center-Aligned和Edge-Aligned

Center-Aligned中心对齐,指时钟的采样沿(capture edge)处于对应数据有效窗口的中心位置附近。

6.png

Edge-Aligned边沿对齐,指时钟的采样沿处于对应数据的起始或结束位置附近

7.png

3. Template的内容

我们以”Input Delay Constraints -> Source Synchronous -> Center-Aligned -> SDR, Rising Edge” 模板为例,看看模板的具体内容。

8.png

每个模板开头都有个波形图,描述这个模板对应的接口dataclock之间的时序关系。后面我们会讲,这个时序图将是精准匹配模板的关键。

波形图里标示的参数dv_bre, dv_are,是用来代入约束模板里面的公式计算-max-min的约束值。因此匹配了正确的模板,确定了波形图里的参数值,就可以套用公式完成约束的创建。

 

4. 匹配模板的法宝 —— 波形图

那么问题来了,去哪里找接口信号的波形图?模板里用来计算的参数如何确定呢?

答案是对端器件的Datasheet。

Input delay和output delay约束提供给Vivado工具的信息,是FPGA外部电路上的时序数据。这部分数据跟FPGA内部电路上的时序信息(这部分工具已知)相结合才能完整地分析整条路径是否满足终点器件的建立时间和保持时间。

Input delay约束的创建依赖FPGA上游器件的DatasheetOutput delay约束的创建依赖下游器件的Datasheet

我们以LTC2000A-11 DAC器件的Datasheet为例:https://www.analog.com/media/en/technical-documentation/data-sheets/2000afb.pdf

我们需要的波形图通常在DatasheetTiming Diagram部分,而用来计算的参数通常在Timing Characteristics部分。

9.png

对于前面讲解的模板的三种分类目录,System Synchronous/Source Synchronous以及SDR/DDR的区分相对容易,而Center-Aligned和Edge-Aligned如何得知呢?这就依赖于对端器件的Datasheet中的Timing波形图。

我们来看几个例子。

1. 这是一个Source SynchronousDDR接口,需要约束Dx数据的input delay,时钟为DCO。下图为上游器件Datasheet中的Timing Diagram,其中tDATA的范围是1.3ns~1.9ns

10.png

从图中可以看出时钟采样沿大致在Data的中心,因此是Center-Aligned。那么这个数据接口符合Source Synchronous --> Center-Aligned --> DDR模板。

11.png

这个模板需要dv_bre4个参数,如何确定呢?我们只需将Datasheet里的原波形图做一点细化改动,就可以与模板里的波形图完美匹配了。

18.png

tDATA之所以是一个范围值,就是因为data是有“有效数据”(data valid)和“无效数据”(阴影部分)窗口的。把原波形图画出阴影部分就一目了然了。

因此,

dv_bfe = dv_bre = tDATA_MIN = 1.3ns

dv_afe = dv_are = tDATA_MAX = (½ Period – 1.9)ns

 

2. 从下面这个Datasheet里的波形图可以看出,这是一个Source Synchronous Edge-Aligned DDR接口,需要创建DQinput delay约束,时钟是DQS

13.jpg

这个例子比较直观,直接匹配Source Synchronous ->Edge-Aligned -> DDR模板

14.png

其中

skew_bre = skew_bfe = ½ Period - tQH

skew_are = skew_afe = tDQSQ

 

3. 这个例子也是Source Synchronous,是从前面的LTC2000A-11 DAC器件的Datasheet中提取出来的,需要创建DAP/Noutput delay约束,随路时钟是DCKI。其中t11参数为0.057nst12参数为-0.017ns

15.png

16.png

Output delay模板的分类不同于Input delay,分为Skew BasedSetup/Hold Based。仔细分析模板内容不难看出,两者之间的差别是看对端器件Datasheet里提供的数据与时钟之间关系的参数值是Skew形式还是Setup/Hold形式.

19.png

本例中t11t12Setup/Hold值,因此匹配Source Synchronous -> Setup/Hold Based -> DDR模板。

17.png

其中

tsu_r = tsu_f = t11

thd_r = thd_f = t12

 

希望通过这三个例子,能够帮助大家找到使用模板创建输入输出接口时序约束的窍门。

也欢迎大家把手中的“实例”贴上来,提供更多的学习素材来讨论。