(1)时序约束,用于规范设计的时序行为,知足哀求的时序条件,辅导综合和布局布线阶段的优化算法。
(2)区域和位置约束,指定I/O引脚位置,辅导实现工具在芯片特定的物理区域进行布局布线。
(3)其他约束,指目标芯片型号、电气特性等约束属性。

Timing Analyzer是ISE中集成的静态时序剖析(Static Timing Analysis,STA)工具,利用这个工具可以获取映射或布局布线后的时序剖析报告,从而对设计的性能做出评估。时序约束分为3种:周期约束(为触发器到触发器组合逻辑路径供应约束)、偏移约束(为输入PAD到寄存器、寄存器到输出PAD的组合逻辑路径供应约束),静态路径约束(为输入PAD到输出PAD的组合逻辑路径供应约束)。常用的时序约束方法有直接编辑UCF文件、从Constraints Editor输入、在HDL代码或者事理图编辑器中附加Attribute、编辑Xilinx Constraints File等。
1.时钟周期约束
系统最高的事情频率,即最小的时钟周期为Tclk=Tcko+Tlogic+Tsetup+Tclk_skew,个中Tclk_skew=Tckd2-Tckd1。Tcko是时钟输出韶光,Tlogic是同步元件之间的组合逻辑延时,Tsetup是同步元件的建立韶光,Tclk_skew是时钟旗子暗记之间的偏移。有两种方法对时钟网络附加时钟周期约束,分别为Simple Method和Preferred Method。
1.Simple Method方法,语法构造如下。
例如,NET clka PERIOD=50 ns HIGH 20 ns设置时钟clka的周期为50 ns,高电平持续韶光为20 ns,该约束将被附加到clka所驱动的所有同步单元上。
2.Preferred Method方法,语法构造如下。
例如,首先在时钟网络clk上附加TNM_NET约束,把clk驱动的所有同步元件定义成一个分组,命名为sys_clk。
定义派生时钟的语法如下。
个中TSidentifier_2是要定义的派生时钟,TSidentifier_1是已经定义的时钟,factor为两个时钟之间大的倍数关系,为浮点数。phase_value指出两个时钟之间的相位关系,是一个浮点数。
例如,定义时钟clk0 TIMESPEC“TSclk0”=PERIOD\"大众clk0\"大众50 ns
定义派生时钟clk80的相位与主时钟相差180°。
2.偏移约束
偏移约束(Offset Constraint)包括OFFSET_IN_BEFORE、OFFSET_IN_AFTER、OFFSET_OUT_BEFORE与OFFSET_OUT_AFTER四种,规定了外部时钟和数据输入/输出引脚之间的时序关系,只用于PAD相连的旗子暗记,不用于内部旗子暗记。通过设置偏移约束,见告综合工具输入旗子暗记到达的韶光和输出旗子暗记须要保持稳定的韶光。偏移约束语法如下。
偏移约束用来定义一个外部时钟引脚和数据输入输出引脚之间的时序关系,这种时序关系也被称为器件上的Pad-to-Setup或Clock-to-Out路径。这些约束对与外部元器件相连的接口十分主要。
Pad-to-Setup:也被称为OFFSET IN BEFORE约束,用来担保外部输入时钟和外部输入数据的时序知足FPG内部触发器的建立韶光哀求。如图3-26所示,TIN_BEFORE约束使得 FPGA 在进行 DATA_IN 和 CLK_SYS 布线时努力担保 DATA_IN 相对付CLK_SYS的延时小于TIN_BEFORE。
图3-26 输入偏移约束时序参考图
Clock-to-Out:也被称为OFFSET OUT AFTER约束,用来知足下贱器件建立保持(setup/hold)哀求或输出时钟和数据之间时序哀求,如图3-27所示。
图3-27 输出偏移约束时序参考图
OFFSET IN BEFORE或OFFSET OUT AFTER约束许可用户指定外部输入或输出引脚相对付时钟边沿到内部数据的延时。
OFFSET IN约束每每和VALID约束一起利用。OFFSET IN约束在建立韶光剖析中作为建立韶光哀求利用,而VALID约束在保持韶光约束中作为保持韶光哀求利用。VALID约束指定了输入数据的持续韶光。带有VALID约束的输入偏移约束如图3-28所示。
图3-28 带有VALID约束的输入偏移约束
UCF常用语句总结
(1)OFFSET根据芯片外围电路的时序特性约束了内部延时。
① OFFSET_IN约束输入旗子暗记
② OFFSET_OUT 约束输出旗子暗记
③ 例
解释:第二个例子好理解,第一个例子没有指明工具,表示所有受到“i_ref_clk”约束的旗子暗记都被施加了该约束。
(2)TNM是Timing Name的缩写,是一种grouping约束,用于把多少旗子暗记组合成一个特定的组以施加相同的约束。例如:
采取该方法后一些列旗子暗记都被列入名为“dbg_out”的组合,然后可以统一施加约束。如
(3)TIMESPEC用于对时钟周期和路径等进行约束,例如:
(4)TIG是Timing IGnore的缩写。表示忽略该工具上的时序约束。例如:
表示对付RESET旗子暗记,时序约束TS_fast和TS_even_faster无效。
案例:500MSPS的A/D转换器低压差分传送技能是基于低压差分旗子暗记(Low Voltage Differential Signaling,LVDS)的传送技能,从一个电路板系统内的高速旗子暗记传送到不同电路系统之间的快速数据传送都可以用低压差分传送技能来实现,其运用正变得越来越主要。低压差分旗子暗记相对付单真个传送具有较高的噪声抑制功能,其较低的电压摆幅许可差分对线具有较高的数据传输速率、较小的花费功率以及能够产生更低的电磁辐射。
LVDS:低电压差分旗子暗记,如图3-29所示。
图3-29 LVDS示意图
LVDS传输支持速率一样平常在155Mb/s(大约为77MHz)以上。
LVDS是一种低摆幅的差分旗子暗记技能,它使得旗子暗记能在差分PCB线对或平衡电缆上以几百Mb/s的速率传输,其低压幅和低电流驱动输出实现了低噪声和低功耗。
ADC08D500是National Semiconductor公司的一款高速A/D采集芯片,为高速、低功耗、双路(I路和Q路)8位、500MSPS的A/D转换器,芯片引脚电平为LVDS形式。
ADC的SDR和DDR时序图见图3-30和图3-31。
图3-30 ADC的SDR时序图
图3-31 ADC的DDR时序图
设计中我们采取DDR模式。
DDR模式下建立韶光和保持韶光均为2 ns,见图3-32。
图3-32 DDR模式下建立韶光和保持韶光
Xilinx的Vertex系列FPGA均在IO端口集成了LVDS收发器。要采取LVDS差分标准传输旗子暗记,须要对FPGA的IO端口进行配置,从而使综合工具在FPGA布局布线流程中,将INDS驱动器结合到IO端口上。
根据3.10.4节LVDS电平处理办法将输入差分时钟和差分数据转为单端形式的,代码如下:
仿真波形图见图3-33。
图3-33 ADC上沿和下沿均采样数据
时钟约束界面见图3-34,我们为clk_p添加约束,由于时钟为125 MHz,周期韶光设为8 ns,占空比设为50%。
图3-34 时钟约束界面
Input约束界面见图3-35和图3-36。
图3-35 Input约束界面1
图3-36 Input约束界面2
在图3-35中,接口类型选用源同步(Source Synchronous),Date rate选为双沿Double Data Rate(DDR)、clock edge为center aligned。
最终生成的文本格式的约束如下:
写完这些约束,读者要养成查看时序报告的习气。时序报告会见告这些时序知足或者不知足。在实际中,如果ISE的时序报告显示时序约束能够知足,而FPGA程序在实际运行时却存在时序问题,则解释在UCF中指定的时延关系并禁绝确!
初学者常犯的一个缺点是,时序报告显示OFFSET IN约束无法知足,则去修正OFFSET IN的时延值,使得布线工具不再报时序缺点;另一种缺点是,以为把这个时延值写得越小,FPGA程序的时钟频率就能跑得越快。
因此,当清楚地知道OFFSET约束语句中这个时延值代表的真正含义时,就不会再做这两种无用功了。
项目的时序报告结果见图3-37。
图3-37 布局布线后时序剖析报告结果
上面的例子中,约束了clk_p时钟旗子暗记的周期,如果不见告ISE综合布线工具关于时钟周期的信息,OFFSET约束会被忽略。
很自然的,布线工具须要知道时钟旗子暗记的周期,这样它才能努力使得数据旗子暗记、时钟旗子暗记到达同步单元的相对延迟+FPGA外部本来的延时,不会超过一个时钟周期。
此外,解释一下:
High 50%,High表明了ISE在打算时延值时,因此时钟上升沿作为韶光0点,50%也是用来打算时延时的(双沿时用得着)。并不是说要去约束FPGA内部这个时钟要达到50%的占空比,约束第一个进入的时钟是上升沿,并不是这个意思。
因此,定义了韶光0点,也就存在before和after之说了,即时延的正值、负值。
如果OFFSET约束时序不知足怎么办?办理方法有两种,利用DCM的移相功能或利用IDELAY。
Xilinx自带的IP Core,如RocketIO/MIG等,都会用上IODELAY。对付一样平常用户自己写的代码,最常用的该当是采取DCM。相位的设置可以根据布线结果给出的时序余量来确定。相位值如果采取Fixed,无论怎么调可能都不一定能知足哀求,毕竟修正了代码,每一次布线的结果不一定只改动了DCM部分。
DCM有动态调度相位的功能,可以派上用场。
DCM动态调相用到了PSEN、PSINCDEC、PSCLK、PSDONE这几个旗子暗记。
这些端口默认是灰色的,要选中VARIABLE_POSITIVE/CENTER等之后才会涌现。
掌握很大略,出一个PSEN单周期旗子暗记,如果PSINCDEC为低,则相位增加1个,反之降落一个相位。DCM的设置如图3-38所示。
图3-38 DCM设置图