SDC命令详解:使用set_fanout_load命令进行约束
相关阅读
SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482
目录
指定扇出负载值
指定端口列表/集合
简单使用
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_loadvalueports//注:该命令的ports参数一定要放在value参数后
指定扇出负载值
value是一个非负的扇出负载值,它是一个无量纲数值,不是电容也不是真实的扇出数量,它是一种对有效扇出的表示。
指定端口列表/集合
指定一个列表/集合,包含输出端口对象,对于列表而言,如果有多于一个对象,需要使用引号或大括号包围(对使用集合无效),关于列表和集合的区别,可以参考下面的博客。
SDC命令详解:使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571
简单使用
以图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.6=0.1。
dc_shell> set_fanout_load 0.7 [get_ports b]
图3 最大扇出负载(违例)