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

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

3天内不再提示

如何判断路径的timing exception约束

吴湛 来源:哎呀2015 作者:哎呀2015 2022-08-02 08:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着设计复杂度和调用IP丰富度的增加,在调试时序约束的过程中,用户常常会对除了自己设定的约束外所涉及的繁杂的时序约束感到困惑而无从下手。举个例子,我的XDC里面并没有指定set_false_path,为什么有些路径在分析时忽略了?我怎么去定位这些约束是哪里设定的?

事实上,Vivado集成设计环境提供了很多辅助工具来协助用户完成时序约束的分析。

本文结合一个具体案例,阐述了如何追溯同一时钟域内partial false path的来源,希望为开发者的设计调试提供一些技巧和窍门。

首先来看问题。

在此设计中,当用report clock interaction查看时钟关系时,注意到不少单时钟域被标注成了partial false path。对于一个约束文件众多,约束较为复杂的设计,如何进一步推断partial false path有哪些路径,是被哪些约束覆盖了呢?

以其中的一个时钟域GTYE4_CHANNEL_RXOUTCLK_7为例:

Step1:关闭merging timing exceptions

运行Tcl命令让时序工具不要合并时序异常约束。

config_timing_analysis -merge_exceptions false

要注意的是,这种模式会导致更长的运行时间和更大的内存占用,因此不推荐默认情况下将时序工具保持在此模式下。

调试完成后,要恢复到默认模式,请将-merge_exceptions 的值设置为 True。

你可以用report_config_timing来报告exception merge的情况。

Step2:产生详细的时序路径报告

如果你只是要快速浏览路径的起始元件,可运行以下Tcl命令:

join [get_timing_paths -max_paths 100 -user_ignored -from [get_clocks GTYE4_CHANNEL_RXOUTCLK_7] -to [get_clocks GTYE4_CHANNEL_RXOUTCLK_7]] \n

返回会分行显示partial false path的startpoint和endpoint。

{gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_cmac_cdc_sync_gt_txresetdone_int3/s_out_d4_reg/C --》 gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_top/obsibdaaf4ker2wujpra0sjb/RX_SERDES_RESET[0]}

{gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_cmac_cdc_sync_gt_txresetdone_int3/s_out_d4_reg/C --》 gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_top/obsibdaaf4ker2wujpra0sjb/RX_SERDES_RESET[3]}

{gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_cmac_cdc_sync_gt_txresetdone_int3/s_out_d4_reg/C --》 gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_top/obsibdaaf4ker2wujpra0sjb/RX_SERDES_RESET[2]}

{gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_cmac_cdc_sync_gt_txresetdone_int3/s_out_d4_reg/C --》 gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_top/obsibdaaf4ker2wujpra0sjb/RX_SERDES_RESET[1]}

为了得到我们所需的更详细信息,可在Clock Interaction Report表格中,选中GTYE4_CHANNEL_RXOUTCLK_7这个时钟域,右键菜单选择Report Timing,

并且在设置对话框的Advanced标签卡中勾选Report user ignored paths选项。

对应的Tcl命令为:

report_timing -from [get_clocks GTYE4_CHANNEL_RXOUTCLK_7] -to [get_clocks GTYE4_CHANNEL_RXOUTCLK_7] -delay_type min_max -max_paths 10 -sort_by group -input_pins -routable_nets -user_ignored -name timing_3

当然,你可以根据需要增大max_paths的数目,以便更完整地包含所有路径。

运行结果如下图,可以看到,除了常规的时序路径信息,Exception一列还额外罗列了约束ID。

Step3:查找约束ID

这个ID反映的是Constraint position,我们可以打开Timing Constraints窗口,非常直观方便地定位这个ID所对应的约束语句。

Timing Constraints窗口仅对Synthesized Design或Implemented Design适用。你可以通过以下三种方式之一找到其入口(截图匹配Vivado 2020.2版本):

Open Synthesized/Implemented Design,选择菜单Windows 》 Timing Constraints

Open Synthesized Design,选择Flow Navigator里Synthesized Design部分的Edit Timing Constraints

Open Implemented Design,选择Flow Navigator里Implemented Design部分的Edit Timing Constraints

打开后,在All Constraints子窗口下拉找到Position一列为643的约束语句,如图所示:

选中此行约束,可以看到右上可视化表格的同条约束也自动被选中,向右拉到Source File一列可以看到约束所在的XDC文件,或者在All Constraints窗口上翻到此约束所在的层次,同样会列出XDC文件的具体信息。

如果你偏好Tcl模式,也可以用write_xdc导出带有ID的所有时序约束。

write_xdc -type timing -write_id timing.xdc

不过-write_id选项仅在2020.2及之后版本才支持。

至此,我们已经定位了partial false path的路径细节及约束来源。

如前所述,调试完约束后,请将-merge_exceptions设回默认值true,以免对运行时间及内存产生负面影响。

文中的方式可以应用到所有诸如此类“哪些约束覆盖了此路径“的疑问解答上,希望对各位开发者的时序调试有所帮助。

