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

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

3天内不再提示

Vivado中如何做set_input_delay约束

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-19 19:32 次阅读

前言
在STA中,要分析上游器件和FPGA之间的时序关系就得指定input delay。

流程
什么是input delay:约定上游芯片输出及时钟之间的关系。约束的目的就是看适配后的时序关系是什么样的。

以下以源同步接口举例,上游芯片发送data和随路时钟到下游FPGA芯片端口进行接收,使用解串原语对数据进行解串。

Vivado中如何做set_input_delay约束

这里使用的DCLK为:4.464ns。时钟与数据关系是DDR中心对齐。

Vivado中如何做set_input_delay约束

40M下的建立保持时间如下:Tsu=0.72ns,Tho = 0.82ns。

Vivado中如何做set_input_delay约束

上vivado中语言模板中找模板。把Tsu、Tho抄进去对应dv_bre、dv_are、dv_bfe、dv_afe。dv_bre指的是时钟沿前稳定的时间,这个时间可以用示波器测出来,或者看datasheet上的建立保持时间(这之间的数据肯定是稳定的)。

Vivado中如何做set_input_delay约束

得到:min=Tho=0.82ns,max=T/2-Tsu=4.464/2-0.72=1.512ns;这里假定时钟和数据到FPGA的路径长度是一致的(由PCB布线保证)。

set_input_delay -clock [get_clocks adc_dco_clk] -clock_fall -min -add_delay 0.820 [get_ports i_data_ch0_p]
set_input_delay -clock [get_clocks adc_dco_clk] -clock_fall -max -add_delay 1.512 [get_ports i_data_ch0_p]
set_input_delay -clock [get_clocks adc_dco_clk] -min -add_delay 0.820 [get_ports i_data_ch0_p]
set_input_delay -clock [get_clocks adc_dco_clk] -max -add_delay 1.512 [get_ports i_data_ch0_p]

编译分析STA结果:

本次时钟路径:IBUFDS→BUFIO→ISERDESE 差分时钟经过IBUFDS变为单端,经过IOB中的BUFIO送入ISERDESE。

Vivado中如何做set_input_delay约束

本次数据路径:IBUFDS→ISERDESE 差分数据经过IBUFDS变成单端送入ISERDESE。

Vivado中如何做set_input_delay约束

则要求数据在2.904ns时候到来,但数据抵达时刻是1.559ns,出现了保持违例:1.559-2.904 = -1.345ns。

也就是说数据来早了,提前撤销导致了保持违例。另一个角度说是时钟来晚了。

所以要解决这个问题,可以让数据晚点来,或者让时钟早点来。

对于片内逻辑间的保持不满足可以插LUT1,但接口IOB部分就没法插了,于是上网上找方法。

参考前面参考链接可知:可使用IODELAY原语对数据进行相应的延时,达到保持时间的满足。

这里1.345ns/78ps=18拍,即IODELAY至少需要延迟18拍;

时序约束文件中参考下述图片写,但我还没有验证过,待验证,理论可行,估计就可以STA通过了。

Vivado中如何做set_input_delay约束

这个延时可以通过时序训练或者手动调节,找寻合适点。具体可参考:xapp524-serial-lvds-adc-interface.pdf

如果是动态调节TAP值,那么STA就没卵用了,STA的前提是假定TAP值为定值。

审核编辑:汤梓红

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

    关注

    1625

    文章

    21664

    浏览量

    601683
  • 芯片
    +关注

    关注

    453

    文章

    50372

    浏览量

    421660
  • Vivado
    +关注

    关注

    19

    文章

    808

    浏览量

    66312
