FPGA时钟资源与设计方法——IO延迟约束(Vivado)

目录

  • 1 I/O延迟约束简介
  • 2 IO约束指令
  • 3 输入延迟(Input Delay)
  • 4 输出延迟(Output Delay)

1 I/O延迟约束简介

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

2 IO约束指令

IO约束指令,如下所示只有两条(没有给更多):

  1. set_input_delay:输入延迟约束;
  2. set_output_delay:输出延迟约束。

3 输入延迟(Input Delay)

set_input_delay命令指定输入端口上相对于设计接口处时钟边沿的输入路径延迟,在考虑板级延迟时,输入延迟表示以下各项之间的相位差:
A.数据从外部芯片通过电路板传播到FPGA的输入封装引脚。
B.相关的板上参考时钟。
输入延迟值可以是正的或是负的,这取决于FPGA外部接口处的时钟和数据相对相位。
输入延迟约束的指令为:

set_input_delay -clock clock_name -max 4 [get_ports D_in]
set_input_delay -clock clock_name -min 1 [get_ports  D_in]

以上指令表示,相对于时钟名称为“clock_name”的时钟最大最小输入延迟分别为4ns、1ns,分析的端口为 D_in。参考的时钟可以是实际时钟,也可以是虚拟时钟。
-min和-max:-min设定的值用于最小延迟分析(保持时间、移除时间);-max设定的值用于最大延迟分析(建立时间、恢复时间);如果约束命令中没有使用这两个选项,输入延迟值会同时应用于min和max分析;

4 输出延迟(Output Delay)

set_output_delay命令指定输出端口相对于设计接口处的时钟边沿的输出路径延迟,在考虑板级延迟时,此延迟表示以下两者之间的相位差:
A.数据从FPGA的输出封装引脚传播,通过电路板传输到另一个器件。
B.相关参考板时钟。
输出延迟值可以是正数或负数,具体取决于FPGA外部的时钟和数据相对相位。
输出延迟约束的指令为:

set_output_delay -clock clock_name -max 2.1 [get_ports  D_in]
set_output_delay -clock clock_name -min 1.0 [get_ports  D_in]

以上指令表示,相对于时钟名称为“clock_name”的时钟最大最小输出延迟分别为2.1ns、1.0ns,分析的端口为 D_in。参考的时钟可以是实际时钟,也可以是虚拟时钟。
-min和-max:-min设定的值用于最小延迟分析(保持时间、移除时间);-max设定的值用于最大延迟分析(建立时间、恢复时间);如果约束命令中没有使用这两个选项,输入延迟值会同时应用于min和max;

在学习的过程中,set_input_delay/set_output_delay命令中实际上还有很多参数,但是在实际中其实用的甚少,因此在这里就没有给出描述,这样可以让初学者快速掌握基本使用,不至于绕晕。

作为曾经的初学者,在开发的过程中对于时钟资源的使用,以前也犯过一个错误,这里总结一些精练笔记,减少大家在开发的过程中少出错;如果对您有帮助,请不吝赐赞和关注,我会不断分享。

你可能感兴趣的:(fpga开发)