审核编辑:郭婷

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

    关注

    5

    文章

    1897

    浏览量

    157149
  • 内存
    +关注

    关注

    9

    文章

    3268

    浏览量

    76645
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    聊聊那些导致时序约束不收敛的常见问题

    做FPGA开发的同学,十有八九都被时序约束折磨过。代码写得好好的,仿真也没问题,一跑综合实现就报一堆setup/hold violation,改来改去就是收敛不了。按我的经验,这时候与其继续盲目调参数,不如静下心来检查一下自己的约束是不是从根子上就写错了。
    的头像 发表于 05-06 17:17 691次阅读
    聊聊那些导致时序<b class='flag-5'>约束</b>不收敛的常见问题

    2026深入拆解:Gemini 3.0 镜像官网如何理解 FPGA 时序约束并自动生成 SDC 文件

    让 AI 直接根据一句“这个 200MHz 时钟需要 5% 的抖动约束,跨时钟域路径设为 false_path”自动吐出符合 Synopsys Design Constraints 格式的 SDC
    的头像 发表于 05-04 12:29 4317次阅读
    2026深入拆解:Gemini 3.0 镜像官网如何理解 FPGA 时序<b class='flag-5'>约束</b>并自动生成 SDC 文件

    高速数字电路回流路径怎么找

    回流路径沿着阻抗最低的路径流动,高频时就是信号线下方的参考平面。
    的头像 发表于 04-11 17:11 1319次阅读
    高速数字电路回流<b class='flag-5'>路径</b>怎么找

    Vivado时序约束中invert参数的作用和应用场景

    在Vivado的时序约束中,-invert是用于控制信号极性的特殊参数,应用于时钟约束(Clock Constraints)和延迟约束(Delay Constraints)中,用于指定信号的有效边沿或逻辑极性。
    的头像 发表于 02-09 13:49 536次阅读
    Vivado时序<b class='flag-5'>约束</b>中invert参数的作用和应用场景

    vivado中常用时序约束指令介绍

    在vivado中,我们常用的时序约束指令主要包括如下几个方面。
    的头像 发表于 01-20 16:15 856次阅读

    输入引脚时钟约束_Xilinx FPGA编程技巧-常用时序约束详解

    基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径以及异常路径为: 输入路径(Input Pa
    发表于 01-16 08:19

    固态断路器参考设计用户指南:从原理到实践

    固态断路器参考设计用户指南:从原理到实践 在电力系统中,断路器是保障电路安全运行的关键设备。传统的机械断路器在应对高速、高精度的电路保护需求时,逐渐显现出其局限性。固态断路器(SSCB
    的头像 发表于 12-19 10:25 1701次阅读

    断路器柜局放监测系统—技术实践

    设计,系统阐述断路器柜局放监测的核心路径,为电力运维提供专业参考。脉冲电流法作为主流监测原理,依托断路器柜接地线或传感器采集局部放电产生的瞬态脉冲电流。该方法通过高频电
    的头像 发表于 12-09 09:40 575次阅读
    <b class='flag-5'>断路</b>器柜局放监测系统—技术实践

    充电桩消防设备:智能空开、智慧开关、断路器与智能断路

    中,智能空开、智慧开关、断路器及智能断路器扮演着至关重要的角色,它们共同构筑了一道坚实的安全防线。 一、 基础防护:传统断路器与智能断路器的演进
    的头像 发表于 11-04 18:04 2142次阅读

    时序约束问题的解决办法

    在使用vivado对 Verilog 代码进行综合后,点击“SYNTHESIS”下的“Report Timing Summary”,可以查看综合后的时序报告,查看 Setup Time 和 Hold
    发表于 10-24 09:55

    关于综合保持时间约束不满足的问题

    两个时钟是没有约束的异步时钟 3、在 synthesis 中 打开 edit timing constraints 设置异步时钟,如下图: 4、再重新运行 synthesis 中的 report
    发表于 10-24 07:42

    技术资讯 I Allegro 设计中的走线约束设计

    本文要点在进行时序等长布线操作的时候,在布线操作的时候不管你是走蛇形线还是走折线,约束管理器会自动帮你计算长度、标偏差,通过精确控制走线长度,来实现信号的时序匹配。约束设计就是一套精准的导航系统
    的头像 发表于 09-05 15:19 1687次阅读
    技术资讯 I Allegro 设计中的走线<b class='flag-5'>约束</b>设计

    物联网断路器电气安全守护者智能微型断路

    在现代建筑中,电力是血液,而配电系统则是维持一切运转的心脏。无论是工业厂房、商业楼宇,还是住宅小区、基础设施,低压终端配电网络的可靠性与安全性始终是重中之重。 ASCB1系列智能微型断路器通过搭配
    的头像 发表于 09-03 15:27 669次阅读
    物联网<b class='flag-5'>断路</b>器电气安全守护者智能微型<b class='flag-5'>断路</b>器

    技术资讯 I 图文详解约束管理器-差分对规则约束

    本文要点你是否经常在Layout设计中抓瞎,拿着板子无从下手,拿着鼠标深夜狂按;DDR等长没做好导致系统不稳定,PCIe没设相位容差造成链路训练失败……这些都是血泪教训,关键时刻需要靠约束管理器救命
    的头像 发表于 08-08 17:01 1595次阅读
    技术资讯 I 图文详解<b class='flag-5'>约束</b>管理器-差分对规则<b class='flag-5'>约束</b>

    地平线的L3判断与实践路径

    在智能驾驶演进过程中,L3/L4/L5等“高级别自动驾驶”的持续探索成为行业焦点,围绕其实现路径、验证方式与工程落地的讨论也在持续深化。
    的头像 发表于 06-27 09:39 1594次阅读