收藏 人收藏

    评论

    相关推荐

    常用时序约束使用说明-v1

    为了防止约束失败,我们在Tcl输入框验证,没有告警或者错误说明约束的写法是正确的set_max_delay 5.00 -from [get_cells key2_detect_ins
    的头像 发表于 11-01 11:06 135次阅读

    Vivado使用小技巧

    后的约束在之前版本已存在,那么Vivado会给出警告信息,显示这些约束会覆盖之前已有的约束;如果是新增
    的头像 发表于 10-24 15:08 202次阅读
    <b class='flag-5'>Vivado</b>使用小技巧

    深度解析FPGA的时序约束

    建立时间和保持时间是FPGA时序约束两个最基本的概念,同样在芯片电路时序分析也存在。
    的头像 发表于 08-06 11:40 558次阅读
    深度解析FPGA<b class='flag-5'>中</b>的时序<b class='flag-5'>约束</b>

    硬件工程师如何做元器件变更的决策

    硬件工程师如何做元器件变更的决策某产品在从研发转规模生产阶段,采购部门给硬件工程师推荐了新的MOSFET(称为A),该物料比该产品研发阶段使用的MOSFET(称为B)价格更低,且供货渠道更友好。作为
    的头像 发表于 07-06 08:17 439次阅读
    硬件工程师<b class='flag-5'>如何做</b>元器件变更的决策

    详细讲解SDC语法set_input_delayset_output_delay

    在数字集成电路设计,Synopsys Design Constraints(SDC)是一种重要的约束语言,用于指导综合、布局布线等后续流程。
    的头像 发表于 05-06 14:15 2462次阅读

    STM32扩展IO口如何做

    STM32扩展IO口,如何做
    发表于 04-16 08:27

    详解Vivado非工程模式的精细设计过程

    将设置设计的输出路径,设置设计输出路径的步骤如下所示。 第一步:如图4.3所示,在“Vivado%”提示符后输入命令“set outputDir ./gate_Created_Data/top_output”。
    发表于 04-03 09:34 1430次阅读
    详解<b class='flag-5'>Vivado</b>非工程模式的精细设计过程

    求助,请问程序自升级时Bin文件的校验是如何做的?

    程序自升级时Bin文件的校验是如何做的?
    发表于 04-03 06:06

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

    [*]~FF|Q}] -hold Tmds_data1_o是一个LVDS的输出接口,hold使用的是min 值,setup使用的是max值 。如果有多条路径可以使用-npaths. 可以看到在约束已经把Output Delay
    的头像 发表于 02-27 08:38 631次阅读
    怎样查看<b class='flag-5'>input</b>/output <b class='flag-5'>delay</b>是否生效

    veriloginput和output作用

    在Veriloginput和output用于定义模块的输入和输出端口。它们是用于通信的关键元素,定义了模块与其它模块之间的数据传输接口。通过input和output端口,模块之间可以互相传递数据
    的头像 发表于 02-23 10:29 2907次阅读

    变压器没有抽头如何做正负压?

    变压器没有抽头如何做正负压?
    的头像 发表于 01-20 10:28 1676次阅读
    变压器没有抽头<b class='flag-5'>如何做</b>正负压?

    限位开关如何做液压控制 限位开关如何接线

    限位开关如何做液压控制 限位开关如何接线  限位开关是一种常用于液压系统的控制元件,它可以用于监测和控制机械或设备的运动范围。本文将详细介绍限位开关的工作原理、液压控制的应用以及限位开关的接线
    的头像 发表于 12-20 11:01 1584次阅读

    安信可AiPi-Eyes-R2如何做86智能盒?

    安信可AiPi-Eyes-R2如何做86智能盒?
    的头像 发表于 11-29 16:05 548次阅读
    安信可AiPi-Eyes-R2<b class='flag-5'>如何做</b>86智能盒?

    adau1452如何做防啸叫功能呢?

    我用的是adau1452,请问如何做防啸叫功能呢?谢谢
    发表于 11-29 06:17

    pythoninput怎么输入3个值

    在 Python ,可以使用 input() 函数来获取用户的输入。如果你想要输入多个值,可以根据具体的需求使用以下方法。 方法一:使用多个 input 函数 最简单的方法是使用多个 inp
    的头像 发表于 11-23 15:31 9708次阅读