Design Compiler:触发器的复制(set_register_replication命令)

发布时间:2026/10/26 17:59:57

Design Compiler:触发器的复制(set_register_replication命令) 相关阅读Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482目录简介手动触发器复制指定触发器列表/集合指定最大扇出数量指定复制后数量指定复制包含扇入逻辑指定复制包含扇出逻辑指定由原始触发器驱动指定是否启动触发器复制自动触发器复制边界优化不进行触发器复制的情况写在最后简介其实在下面这篇关于Formality的文章中笔者已经介绍了触发器的复制但仅提了一句“在某些情况下Design Compiler可能为了性能而复制触发器”本文旨在详细讨论Design Compiler对触发器复制的优化方式。Formality时序变换五触发器复制https://chenzhang.blog.csdn.net/article/details/145521510复制触发器可以提高时序结果质量(QoR)、拥塞和扇出问题要在线负载模式或拓扑模式下启用手动触发器复制可以使用set_register_replication命令该命令会在指定的时序单元上设置register_splitting属性和register_replication属性从而允许对这些对象进行触发器复制要在拓扑模式下启用自动触发器复制可以使用compile_register_replication变量默认值为false。手动触发器复制set_register_replication命令的BNF范式有关BNF范式可以参考以往文章为set_register_replication object_list [-max_fanout max_fanout_value | -num_copies copy_value] [-include_fanin_logic cell] [-include_fanout_logic cell] [-driven_by_original_register end_points_list] [-replicate replicate_switch] //注该命令的选项和参数顺序任意指定触发器列表/集合指定一个触发器列表/集合包含触发器对象。对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。SDC命令详解使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571指定最大扇出数量-max_fanout选项指定了触发器复制后每个触发器如果使用了-include_fanout_logic选项选项则还包括组合逻辑单元的最大扇出数量是一个大于等于1的整数值。需要注意的是这里的扇出数量与set_max_fanout命令中扇出负载的概念是不一样的扇出负载可以是小数而扇出数量只由引脚/输出端口数量决定。Design Compiler会尽量均衡每个触发器的扇出数量例如指定-max_fanout为8而原始触发器的扇出数量为17则复制后触发器的扇出数量为6, 6, 5。-max_fanout选项和-num_copies选项不能同时使用。下面以图1为例展示了该选项的基本使用方式。图1 综合前设计dcnxt_shell set_register_replication -max_fanout 3 [get_cells t_reg]图2展示了这种情况下的综合结果。图2 综合后设计对应图1register_replication_naming_style变量默认值为%s_rep%d决定了新增触发器/组合逻辑单元的名字字符串值必须包含%d表示原始触发器/组合逻辑单元的名字可以包含%s表示编号。指定复制后数量-num_copies选项指定了触发器复制后的数量是一个大于等于2的整数值。需要注意的是如果触发器复制后的数量超过了让每个触发器的扇出数量为1的限制则以实际情况为准例如指定-num_copies为10但原始触发器的扇出数量为6则触发器只会复制5次而不是9次。Design Compiler会尽量均衡每个触发器的扇出数量例如指定-num_copies为3而原始触发器的扇出数量为17则复制后触发器的扇出数量为6, 6, 5。-max_fanout选项和-num_copies选项不能同时使用。下面以图1为例展示了该选项的基本使用方式。dcnxt_shell set_register_replication -num_copies 2 [get_cells t_reg]图3展示了这种情况下的综合结果。图3 综合后设计对应图1从2018版本开始手动触发器复制得到了增强考虑图4所示的情况。图4 综合前设计dcnxt_shell set_register_replication -num_copies 2 [get_cells t_reg x1_reg] // 如果使用两条命令分别设置两个触发器结果是一样的且与命令的前后顺序无关图5展示了这种情况下的综合结果。图5 综合后设计对应图4在之前的版本中只有触发器t_reg会得到复制因为对于原始触发器而言x1_reg的扇出数量为1现在的Design Compiler可以先完成触发器t_reg的复制再完成触发器x1_reg的复制。指定复制包含扇入逻辑-include_fanin_logic选项用于指定触发器复制过程中同时复制触发器以指定组合逻辑单元为起点的扇入逻辑锥。需要注意的是只能指定一个组合逻辑单元且该组合逻辑单元只拥有唯一一条通向触发器的路径否则会报错。如果使用了-include_fanin_logic选项则触发器列表/集合中只能指定一个触发器。下面以图6为例展示了该选项的基本使用方式。图6 综合前设计dcnxt_shell set_register_replication -num_copies 2 -include_fanin_logic [get_cells x1] [get_cells t_reg]图7展示了这种情况下的综合结果。图7 综合后设计对应图6如果使用了-include_fanin_logic选项扇入逻辑锥中的组合逻辑单元及新增/原始触发器会被设置size only属性确保其不会在综合过程中被优化掉需要注意的是此时的size_only属性是隐式设置的这与使用set_size_only命令显式设置不同无法使用report_attribute命令或get_attribute命令直接查看而只能使用report_cell命令或report_size_only命令间接查看隐式size_only属性的优先级高于显式size_only属性使用list_size_only_types命令可以列出叶单元被设置size_only属性的原因显式或隐式。指定复制包含扇出逻辑-include_fanout_logic选项用于指定触发器复制过程中同时复制触发器以指定组合逻辑单元为终点的扇出逻辑锥这是因为有些情况下扇出瓶颈点(chokepoint)不是触发器的输出而是其扇出逻辑锥中的某个组合逻辑单元。需要注意的是只能指定一个组合逻辑单元且触发器只拥有唯一一条通向该组合逻辑单元的路径否则会报错。下面以图8为例展示了该选项的基本使用方式。图8 综合前设计dcnxt_shell set_register_replication -num_copies 2 -include_fanout_logic [get_cells x1] [get_cells t_reg]图9展示了这种情况下的综合结果。图9 综合后设计对应图8从2019版本开始-include_fanout_logic选项得到了增强触发器列表/集合中可以指定多个触发器要求触发器都只拥有唯一一条通向该组合逻辑单元的路径考虑图10所示的情况。图10 综合前设计dcnxt_shell set_register_replication -num_copies 2 -include_fanout_logic [get_cells x2] [get_cells t_reg x1_reg]图11展示了这种情况下的综合结果。图11 综合后设计对应图10需要注意的是使用该功能要求在触发器列表/集合中同时指定多个触发器而不能先后指定如下所示。dcnxt_shell set_register_replication -num_copies 2 -include_fanout_logic [get_cells x2] [get_cells t_reg] dcnxt_shell set_register_replication -num_copies 2 -include_fanout_logic [get_cells x2] [get_cells x1_reg]图12展示了这种情况下的综合结果。图12 综合后设计对应图10如果使用了-include_fanout_logic选项扇出逻辑锥中的组合逻辑单元及新增/原始触发器会被设置size only属性确保其不会在综合过程中被优化掉需要注意的是此时的size_only属性是隐式设置的这与使用set_size_only命令显式设置不同无法使用report_attribute命令或get_attribute命令直接查看而只能使用report_cell命令或report_size_only命令间接查看隐式size_only属性的优先级高于显式size_only属性使用list_size_only_types命令可以列出叶单元被设置size_only属性的原因显式或隐式。指定由原始触发器驱动从2018版本开始-driven_by_original_register选项可以指定一个路径终点列表/集合包含触发器对象或输出端口对象只有这些对象在寄存器复制后将由原始触发器驱动因此原始触发器可能不满足最大扇出数量的要求下面以图1为例展示了该选项的基本使用方式。dcnxt_shell set_register_replication -max_fanout 3 -driven_by_original_register [get_ports q1 q2 q3 q4][get_cells t_reg]图13展示了这种情况下的综合结果。图13 综合后设计对应图1-driven_by_original_register选项不能与-include_fanin_logic选项或-include_fanout_logic选项一起使用。指定是否启动触发器复制从2022版本开始-replicate选项指定是否开启触发器复制默认为true当其设置为false时将忽略其它选项并删除触发器列表/集合中指定触发器的register_replication属性并将register_splitting属性设置为false经过笔者测试该选项和-include_fanin_logic选项或-include_fanout_logic选项似乎又不兼容的问题这可能是个bug。自动触发器复制拓扑模式的Design Compiler可以进行布局感知的自动触发器复制有助于减少拥塞两种方法可以启用该功能。1、将compile_register_replication变量默认值为default设置为true后使用compile_ultra命令进行综合。2、保持compile_register_replication变量为默认值default并使用compile_ultra -spg命令进行综合。register_replication_naming_style变量默认值为%s_rep%d决定了新增触发器/组合逻辑单元的名字字符串值必须包含%d表示原始触发器/组合逻辑单元的名字可以包含%s表示编号。边界优化手动触发器复制和自动触发器复制默认情况下不能跨越层次结构因为这会导致子设计引脚增加如果在开启边界优化的基础上将compile_register_replication_across_hierarchy变量默认值为false设置为true则触发器复制可以跨越层次结构下面给出了一个例子。图14 综合前设计如果使用compile_ultra -no_boundary_optimization命令进行综合禁止边界优化则触发器复制不会发生如果使用compile_ultra -no_autoungroup命令进行综合禁止自动解组且将compile_register_replication_across_hierarchy变量设置为true则综合结果如图15所示。图15 综合后设计对应图14不进行触发器复制的情况1、被设置dont_touch属性的触发器不进行触发器复制。2、重定时(Retiming)触发器不进行触发器复制。3、扫描单元已连接的设计不进行触发器复制。4、多比特(Multibit)触发器不进行触发器复制。5、使用set_register_replication命令时使用了-include_fanin_logic选项或-include_fanout_logic选项且逻辑锥中存在被设置了dont_touch属性的组合逻辑单元不进行触发器复制如果是先使用set_register_replication命令后设置dont_touch属性则触发器复制可以进行这可能是个bug。6、使用set_register_replication命令时使用了-include_fanin_logic选项或-include_fanout_logic选项且逻辑锥跨越了层次结构不进行触发器复制。7、当compile_register_replication_do_size_only变量默认值为true被设置为false时如果触发器被设置显式size_only属性通过set_size_only命令时不进行触发器复制。8、当compile_enable_register_replication_without_reset_pin变量默认值为true被设置为false时该变量在2024版本引入不带复位/置位端的触发器不会被复制因为原始触发器和新增触发器的初始状态可能会不同可能导致仿真问题。写在最后Design Compiler NXT在2022版本推出了report_transformed_registers命令该命令可以报告工具在优化过程中对寄存器包括触发器和锁存器进行的所有变换详细内容可以参考下面的博客。SDC命令详解使用report_transformed_registers命令进行报告https://blog.csdn.net/weixin_45791458/article/details/158101563?sharetypeblogdetailsharerId158101563sharereferPCsharesourceweixin_45791458spm1011.2480.3001.8118
延伸阅读

