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

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命令中实际上还有很多参数,但是在实际中其实用的甚少,因此在这里就没有给出描述,这样可以让初学者快速掌握基本使用,不至于绕晕。

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

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CWNULT

如果对您有帮助,请君随意打赏小

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值