vivado I/O延迟约束

2023-12-23 20:29:02

I/O延迟约束

关于限制I/O延迟

要在设计中准确地模拟外部计时上下文,必须提供计时信息用于输入和输出端口。因为AMD Vivado?集成设计环境(IDE)只能在FPGA的边界内识别时序,必须使用以下方法用于指定存在于这些边界之外的延迟值的命令:

? set_input_delay
? set_output_delay

输入延迟

set_input_delay命令指定输入端口上相对于时钟边缘的接口设计。

当考虑应用板时,输入延迟表示相位差

介于:

1.从外部芯片通过板传播到的输入封装引脚的数据FPGA,以及

2.相对基准板时钟。

因此,输入延迟值可以是正的或负的,这取决于时钟和数据设备接口处的相对相位。

使用输入延迟选项

尽管在Synopsys设计约束(SDC)标准中,clock选项是可选的,但它是Vivado IDE所要求的。相对时钟可以是设计时钟,也可以是虚拟时钟。

输入延迟命令选项包括:

?最小和最大输入延迟命令选项

?时钟下降输入延迟命令选项

?添加延迟输入延迟命令选项

最小和最大输入延迟命令选项

-min和-max选项为以下项指定不同的值:

?最小延迟分析(保持/移除)

?最大延迟分析(设置/恢复)

如果两者都不使用,则输入延迟值同时适用于最小值和最大值。

时钟下降输入延迟命令选项

-clock_fall选项指定输入延迟约束应用于定时路径由相对时钟的下降时钟边缘启动。如果没有此选项,Vivado IDE仅假定相对时钟的上升沿。不要将-clock_fall选项与-rise和-fall选项混淆。这些选项参考数据边缘而不是时钟边缘。

添加延迟输入延迟命令选项

在以下情况下,必须使用-add_delay选项:

?存在最大(或最小)输入延迟约束,以及

?您希望在同一端口上指定第二个最大(或最小)输入延迟约束。该选项通常用于相对于多于一个时钟边缘约束输入端口,例如DDR接口。

您可以仅将输入延迟约束应用于输入或双向端口,不包括时钟输入端口,这些端口将被自动忽略。不能将输入延迟约束应用于内部大头针set_input_delay命令选项的使用以下示例介绍了set_input_delay命令选项的典型用法。对于有关输入延迟约束方法的其他信息,请参阅超快中的此链接FPGA和SoC的设计方法指南(UG949)。

输入延迟示例一

此示例定义了相对于先前定义的最小和最大sysClk的输入延迟分析。

> create_clock -name sysClk -period 10 [get_ports CLK0]
> set_input_delay -clock sysClk 2 [get_ports DIN]

输入延迟示例二

该示例定义了相对于先前定义的虚拟时钟的输入延迟。

> create_clock -name clk_port_virt -period 10
> set_input_delay -clock clk_port_virt 2 [get_ports DIN]

输入延迟示例三

此示例定义了相对于的最小分析和最大分析的不同输入延迟值sysClk。

> create_clock -name sysClk -period 10 [get_ports CLK0]
> set_input_delay -clock sysClk -max 4 [get_ports DIN]
> set_input_delay -clock sysClk -min 1 [get_ports DIN]

输入延迟示例四

要约束I/O端口之间的纯组合路径,输入和输出延迟必须为相对于先前定义的虚拟时钟在I/O端口上定义。下面的例子在之间的组合路径上设置了一个5 ns(10 ns-4 ns-1 ns)的约束端口DIN和DOUT:

> create_clock -name sysClk -period 10
> set_input_delay -clock sysClk 4 [get_ports DIN]
> set_output_delay -clock sysClk 1 [get_ports DOUT]

有关约束组合路径的更多信息,请参阅组合延迟

使用“时间约束”向导。

输入延迟示例五

此示例指定相对于DDR时钟的输入延迟值。

> create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN]
> set_input_delay -clock clk_ddr -max 2.1 [get_ports DDR_IN]
> set_input_delay -clock clk_ddr -max 1.9 [get_ports DDR_IN] -clock_fall -
add_delay
> set_input_delay -clock clk_ddr -min 0.9 [get_ports DDR_IN]
> set_input_delay -clock clk_ddr -min 1.1 [get_ports DDR_IN] -clock_fall -
add_delay

此示例根据的上升沿和下降沿启动的数据创建约束设备外部的clk_ddr时钟到对敏感的内部触发器的数据输入上升和下降时钟边沿。

输入延迟示例六

此示例指定STARTUPE3内部引脚(UltraScale+设备)对从STARTUPE3到结构的路径进行计时。

> create_generated_clock -name clk_sck -source [get_pins -
hierarchical*axi_quad_spi_0/ext_spi_clk] [get_pins STARTUP/CCLK] -edges {3
5 7}
> set_input_delay -clock clk_sck -max 7 [get_pins STARTUP/DATA_IN[*]] -
clock_fall
> set_input_delay -clock clk_sck -min 1 [get_pins STARTUP/DATA_IN[*]] -
clock_fall

文章来源:https://blog.csdn.net/cckkppll/article/details/135165572
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。