更多相关文章

2026/10/26 17:59:57

【机械制图与CAD实战(二十六)】齿轮的表示方法

齿轮是广泛用于机器或部件中的传动零件,属于常用件。齿轮不仅可以用来传递动力,并且还能改变转速和旋转方向。•三种常见的齿轮圆柱齿轮:用于两平行轴之间的传动圆锥齿轮:用于两相交轴之间的传动蜗轮蜗杆:用于两交叉轴…

2026/10/26 17:59:57

【机械制图与CAD实战(二十五)】螺纹的表示方法

1.1、螺纹基础知识1.1.1、螺纹的形成l在圆柱表面或圆锥表面上,沿着螺旋线形成的、具有相同剖面的连续凸起和沟槽,称为螺纹。1)内、外螺纹在圆柱面上形成的螺纹为圆柱螺纹;在圆锥面上形成的螺纹为圆锥螺纹。在工件外表面上加工出的…

2026/10/26 17:59:57

【机械制图与CAD实战(二十七)】键的表示方法

键是标准件。它们的结构、型式和尺寸都有规定,可从有关标准中查阅选用。键的标记反映其型式及主要尺寸。1、键连接在机器中,可以采用键来连接轴和轴上的零件(如齿轮、皮带轮等),使它们能一起转动,以达到传递…

