SDC命令详解:使用set_fanout_load命令进行约束
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录指定扇出负载值指定端口列表/集合Multicorner-Multimode支持简单使用写在最后set_fanout_load命令用于设置扇出负载设置了输出端口对象的fanout_load属性这是一种设计规则约束(Design Rule Constraint)Design Compiler在综合的门级优化阶段会尝试确保每个输入端口/输出引脚驱动的扇出负载总和不超过设置的最大扇出负载优先级高于优化约束(Optimization Constraint)即可能以时序违例为代价修复设计规则违例默认情况下输出端口的扇出负载为0。如果想要移除扇出负载使用remove_attribute命令。本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别。set_fanout_load命令的BNF范式有关BNF范式可以参考以往文章为set_fanout_load value ports //注该命令的ports参数一定要放在value参数后指定扇出负载值value是一个非负的扇出负载值它是一个无量纲数值不是电容也不是真实的扇出数量它是一种对有效扇出的表示。指定端口列表/集合指定一个列表/集合包含输出端口对象对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。SDC命令详解使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571Multicorner-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简单使用以图1所示的电路图为例。图1 简单的例子首先使用set_max_fanout命令设置输入端口a的最大扇出负载默认为无穷大 。dc_shell set_max_fanout 0.6 [get_ports a]下面使用set_fanout_load命令设置输出端口的扇出负载为0.5可以使用report_constraint -max_fanout命令查看此时设计的整体约束情况如图2所示。dc_shell set_fanout_load 0.5 [get_ports b]图2 最大扇出负载满足下面使用set_fanout_load命令改变输出端口的扇出负载为0.7此时的整体约束情况如图3所示可以看出此时出现设计规则违例代价函数的值此时恰好为0.7-0.60.1。dc_shell set_fanout_load 0.7 [get_ports b]图3 最大扇出负载违例写在最后该约束只对当前设计生效因为只有当前设计有端口的概念且propagate_constraints命令对该约束无效即无法将子设计的扇出负载约束传播到顶层设计。