FPGA IO延迟的约束与脚本

FPGA IO延迟的约束与脚本

FPGA的时序分析,关键的部分有两点:1是对时钟的约束方法,时钟对数字电路设计很重要,约束情况多而复杂;2是 I/O约束,IO的约束相对简单,主要包括管脚电气约束与延迟约束。本文主要讲述的是IO约束相关的脚本与用法。IO延时约束用于定义输入信号和输出信号之间的时序关系。延时约束在高速数字电路设计自动化(EDA)中起着至关重要的作用,它可以确保设计满足时序要求,提高系统性能和可靠性。本文对IO延时约束的概念、类型、设置方法进行了深入探讨,以帮助读者更好地理解和应用IO延时约束,从而优化设计。

IO管脚的电气约束

IO管脚电气约束比较简单, 管脚约束就是指管脚分配,需要指定管脚的PACKAGE_PIN和IOSTANDARD两个属性的值,前者指定了管脚的位置,后者指定了管脚对应的电平标准。

在vivado中,使用如下方式在xdc中对管脚进行约束。

set_property -dict {PACKAGE_PIN AJ16 IOSTANDARD LVCMOS18} [get_ports "data_valid" ]

Vivado对整个工程的时序进行分析时,只能分析内部的时序信息,对于外部的时序信息Vivado无法提供,在设计中要精确建模外部时序信息,必须为输入和输出端口提供输入输出延迟信息,而I/O延迟约束就是告知Vivado集成设计环境(IDE)FPGA管脚外部的输入输出延迟信息。IO约束指令只有两条:

set_input_delay:输入延迟约束;

set_output_delay:输出延迟约束

IO输入输出延迟约束

set_input_delay命令设定输入端口上相对于设计接口时钟边沿的输入路径延迟。输入延迟既指数据从外部芯片经过板级传输到FPGA输入管脚间的相位差,也指相对参考板级时钟间的相位差。输入延迟值可以是正的,也可以是负的,由时钟和数据在FPGA接口处的相对相位决定。约束时的相对时钟可以是一个设计时钟,也可以是一个虚拟时钟。

输入延迟命令的选项包括:

-min和-max:-min设定的值用于最小延迟分析(保持时间、移除时间);-max设定的值用于最大延迟分析(建立时间、恢复时间)。如果约束命令中没有使用这两个选项,输入延迟值会同时应用于min和max。

-clock_fall:用于指定由相对时钟的下降沿启动的时序路径上的输入延迟约束。如果没有这个选项,Vivado只假定使用相对时钟的上升沿。

-add_delay:该选项通常用于约束与多个时钟沿相关的输入端口(比如DDR接口),而且必须已经存在一个最大或最小输入延迟约束,设计者使用该命令为同一端口设置其它相对时钟沿的最大或最小输入延迟约束。

输入延迟约束只能应用于输入端口或双向端口(不包括时钟输入端口),不能用于设计内部的管脚。下面给出几个使用输入延迟约束的典型例子。

create_clock -name sysClk -period 10 [get_ports CLK0]

set_input_delay -clock sysClk 2 [get_ports DIN]

以上命令定义了一个主时钟sysClk作为输入延迟的相对时钟,设定的值同时作为最小值(min)分析和最大值(max)分析。

create_clock -name clk_port_virt -period 10

set_input_delay -clock clk_port_virt 2 [get_ports DIN]

该命令约束目的与上例相同,只是相对时钟换为一个虚拟时钟。使用虚拟时钟的好处是可以在不改变内部设计时钟的情况下,设定任意的抖动和延迟。

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]

该命令最小值分析和最大值分析采用不同的输入延迟值。

create_clock -name sysClk -period 10 [get_ports CLK0]

set_input_delay -clock sysClk 4 [get_ports DIN]

set_output_delay -clock sysClk 1 [get_ports DOUT]