2026/10/26 23:17:21

AutoDev Next:AI深度集成IDE的多端编程实践

1. AutoDev Next:当IDE遇上AI编程服务最近在开发者社区看到不少关于AutoDev Next的讨论,这个号称"IDE即AI编程服务"的工具确实引起了我的兴趣。作为一个长期在多种编程环境中切换的老码农,我决定深入测试这个工具,看看它…

2026/10/26 23:17:21

华为2288HV5服务器架构解析与优化实践

1. 2288HV5服务器概述华为2288HV5是面向企业级应用设计的一款2U双路机架式服务器,属于FusionServer Pro系列产品线。这款服务器在2019年推出时主要针对云计算、虚拟化和数据库等关键业务场景,采用英特尔至强可扩展处理器(Skylake/Cascade Lak…

2026/10/26 23:17:21

Java斜视角游戏编辑器源码解析与实战指南

简介:这是一套面向Java游戏开发初学者与进阶者的2D斜视角(Isometric)游戏开发工具源码,聚焦于地图编辑与运行时引擎的完整实现,适用于策略、模拟类游戏的学习与原型开发。资源包含866个文件,主体为541个Jav…

2026/10/26 23:17:21

Anaconda多环境管理实战:从安装配置到版本冲突排查

1. 为什么Python多环境管理是绕不开的坎1.1 从一个真实的翻车现场说起去年帮一个朋友排查他公司里的一个数据流水线问题,现象很典型:本地跑得好好的脚本,一上服务器就报ImportError,提示numpy里某个函数不存在。他本地是numpy 1.2…

2026/10/26 23:12:20

Linux下MySQL安装配置与性能优化实战指南

1. Linux系统安装MySQL全流程指南作为最流行的开源关系型数据库,MySQL在Linux服务器上的部署是每个开发者和管理员的必备技能。不同于Windows的一键安装包,Linux环境下需要更多手动配置和优化。我在过去五年里为数十家企业部署过MySQL服务,从…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/26 0:20:17

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/26 0:00:48

Nested Learning:解决AI灾难性遗忘的分层记忆架构

1. 为什么AI需要"记忆"能力?在传统深度学习模型中,我们常遇到一个根本性问题:模型在处理新任务时,往往会完全遗忘之前学到的知识。这种现象被业界称为"灾难性遗忘"(Catastrophic Forgetting)。想象一下&#…

2026/10/26 0:00:48

企业级大模型应用:OCR预处理、Dify编排与DeepSeek落地实战

1. 这不是“用大模型”,而是重构工作流的起点“大模型的应用和工具”——这八个字现在被贴在无数技术分享、招聘JD、内部立项书的标题栏里,但绝大多数人点进去后看到的,是零散的API调用示例、几个开源UI截图、或者一句“接入LLM就能降本增效”…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