SDC命令详解:使用set_min_capacitance命令进行约束

📅2026/7/12 15:06:53 👁️次浏览
SDC命令详解:使用set_min_capacitance命令进行约束
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录指定最小需驱动电容值指定对象列表/集合Multicorner-Multimode支持简单使用写在最后set_min_capacitance命令用于设置输入端口的最小需驱动电容设置了输入端口的min_capacitance属性这是一种设计规则约束(Design Rule Constraint)Design Compiler在综合的门级优化阶段会尝试确保每个输入端口/输出引脚驱动的电容总和包括引脚电容和互连电容不小于设置的最小需驱动电容优先级高于优化约束(Optimization Constraint)即可能以时序违例为代价修复设计规则违例。在逻辑库中可以使用库属性default_input_pin_cap产生LBDB-172警告或库引脚属性capacitance优先级高于库属性指定输入引脚的电容对于输出端口可以使用set_load命令指定电容默认情况下电容为0使用库引脚属性min_capacitance指定输出引脚的最小需驱动电容对于输入端口可以使用set_min_capacitance命令指定最小需驱动电容默认情况下最小需驱动电容为0。如果想要移除最小需驱动电容使用remove_attribute命令。本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别。set_min_capacitance命令的BNF范式有关BNF范式可以参考以往文章为set_min_capacitance capacitance_value object_list //注该命令的object_list参数一定要放在capacitance_value参数后指定最小需驱动电容值capacitance_value是一个非负的电容值代表了需要设置在对象上的最小需驱动电容它的单位要与工艺库中指定的电容单位一致。指定对象列表/集合指定一个列表/集合包含输入端口对象需要注意的是无法直接指定某个单元引脚的最小需驱动电容与set_max_capacitance命令不同的是也无法为设计对象指定最小需驱动电容。对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。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所示的电路图为例逻辑库中使用库属性default_input_pin_cap定义了电容为0.001而库单元CLKBUFX1的输入引脚定义了库引脚属性capacitance为0.001682优先级更高。图1 简单的例子可以使用report_net [get_nets a]命令查看线网a上的总电容假设互连电容为0如图2所示。图2 线网a的总电容可以从图2中看出线网a的总电容满足了库引脚属性的约束但此时单元u1的输出引脚Y驱动的电容为0假设互连电容为0且如果不使用set_load命令输出端口b的电容为0也可以使用report_constraint -min_capacitance命令查看此时设计的整体约束情况如图3所示可以看出此时出现设计规则违例代价函数的值此时恰好为0.001-00.001。图3 最小需驱动电容违例下面使用set_min_capacitance命令设置输入端口的最小需驱动电容为0.002。dc_shell set_min_transition 0.002 [get_ports a]此时的整体约束情况如图4所示可以看出此时出现设计规则违例代价函数的值此时恰好为0.001-00.002-0.0016820.001318。图4 最小需驱动电容违例写在最后1、计算是否满足最小需驱动电容时只会选择最小条件下线网的总电容而不会考虑最大条件下线网的总电容。2、如果使用了增强型引脚负载电容建模则以考虑库引脚属性capacitance的负载总量为准即使用report_cell命令时显示的Load而不是LoadUR或LoadUF关于增强型引脚负载电容建模可以参考下面的博客。Design Compiler增强型引脚负载电容建模LoadUR、LoadUF、LoadLR、LoadLFhttps://blog.csdn.net/weixin_45791458/article/details/156806751?sharetypeblogdetailsharerId156806751sharereferPCsharesourceweixin_45791458spm1011.2480.3001.81183、对于时钟信号等特殊信号其设计规则约束不会被检查具体可见下面的博客。Design Compiler时钟树等高扇出信号在综合时的特性https://blog.csdn.net/weixin_45791458/article/details/154489915?ops_request_miscelastic_search_miscrequest_ide753ed6a1950984ee7d9bfa2a99ce736biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~all~ElasticSearch~search_v2-1-154489915-null-null.541^v3^controlutm_term%E6%97%B6%E9%92%9F%E6%A0%91spm1018.2226.3001.4450