前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【vivado约束学习二】 IO延时约束

【vivado约束学习二】 IO延时约束

作者头像
FPGA开源工作室
发布2019-10-29 18:09:47
2.2K0
发布2019-10-29 18:09:47
举报
文章被收录于专栏:FPGA开源工作室

【vivado约束学习二】 IO延时约束

1 I/O延迟约束介绍

要在设计中精确建模外部时序,必须为输入和输出端口提供时序信息。Xilinx Vivado集成设计环境(IDE)仅在FPGA边界内识别时序,因此必须使用以下命令指定超出这些边界的延迟值: 1,set_input_delay 2,set_output_delay

2 输入延迟(Input Delay)

set_input_delay命令指定输入端口上相对于设计接口处时钟边沿的输入路径延迟。 在考虑应用板时,输入延迟表示以下各项之间的相位差: A.数据从外部芯片通过电路板传播到FPGA的输入封装引脚。 B.相关的板上参考时钟 输入延迟值可以是正的或负的,这取决于设备接口处的时钟和数据相对相位。 虽然-clock选项在Synopsys设计约束(SDC)标准中是可选的,但它是Vivado IDE所必需的。相对时钟可以是设计时钟或虚拟时钟。 使用set_input_delay命令选项 例1:此示例定义了相对于先前定义的sysClk的输入延迟,用于最小和最大分析。

代码语言:javascript
复制
> create_clock -name sysClk -period 10 [get_ports CLK0] 
> set_input_delay -clock sysClk 2 [get_ports DIN]

例2:此示例定义相对于先前定义的虚拟时钟的输入延迟。

代码语言:javascript
复制
> create_clock -name clk_port_virt -period 10 
> set_input_delay -clock clk_port_virt 2 [get_ports DIN]

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

代码语言:javascript
复制
> 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]

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

代码语言:javascript
复制
> 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]

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

代码语言:javascript
复制
> 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

3 输出延迟(Output Delay) set_output_delay命令指定输出端口相对于设计接口处的时钟边沿的输出路径延迟。 在考虑开发板时,此延迟表示以下两者之间的相位差: A.数据从FPGA的输出封装引脚传播,通过电路板传输到另一个器件 B. 相对参考板时钟。 输出延迟值可以是正数或负数,具体取决于FPGA外部的时钟和数据相对相位。 使用set_output_delay命令选项: 例1:此示例定义了相对于先前定义的sysClk的输出延迟,用于最小和最大分析。

代码语言:javascript
复制
> create_clock -name sysClk -period 10 [get_ports CLK0]
> set_output_delay -clock sysClk 6 [get_ports DOUT]

例2:此示例定义相对于先前定义的虚拟时钟的输出延迟。

代码语言:javascript
复制
> create_clock -name clk_port_virt -period 10
> set_output_delay -clock clk_port_virt 6 [get_ports DOUT]

例3:此示例指定相对于DDR时钟的输出延迟值,其具有用于min(hold)和max(setup)分析的不同值。

代码语言:javascript
复制
> 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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA开源工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 I/O延迟约束介绍
  • 2 输入延迟(Input Delay)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档