0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是output_delay?

lhl545545 来源:傅里叶的猫 作者:傅里叶的猫 2022-09-26 10:07 次阅读

  上一篇我们讲过set_input_delay:

set_input_delay如何约束?

什么是output_delay?

顾名思义,output_delay就是指输出端口的数据相对于参数时钟边沿的延时。

对于系统同步,FPGA和下游器件是同一个时钟源,output delay的设置方式如下图所示:

93d2bcd4-3bec-11ed-9e49-dac502259ad0.pngimage-20220922214836390 9429a968-3bec-11ed-9e49-dac502259ad0.pngimage-20220923191831151

对于我们常用的源同步场景,output delay的设置方式如下图所示:

9452bd80-3bec-11ed-9e49-dac502259ad0.png94960144-3bec-11ed-9e49-dac502259ad0.pngimage-20220923191055430

set_output_delay语法

set_output_delay[‑clock][‑reference_pin][‑clock_fall]
[‑rise][‑fall][‑max][‑min][‑add_delay][‑network_latency_included]
[‑source_latency_included][‑quiet][‑verbose]

Name Description
[-clock] Relative clock
[-reference_pin] Relative pin or port
[-clock_fall] Delay is relative to falling edge of clock
[-rise] Specifies rising delay
[-fall] Specifies falling delay
[-max] Specifies maximum delay
[-min] Specifies minimum delay
[-add_delay] Don't remove existing input delay
[-network_latency_included] Specifies network latency of clock already included
[-source_latency_included] Specifies source latency of clock already included
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
Delay value
List of ports

下面来详细说明一下:

-clock:input_delay一般是相对时钟而言的,而且默认是相对于上升沿,我们可以通过clock_fall参数来指定下降沿,这里的时钟可以是虚拟时钟;

-reference_pin:指定相对于某个pin上的时钟边沿,跟-clock的参数其实是一个意思,毕竟时钟也是通过pin输入进来的;

-clock_fall:指定相对于时钟下降沿

-rise:指定端口的上升转换的输入延迟

-fall:指定端口的下降沿的输入延迟

-max:最大延迟

-min:最小延迟,我们做input delay主要就是约束这两个参数

-add_delay:以增量的方式添加延迟,如果不加该参数,默认行为是替换现有的延时

-network_latency_included:表示参考时钟的网络延迟也包含在延迟中

-source_latency_included:跟上一个参数类似的含义,该参数表示时钟的源端延迟包含在延时中

-quiet:忽略指令的错误信息,即便指令错了也依然返回TCL_OK

-verbose:命令执行期间忽略消息数量的限制,就是说会返回该指令的所有的message

delay:延迟值

objects:端口列表

Vivado Timing Constraints Wizard

还是一样通过Vivado的Timing Constraints Wizard工具来进行约束会方便很多:

94b570ec-3bec-11ed-9e49-dac502259ad0.png

对应的约束如下:

set_output_delay-clock[get_clocks{clk}]-min-add_delay-1.0[get_ports{led[*]}]
set_output_delay-clock[get_clocks{clk}]-max-add_delay2.0[get_ports{led[*]}]

可以看出,对于源同步系统,output delay其实就是下游器件的建立时间和保持时间的要求。

Examples

1.输出数据比时钟延迟3ns的delay:

create_clock-nameclk-period10[get_portsclk_in]
set_output_delay-clockclk3[get_portsDOUT]

2.输入数据相对于时钟的下降沿有2ns的delay:

set_output_delay-clock_fall-clockclk2[get_portsDOUT]

3.设置延迟5ns,同时参数时钟的网络延迟也包含在内:

set_output_delay5.0-clockclk-network_latency_included[get_portsDOUT]

4.双沿时钟的约束,对上升沿和下降沿都需要进行约束

create_clock-nameclk_ddr-period6[get_portsDDR_CLK_OUT]
set_output_delay-clockclk_ddr-max2.1[get_portsDDR_OUT]
set_output_delay-clockclk_ddr-max1.9[get_portsDDR_OUT]-clock_fall-add_delay
set_output_delay-clockclk_ddr-min0.9[get_portsDDR_OUT]
set_output_delay-clockclk_ddr-min1.1[get_portsDDR_OUT]-clock_fall-add_delay

具体案例

比如某器件手册的输出时钟与数据的setup和hold要求如下图:

94d8139a-3bec-11ed-9e49-dac502259ad0.png

该时钟双沿采样,在时钟边沿到来后,结合output_delay的最大最小延迟的定义,可以知道:

最大延迟为Tsetup

最小延迟为-Thold

但需要注意的是,输出延迟的时钟位置,一般输出时钟都会经过一级BUFG,再作为数据的随路时钟输出,那我们就需要在输出的pad上先create_generate一个时钟,然后output delay是相对于该时钟进行的。

9521ffe6-3bec-11ed-9e49-dac502259ad0.pngimage-20220924171932035

因此output delay的约束如下:

crate_clock-nameclk_in-period10[get_portsclk_p]
create_generated_clock-name{tx_clk}-source[get_ports{clk_tx}]-multiply_by1-divide_by1{get_portsclk_p}-master_clock[get_clocks{clk_in}]-add_delay
set_output_delay-clock[get_clocksclk_tx]-min-0.8[get_portsDOUT]-add_delay
set_output_delay-clock[get_clocksclk_tx]-max1.0[get_portsDOUT]-add_delay
set_output_delay-clock[get_clocksclk_tx]-min-0.8[get_portsDOUT]-clock_fall-add_delay
set_output_delay-clock[get_clocksclk_tx]-max1.0[get_portsDOUT]-clock_fall-add_delay

