SDC命令详解:使用all_fanout命令进行查询

发布时间:2026/11/6 3:42:54
SDC命令详解:使用all_fanout命令进行查询 相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html目录指定对象指定时钟树指定仅时序路径终点指定不包含黑盒指定停止在黑盒指定仅包含单元指定展平模式指定级数指定时序弧类型指定覆盖默认的遍历行为Multicorner-Multimode支持综合前的可综合操作符和DesignWare组件写在最后all_fanout命令用于创建一个输出端口、引脚和单元对象集合包含指定对象的扇出时序路径上的对象关于设计对象和集合的更详细介绍可以参考下面的博客。Synopsys设计对象https://chenzhang.blog.csdn.net/article/details/147015140?spm1001.2014.3001.5502本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别。all_fanout命令的BNF范式有关BNF范式可以参考以往文章为all_fanout [-from source_list | -clock_tree] [-endpoints_only] [-exclude_bboxes] [-break_on_bboxes] [-only_cells] [-flat] [-levels count] [-trace_arcs arc_type] [-continue_trace pin_types] //注该命令的选项和参数顺序任意指定对象-from选项用于指定作为向后遍历起点的引脚、端口或线网其效果与列出该线网的负载引脚相同对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。-from选项和-clock_tree选项是互斥的只能使用其中一个。SDC命令详解使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571指定时钟树-clock_tree选项指定使用所有定义了时钟的引脚和端口作为向后遍历的起点。可以使用create_clock命令和create_generated_clock命令创建时钟和生成时钟。-from选项和-clock_tree选项是互斥的只能使用其中一个。指定仅时序路径终点-endpoints_only选项用于指定在对象集合中仅包含时序路径终点。默认情况下对象集合中会包含从指定对象向后遍历直到时序路径终点对于典型的时序路径是输出端口包括输入输出双向端口或触发器的数据引脚包括复位引脚过程中的所有引脚包含层次单元引脚/输出端口。指定不包含黑盒-exclude_bboxes选项用于指定对象集合中不包含黑盒单元及其引脚。指定停止在黑盒-break_on_bboxes选项用于指定向后遍历停止在黑盒单元的输入引脚包括输入输出双向引脚。默认情况下如果黑盒单元有从输入引脚到输出引脚的时序弧会继续向后遍历。指定仅包含单元-only_cells选项用于指定对象集合中只包含引脚所属的单元。指定展平模式-flat选项用于指定以展平模式执行命令此时对象集合中将不包含层次单元引脚。默认情况下是层次模式对象集合中只会包含和指定对象在同一层次下的对象层次单元引脚被视为与层次单元而不是层次单元内的对象在同一层次这并不意味着遍历会停止在层次边界。下面通过一个例子展示了展平模式和层次模式的区别图1中存在多次穿越层次的时序路径。图1 穿越层次的例子dcnxt_shell all_fanout -from [get_pins U_A/DFF1_reg/Q] -flat {U_A/DFF2_reg/D U_B/U1/Y U_B/U1/A U_A/DFF1_reg/Q} dcnxt_shell all_fanout -from [get_pins U_A/DFF1_reg/Q] {U_A/DFF2_reg/D U_A/DFF1_reg/Q}指定级数-levels选项用于指定向后遍历的最大级数一个单元属于一级默认值为无穷大。指定时序弧类型-trace_arcs选项用于指定向后遍历过程中的组合逻辑时序弧类型当设置为timing时仅追踪有效的组合逻辑时序弧即未因set_disable_timing命令、set_case_analysis命令、固定值引起的常量传播、工具自动断开组合逻辑环(Timing Loop)和状态相关的时序弧(Conditional Timing Arc)缺少对应状态等原因而失效的组合逻辑时序弧当设置为all时则不存在该限制。使用此选项将覆盖由fanin_fanout_trace_arcs变量默认值为timing设置的值。该选项对时序逻辑时序弧没用严格意义上说该选项的使用能让向后遍历突破只能在一条时序路径上的限制。指定覆盖默认的遍历行为-continue_trace选项用于覆盖默认的遍历行为可以将其指定为generated_clock_source。当指定为generated_clock_source时当指定对象在生成时钟的时钟路径上时遍历不会停在生成时钟源默认情况下这是一个时序路径终点而会继续向后遍历直到时钟源外的时序路径终点对于典型的时序路径是输出端口包括输入输出双向端口或触发器的数据引脚包括复位引脚。严格意义上说该选项的使用能让向后遍历突破只能在一条时序路径上的限制。下面通过一个例子展示了-continue_trace选项的作用图2中存在一个分频时钟。图2 分频时钟的例子dcnxt_shell create_clock -name CLK -period 10 [get_ports clk] 1 dcnxt_shell create_generated_clock -name CLK_DIV2 -source [get_ports clk] -divide_by 2 [get_pins div2_reg_reg/Q] 1 dcnxt_shell all_fanout -from [get_pins div2_reg_reg/CK] {div2_reg_reg/Q div2_reg_reg/CK} dcnxt_shell all_fanout -from [get_pins div2_reg_reg/CK] -continue_trace generated_clock_source {div2_reg_reg/D U3/Y clk_div2 dout_reg/CK U3/A div2_reg_reg/Q div2_reg_reg/CK}Multicorner-Multimode支持该命令部分选项对当前场景生效部分选项对对所有活跃场景生效。关于场景的更多介绍可以参考下面的博客。Design Compiler多工艺角和多工作模式(Multicorner-Multimode, MCMM)https://blog.csdn.net/weixin_45791458/article/details/149578771?ops_request_misc%257B%2522request%255Fid%2522%253A%2522e3267dcc7cc26380435f53994dc8b9b8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_ide3267dcc7cc26380435f53994dc8b9b8biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-149578771-null-null.nonecaseutm_termMCMMspm1018.2226.3001.4450综合前的可综合操作符和DesignWare组件对于综合前的可综合操作符和DesignWare组件它们被视为黑盒is_black_box属性为true但当用户使用all_fanout命令时工具会对信号进行传播为了能够通过可综合操作符和DesignWare组件进行拓扑探索工具会在可综合操作符和DesignWare组件内部使用GTECH单元和SEQGEN单元构建临时网表提示Allocating blocks in ***。这些临时网表在综合时会被丢弃从而允许正常进行完整的高层次优化与数据通路优化在输出网表时临时网表也会被丢弃。关于临时网表下面还有几点需要注意对于流水线化的DesignWare组件即包含piped关键词其临时网表中包含SEQGEN单元对于非流水线化的DesignWare组件仅保留临时网表中的GTECH单元临时网表中的单元无法使用get_cells等命令查询SEQGEN单元可以通过all_registers命令查询写在最后all_fanout命令返回的是输出端口、引脚和单元对象集合但返回对象集合的命令会自动调用query_objects命令显示对象名列表执行该命令后可看到对应列表列表中的对象名数量最多由collection_result_display_limit变量控制默认为100。该命令根据当前实例进行查询但返回的对象集合还是相对当前设计而言的如下所示。dcnxt_shell current_design TOP Current design is TOP. {TOP} dcnxt_shell current_instance U_B Current instance is /TOP/U_B. /TOP/U_B dcnxt_shell all_fanout -from [get_pins I_0/A] -flat {U_B/dout U_B/I_0/Z U_B/I_0/A}如果使用current_design命令切换了当前设计则相对原当前设计得到的对象集合会暂时失效如下所示。dcnxt_shell current_design top Current design is top. {top} dcnxt_shell set a [all_fanout -from [get_pins u_test/cout]] {cout} dcnxt_shell query_objects $a {cout} dcnxt_shell current_design bot Current design is bot. {bot} dcnxt_shell query_objects $a Error: No such collection _sel2040 (SEL-001) dcnxt_shell current_design top Current design is top. {top} dcnxt_shell query_objects $a {cout}

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询