ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

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

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
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表