如果两个I/O端口之间仅有组合逻辑路径,没有任何时序单元,必须相对于虚拟时钟为I/O端口定义输入与输出延迟。该命令中DIN和DOUT之间的组合逻辑路径约束为 5ns(10-1-4)。但是就很少会有这种情形,IO端口之间仅有组合逻辑,为避免走线延时过长,需要对IO进行输入输出延迟约束。

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

这里相对时钟为DDR的时钟,最小值分析和最大值分析采用不同的输入延迟值。约束的一端是器件外部时钟的上升沿和下降沿启动的数据,另一端是器件内部同时对上升沿和下降沿敏感的触发器的输入数据。

set_output_delay命令设定输出端口上相对于设计接口时钟边沿的输出路径延迟。输出延迟既指数据从FPGA的输出管脚通过板级传输到另一个器件间的相位差,也指相对参考板级时钟间的相位差。输出延迟值同样也可以是正的或负的,由时钟和数据在FPGA器件外的相对相位决定。输出延迟命令的选项基本与输入延迟约束相同, 下面给出几个使用输出延迟约束的典型命令示例。

create_clock -name sysClk -period 10 [get_ports CLK0]

set_output_delay -clock sysClk 6 [get_ports DOUT]

create_clock -name clk_port_virt -period 10

set_output_delay -clock clk_port_virt 6 [get_ports DOUT]

定义一个主时钟sysClk/虚拟时钟virt作为输出延迟的相对时钟,设定的值同时作为最小值(min)分析和最大值(max)分析。

create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN]

set_output_delay -clock clk_ddr -max 2.1 [get_ports DDR_OUT]

set_output_delay -clock clk_ddr -max 1.9 [get_ports DDR_OUT] -clock_fall -add_delay

set_output_delay -clock clk_ddr -min 0.9 [get_ports DDR_OUT]

set_output_delay -clock clk_ddr -min 1.1 [get_ports DDR_OUT] -clock_fall -add_delay

这里相对时钟为DDR的时钟,最小值分析和最大值分析采用不同的输出延迟值。约束的一端是器件外部时钟的上升沿和下降沿启动的数据,另一端是器件内部同时对上升沿和下降沿敏感的触发器的输出数据。

作者水平有限, 相关IO约束查阅了网络上的部分资源与自己的工程实际经验。

如果想要对静态时序分析与时序更加了解,可以查阅这2篇文章FPGA静态时序分析------IO口时序(Input Delay /output Delay) - 屋檐下的龙卷风 - 博客园 (cnblogs.com)

FPGA时序分析与约束_STATEABC的博客-CSDN博客

Vivado FPGA开发中的XDC约束入门_vivado xdc-CSDN博客

相关推荐
zjxtxdy1 天前
STM32开发
stm32·单片机·fpga开发
博览鸿蒙1 天前
从入门到工程师路径,快速建立FPGA认知
fpga开发
LCMICRO-133108477461 天前
长芯微LD7940完全P2P替代AD7940,是一款14位、逐次逼近型模数转换器(ADC)
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·模数转换器adc
lf2824814311 天前
06 AD9361 LVDS接口实现和仿真
fpga开发
逻辑诗篇2 天前
FMC122高速数据采集卡:雷达与SDR领域的高性能解决方案
fpga开发
寒秋花开曾相惜2 天前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
何如呢2 天前
tx_addheader(加前导)
fpga开发
北京青翼科技2 天前
青翼科技基于XCVU13P FPGA的4路FMC接口高性能信号处理平台丨嵌入式智能平台 · 通用嵌入式平台丨FPGA信号处理板
fpga开发·信号处理·信号处理板·图形处理板卡·pcie数据处理板·fpga板卡
HIZYUAN3 天前
FPGA/CPLD漫谈:2K LUT的功能定位与典型方案(一)
stm32·单片机·嵌入式硬件·fpga开发·国产mcu+fpga
FPGA_Linuxer3 天前
FPGA开发板 KU5P开发板 图像处理,硬件加速 PCIE3.0 100G光口
fpga开发