ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Constraint I/O Delay(一)

2022-02-01 14:00:46  阅读:271  来源: 互联网

标签:delay set clock Constraint Delay input ports 时钟


Constraint I/O Delay

About Constraining I/O Delay

为了精确对外部时序进行建模,必需要给出input和output端口的时序信息。因为Vivado仅能给出FPGA内部的时序信息,所以工程师需要用以下命令具体指出FPGA外部的时序延迟信息。

• set_input_delay
• set_output_delay

Input Delay

set_input_delay命令指出数据输入端口相比较于时钟的延迟信息,输入延迟表示以下两者相位的不同:

  • 数据从外部芯片传输通过PCB板线路输入FPGA的输入引脚的时间

  • 参考时钟通过PCB板的时间

因此输入input delay可以是正也可以是负,这取决于数据和时钟的相位关系。一般情况下,由于数据是多根,尽管PCB工程师会做等长处理,但仍然存在传输的时间先后差距,即最大和最小到达FPGA端口的时间,用这个时间减去参考时钟的时间,即为最大或最小延迟,一般情况下我们不考虑时钟的最大最小延迟,因为时钟线一般是差分,且系统中仅会存在少量的时钟源信号(相比较于数据传输线)。

Using Input Delay Options

尽管-clock选项在SDC标准上是可选择的,但Vivado是必要的,因为参考时钟可能是design clockvirtual clock

输入延迟命令如下:

  • Min and Max Input Delay Command Options

  • Clock Fall Input Delay Command Option

  • Add Delay Input Delay Command Option

Min and Max Input Delay Command Options

-min-max选项指定如下的不同:

  • 最小延迟分析(hold/removal)

  • 最大延迟分析(setup/recovery)

如果两者都没有使用,那么输入的数值将会应用到max和min两者。

Clock Fall Input Delay Command Option

-clock_fall选项将会指出输入延迟约束应用到参考时钟的下降沿,如果没有操作这个选项,那么Vivado工具将会默认把延迟约束应用到参考时钟上升沿。

但是不要混淆-clock_fall-rise以及-fall-rise以及-fall用来约束数据的边沿而不是时钟边沿。

Add Delay Input Delay Command Option

-add_delay操作在以下条件使用:

  • max或min输入(input delay)约束存在

  • 你想在同一端口指定次max或min输入约束延迟

这个选项一般用于输入端口的参考时钟采样超过一个时钟沿,比如,DDR接口。你可以把input delay约束应用到输入或者双向端口,但不包括时钟输入端口,当然,也不能用于内部的pin。

Use of set_input_delay Command Options

下面的示例展示典型的set_input_delay命令的使用方法。

示例一

这个示例定义了一个相对于先前定义的sysClk时钟的输入延迟,用于最小和最大分析。(约束数值同时应用到最大和最小)

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

示例二

这个示例定义了一个相对于先前定义的virtual clock

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

示例三

这个示例定义了相关与sysClk的input delay,分别应用到最大分析和最小延迟分析。

> 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端口上定义一个相对于先前定义的virtual clock的输入和输出延迟。

这个示例定义了DINDOUT之间的约束:5 ns (10 ns - 4 ns - 1 ns)

> 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 clock的输入延迟约束数值

> 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时钟上升沿和下降沿驱动的约束,数据到内部触发器端口,flip-flop对时钟上升沿和下降沿都敏感。

公众号:AriesOpenFPGA
请添加图片描述

标签:delay,set,clock,Constraint,Delay,input,ports,时钟
来源: https://blog.csdn.net/qq_38902665/article/details/122763769

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有