dc max_fanout capacitance load

本文深入解析DC中的设计规则约束,包括set_max_transition, set_max_capacitance, set_max_fanout, set_load及set_driving_cell等命令的使用场景与原则。探讨了这些规则如何影响设计优化,特别是在时钟组、端口和整体设计层面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

set_max_transition

这条命令是用来给指定的时钟组(clock group)、端口(input/output ports)或者设计(design)设置max_transition属性。其单位由工艺库(technology library)定义,一般是纳秒(nanosecond)。缺省的情况下,input or output ports没有max_transition属性约束,其max_transition的值由被驱动单元的输入端口或者驱动单元的输出端口决定。set_max_transition和set_max_capacitance两者的约束有很多重叠部分,一般设置set_max_capacitance属性就可以了,clock group可以由set_max_transition设置下max_transition属性。

set_max_capacitance

这条命令是用来给指定的输入端口(input ports)或者设计(design)设置max_capacitance属性。其单位由工艺库(technology library)定义,一般是皮法(picofarad)。缺省的情况下,input ports or design没有max_capacitance属性约束,综合工具会自动在technology library中查找。需要注意的是,不要施加过度保守的约束,以免限制DC对设计的优化,因为DRC约束的优先级最高。一般不建议使用驱动能力(drive capability)过弱过强的单元(cell),所以可以选择X4驱动强度的BUFFER的max_capacitance作为参考。

set_max_fanout

这条命令是用来给指定的输入端口(input ports)或者设计(design)设置max_fanout属性。如果technology library没有default_max_fanout设定的话,缺省的情况下,综合工具认为是没有上限的。需要注意的是,这条命令使用的单位是fanout_load,而不是绝对的the number of fanout。扇出负载值表示输入引脚相对负载的数目,它并不表示真正的电容负载,而是个无量纲的数字。约束:指定端口所驱动的输入引脚网络或者指定设计中所有网络的fanout_load之和小于max_fanout设定值。库中如果没有默认的扇出负载属性(default_fanout_load)则其将不受扇出负载设计规则的约束。
Note:max_capacitacne、max_fanout属性不能添加到output or bidirectional ports。max_transition、max_capacitance和max_fanout是设计规则约束(DRC:design rule constraint),is must be met。恰当的DRC约束,也可以在POST-ROUTING之后,得到更小的clock skew的CTS。

set_load

这条命令是用来给指定的端口(ports)或者网络(net)设置load属性。其单位由工艺库(technology library)定义,一般是皮法(picofarad)。一般使用这条命令约束输出端口,选用比设计规格上所要求的输出端口更大电容负载作为load属性。 set_driving_cell: 这条命令是用来通过指定的library cell给指定的输入端口(input ports)或者输入输出端口(inout ports)设置驱动属性。一般选用驱动能力较弱的单元,以便综合工具在输入端口后面增加BUFFER TREE增强该输入端口的驱动能力。

Set_max_fanout input_ports ; set_load output_ports

DC确保连接到输入端口的总负载足够小,使扇出不会达到最大值。为什么set_max_fanout命令为什么是约束 input ports的而不是output? DC尝试确保由指定端口或指定设计中的所有网络驱动的net上的输入引脚的fanout_load属性之和小于给定值。也就是说set_max_fanout约束了 由 input port 驱动的net(以及design内部所有nets)上所有相连 的input pin的fanout_load值的总和,而该fanout_load值由lib库中的default_fanout_load定义,这个值一般都为“1”。 由此大家可以简单理解为set_max_fanout约束了某条net上驱动的所有cell的个数的总和,而这条net可以由input port驱动, 也可以使内部的任何一条net; 这也是为什么set_max_fanout命令不是用来约束output ports,因为一个输出端口可能会连有很多条net; 而DC是根据net单独进行分析的; output port的约束使用set_fanout_load命令来约束的,现在一般用set_load命令代替; 注意这里set_fanout_load和lib库中default_fanout_load的值是没有关系的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值