I/O Delay 约束的主要目的同时钟约束一样,是告诉编译器,外部输入输出信号与参考
时钟之间的相位关系,便于综合器能够真实和准确的对 IO 接口的信号进行时序分析,同时
也有利于综合器的布局布线。
注意:I/O Delay 约束和 IDELAYE、ODELAYE 原语是完全不同的,前者是用于编译器进行时序分析
的,后者是对数据进行延时的(由于建立时间和保持时间不满足,导致在接收数据有错时,需要对数据进
行延迟,以满足建立时间和保持时间)。换言之,前者是时序分析手段,后者是电路调试手段。
"set_input_delay"命令是用于指定输入端口(PIN)的数据输入相对于设计中参考时钟边沿
的延迟。 输入延迟值以 ns 为指定单位,可以为正值,也可以为负值,具体取决于设备接口
处的时钟和数据的相对相位关系。
这里特别强调的是 FPGA 芯片的 PIN 到内部 IOB 是有 pin delay 的,但是 set_input_delay
指定的延迟是不包含 pin delay 的值。即 set_input_delay 所指的延迟是下图中
Tco+td_bd-Tc_d-tc_bd 的值。
说明:
上图为 IO 接口的时序分析模型,模型可分为 3 部分,分别是上游芯片,PCB 走线,下
游芯片(这里主要指 FPGA)。上图中的时序参数含义分别如下:
FPGA 的封装引脚 pin 到内部 IOB 的延迟
FPGA 内部数据通路上,IOB 到 FPGA 内部 D 触发器的路径延迟
FPGA 内部随路时钟通路上,IOB 到 FPGA 内部 D 触发 set_input_delay
语法:
set_input_delay [-clock <args>] [-reference_pin<args>] [-clock_fall] [-rise]
[-fall] [-max] [-min] [-add_delay] [-network_latency_included]
[-source_latency_included] [-quiet] [-verbose] <delay>
<objects>
相对时钟,默认使用上升沿,也可以使用-clock_fall 指定使用下降沿
指定延迟与出现在指定引脚或端口上的时钟的有效边沿有关,而不是
与时钟有关。
指定应用于指定端口上的上升转换的输入延迟。 默认是对上升和下
评论0