尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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
RELATED

相关推荐

本地部署开源语音工作室:声音克隆与工作流引擎实战指南

本地部署开源语音工作室:声音克隆与工作流引擎实战指南

声音克隆这个词这两年热度一直没降过,但真正落到"能日常用起来"的工具其实不多。大部分方案要么依赖云端API、要么部署链路长得让人放弃,要么就是克隆出来的声音一股电子味。最近我在折腾一个完全本地运行的开源语音工作室项目,它把…

📅 2026/10/26 17:53:50
DeepSeek-R1实战指南:任务-模型-提示语-验证四维对齐方法论

DeepSeek-R1实战指南:任务-模型-提示语-验证四维对齐方法论

简介:本资源为清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室出品的《DeepSeek:从入门到精通》专题教程PPT,面向AI开发者、技术研究者及大模型应用实践者,系统解析国产开源推理模型DeepSeek-R1的核心能力、适用边界与工程…

📅 2026/10/26 17:53:50
Genus:设计信息结构以及导航方式(路径种类)

Genus:设计信息结构以及导航方式(路径种类)

相关阅读 Genushttps://blog.csdn.net/weixin_45791458/category_13003519.html?spm1001.2014.3001.5482 Genus使用设计信息结构(Design Information Hierarchy)对数据库进行建模,其中包括各种对象以及其属性,设计信息结构与Lin…

📅 2026/10/26 17:53:50
MORE NEWS

更多资讯

📰

二分查找解决愤怒的牛问题:最大化最小距离算法

1. 愤怒的牛问题解析 这道题目源自经典的"愤怒的牛"问题,属于算法竞赛中的二分查找应用题型。题目描述通常为:农夫John建造了一个有N个隔间的牛棚,这些隔间分布在一条直线上,坐标分别为x1,...,xN。他的C头牛对隔间非常挑…

📰

React Native鸿蒙跨平台开发:列表视图实战指南

1. 项目概述:React Native鸿蒙跨平台开发入门刚接触React Native的开发者常常会面临一个现实问题:如何快速掌握核心开发模式,同时适配新兴的鸿蒙平台?这个浏览历史列表项目正是为解决这个问题而设计的。作为React Native开发中最基…

📰

服务器配置与优化实战:从硬件选型到性能调优

1. 服务器配置入门:从零开始搭建专业级服务环境第一次接触服务器配置时,我被各种专业术语和复杂参数搞得晕头转向。经过多年实战,我发现只要掌握几个核心要点,任何人都能快速搭建稳定的服务器环境。今天我就把最实用的配置经验整理…

📰

ONLYOFFICE大文档处理崩溃问题优化方案

1. ONLYOFFICE大文档处理崩溃问题全景解析最近在技术社区看到不少关于ONLYOFFICE处理大文档时崩溃的讨论,作为一款开源的办公套件,它在企业文档协作领域确实越来越受欢迎。但当我们处理50页以上的大型文档,特别是包含复杂格式和多媒体内容时&…

📰

模板代码安全风险与增强实践指南

1. 模板代码安全性增强的必要性在软件开发领域,模板代码就像建筑工地上的脚手架——它能快速搭建起项目框架,但也可能成为安全隐患的温床。我见过太多团队因为忽视模板代码的安全性而付出惨重代价,从数据泄露到系统入侵,这些本可以…

📰

DirectX 9.0 SDK免安装版:绕过注册表与VC++依赖的离线开发方案

简介:本资源为DirectX 9.0 SDK免安装精简版,面向Windows平台C游戏开发初学者与图形编程学习者,解决传统SDK安装繁琐、环境配置复杂的问题,支持快速接入Direct3D 9、DirectSound、DirectInput等核心组件开发。压缩包为RAR格式&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