因此,只要记住:

min_delay就是下游器件的 -hold time

max_delay是下游器件的setup time

如果是双沿的话,就是半个时钟周期,而且还需要对时钟的下降沿进行约束

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21303

    浏览量

    593110
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87587
  • 时钟
    +关注

    关注

    10

    文章

    1479

    浏览量

    130304
  • Output
    +关注

    关注

    0

    文章

    31

    浏览量

    10412

原文标题:set_output_delay如何约束?

文章出处:【微信号:傅里叶的猫,微信公众号:傅里叶的猫】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    对Input DelayOutput Delay的反思 - 1

    电路分析
    皮特派
    发布于 :2022年12月07日 11:45:03

    对Input DelayOutput Delay的反思 - 2

    电路分析
    皮特派
    发布于 :2022年12月07日 11:45:50

    FPGA静态时序分析——IO口时序(Input Delay /output Delay

    FPGA静态时序分析——IO口时序(Input Delay /output Delay)1.1概述  在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能
    发表于 04-25 15:42

    IC中inout port需要同时设置input_delayoutput_delay吗?

    请教:IC中inout port 需要同时设置input_delayoutput_delay吗?
    发表于 06-25 06:37

    allegro如何走蛇行线(delay tune)

    蛇行线(delay tune)1. 前言蛇行线可在Allegro 中藉由elong_by_pick 自动完成.若想以半自动方式则可用delay tune 命令.2. 說明在15.1 中须下载新版ISR.Options 选项?
    发表于 09-06 11:30 0次下载

    How Delay Lines Work

    new-generation all-silicon delay lines. Both EconOscillators and delay lines use a compensated voltage-controlled del
    发表于 04-20 15:11 2155次阅读
    How <b class='flag-5'>Delay</b> Lines Work

    芯片延迟Delay测试的学习课件PDF文件免费下载

    芯片延迟Delay测试的学习课件PDF文件免费下载包括了:• 为什么需要Delay测试 • Delay产生原因和缺陷机制 • Delay故障建模 •
    发表于 12-01 08:00 4次下载
    芯片延迟<b class='flag-5'>Delay</b>测试的学习课件PDF文件免费下载

    AD9514: 1.6 GHz Clock Distribution IC, Dividers, Delay Adjust, Three Output Data Sheet

    AD9514: 1.6 GHz Clock Distribution IC, Dividers, Delay Adjust, Three Output Data Sheet
    发表于 01-28 09:58 8次下载
    AD9514: 1.6 GHz Clock Distribution IC, Dividers, <b class='flag-5'>Delay</b> Adjust, Three <b class='flag-5'>Output</b> Data Sheet

    LTC6994: Delay

    LTC6994: Delay
    发表于 02-03 16:39 3次下载
    LTC6994: <b class='flag-5'>Delay</b>

    stm32 delay文件总结

    stm32 delay文件总结delay.h#ifndef __DELAY_H#define __DELAY_H #include "sys.h" void
    发表于 12-24 19:36 6次下载
    stm32 <b class='flag-5'>delay</b>文件总结

    FPGA基础资源之IOB的应用

    FPGA基础资源之IOB的应用 1.应用背景 在我们做时序约束时,有时候需要对FPGA驱动的外围器件进行input_delay/output_delay进行约束。不知道,大家有没有被以下这种
    的头像 发表于 12-25 16:30 3199次阅读

    innovus的incredible delay是什么?

    Incr Delay是由于SI信号完整性(比如cross talk、电磁等)造成的增量延时,也称为噪声延迟(incr delay)。
    的头像 发表于 04-03 10:54 1666次阅读

    Net Delay在整个路径延时的占比是什么情况呢?

    绕线延时(Net Delay)是怎么计算出来的呢?Net Delay在整个路径延时(Path Delay)的占比又是什么情况呢?针对关键路径,工具会如何降低Net Delay呢?下面我
    的头像 发表于 06-27 14:07 1034次阅读
    Net <b class='flag-5'>Delay</b>在整个路径延时的占比是什么情况呢?

    set_output_delay的本质是什么?浅谈set_ouput_delay时序

    set_output_delay是对模块output信号在模块外部延迟的约束,本质上EDA工具会根据约束调整内部器件(UFF0)的类型,摆放位置以及组合逻辑(C1)以满足约束要求,即EDA工具保证模块DUA的UFF0的Tclk2q+Tc1延时能够满足约束要求。
    的头像 发表于 08-12 09:48 1038次阅读
    set_<b class='flag-5'>output_delay</b>的本质是什么?浅谈set_ouput_<b class='flag-5'>delay</b>时序

    怎样查看input/output delay是否生效

    通过get_port命令查看接口。 get_ports * 以LVDS的输入输出为例 怎样去查看outputdelay   set_output_delay -clock
    的头像 发表于 02-27 08:38 194次阅读
    怎样查看input/<b class='flag-5'>output</b> <b class='flag-5'>delay</b>是否生效