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

    文章

    1647

    浏览量

    149326
  • 内存
    +关注

    关注

    8

    文章

    2998

    浏览量

    73881
收藏 人收藏

    评论

    相关推荐

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

    state到cnt的路径打印10条路径,以第一条为例report_timing -from key2_detect_inst/state* -file timing_test.txt
    的头像 发表于 11-01 11:06 137次阅读

    ESP8266 Fatal exception (3) 无法正常启动怎么解决?

    1. 相关背景 使用的模块为esp12-f,使用arduino-esp8266,版本为2.3。在开关电的时候会有一定概率出现ESP8266 Fatal exception (3)的错误,然后一直无法
    发表于 07-10 07:51

    Xilinx FPGA编程技巧之常用时序约束详解

    今天给大侠带来Xilinx FPGA编程技巧之常用时序约束详解,话不多说,上货。 基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径以及
    发表于 05-06 15:51

    时序约束实操

    添加约束的目的是为了告诉FPGA你的设计指标及运行情况。在上面的生成约束之后,在Result àxx.sdc中提供约束参考(请注意该文件不能直接添加到工程中,需要热复制到别的指定目录或者新建自己的SDC文件添加到工程)。
    的头像 发表于 04-28 18:36 2190次阅读
    时序<b class='flag-5'>约束</b>实操

    Xilinx FPGA的约束设置基础

    LOC约束是FPGA设计中最基本的布局约束和综合约束,能够定义基本设计单元在FPGA芯片中的位置,可实现绝对定位、范围定位以及区域定位。
    发表于 04-26 17:05 1087次阅读
    Xilinx FPGA的<b class='flag-5'>约束</b>设置基础

    Xilinx FPGA编程技巧之常用时序约束详解

    今天给大侠带来Xilinx FPGA编程技巧之常用时序约束详解,话不多说,上货。 基本的约束方法为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径以及
    发表于 04-12 17:39

    限流型断路器与限载型断路器的区别

    原理和应用方面存在一些重要的区别。 1. 原理 限流型断路器(也称为熔断器)根据电流的大小和时间来判断断开电路,以保护电线和设备免受过大电流的伤害。熔断器由熔丝和基座两部分组成。熔丝是一个金属丝,当电流超过熔丝的额定值时,熔
    的头像 发表于 02-05 15:51 678次阅读

    如何判断限流断路器能保护到微断?能否从限流曲线判断

    如何判断限流断路器能保护到微断?能否从限流曲线判断? 限流断路器(也称为过载保护器)是一种电气保护设备,用于保护电气系统免受过流和过载损害。在电气系统中,流经导线和设备的电流必须控制在
    的头像 发表于 02-05 15:23 540次阅读

    如何判断电路故障是短路还是断路

    在日常生活中,我们常常会遇到电路故障的情况,比如电源无法正常工作、电器无法正常运行等。了解电路故障的类型,特别是短路和断路两种情况的区别,是解决电路故障的第一步。本文将详细介绍如何判断电路故障是短路
    的头像 发表于 01-16 09:28 4376次阅读

    电流为0是短路还是断路 短路和断路怎么判断

    短路情况则与之相反。在短路中,电流会选择以最低阻抗路径流动,并绕过原本应经过的元件。这会导致电流急剧增大,可能造成电路过载、过热和其他损坏。
    的头像 发表于 01-11 14:50 7822次阅读

    什么是短路和断路 电路短路和断路的区别

    短路和断路是电路中常见的两种故障模式。短路指两个或多个电路元件之间直接的接触,使电流绕过原本应经过的元件而由其他路径流动。
    的头像 发表于 01-11 14:23 7966次阅读

    FPGA物理约束之布局约束

    在进行布局约束前,通常会对现有设计进行设计实现(Implementation)编译。在完成第一次设计实现编译后,工程设计通常会不断更新迭代,此时对于设计中一些固定不变的逻辑,设计者希望它们的编译结果
    的头像 发表于 01-02 14:13 1409次阅读
    FPGA物理<b class='flag-5'>约束</b>之布局<b class='flag-5'>约束</b>

    零线断路故障的原因/判断方法及预防措施

    的相电压过高,可能烧毁电器设备,有的相电压过低,电器设备无法正常使用。   零线断路的情况判断   (1)在单相供电范围内发生零线断路,故障范围内的电灯不亮,其他电器不能使用,这时用氖灯验电笔验
    发表于 12-21 07:29

    断路器的参数怎么选择?断路器的选型原则

    断路器的参数怎么选择?断路器的选型原则  断路器是电气系统中的重要组件,用于保护电气设备免受过电流和短路等故障的损害。断路器的参数选择和选型原则对于正常运行和安全保护电气设备至关重要。
    的头像 发表于 12-19 15:47 3152次阅读

    介绍三种芯片timing model

    今天想来聊一聊timing model。Top层在做STA的时候,为了速度的考量,有的时候不会把所有block都做flatten(展平化)处理
    的头像 发表于 12-06 14:03 751次阅读