目录
前言
一、IO约束
二、延迟约束
前言
IO约束包括管脚约束和延迟约束。
一、IO约束
对管脚进行约束,对应的约束语句:
set_property -dict {PACKAGE_PIN AJ16 IOSTANDARD LVCMOS18} [get_ports "led[0]" ]
上面是单端的管脚,对于差分的信号如何处理,有的用IDDR进行解析数据,也有用IBGFDS的,IBGFDS是Xilinx FPGA中用于处理差分输入信号(Differential Input)的专用硬件原语(Primitive)。它的作用是将外部输入的差分信号(正端P
和负端N
)转换为单端逻辑信号,并确保信号的完整性。
使用差分信号时,在V6中我们使用IBUFDS
来处理输入的差分信号时,可以指定端接为TRUE。
我们必须要在xdc或I/O Pors界面中,手动指定,否则可能会出错。
当综合完成后,我们可以点击DRC,进行设计规则检查,这一步可以报出一些关键问题,比如时钟端口未分配在时钟引脚上等。
二、延迟约束
延迟约束用的是set_input_delay和set_output_delay,分别用于输入管脚和输出管脚,它的时钟源可以是时钟输入管脚也可以是虚拟时钟。需要注意的是,它们不是器延迟的作用。只是周期约束,约束的是时钟而不是输入信号。
可以看出:
T_inputdelay = Tco + TD
set_output_delay的用法和input的基本一样。
它们都是用来约束输入信号和输出信号的延迟关系,vivado在这个约束下,进行布局布线,不是对输入信号进行延迟,而是描述输入信号和时钟的关系,是两者而不是单一的。
如果要调整输入信号的延迟,只能使用IDELAY,在V6中,IDELAY模块有32个tap值,每个tap可延迟78ps,这样总共差不多是2.5ns。