link
#读入约束
source design_constraint.tcl
#其他设置
……
#设置最大漏电电流,该设置必须有,否则优化过程不考虑漏电的
优化
set_max_leakage_power 0 mw
#开始编译
compile_ultra
由于综合时,时序信息并不完全准确,特别是setup类的时序。因此可以对setup时序做稍紧一些的约束,使结果进入PR工具后还能够满足时序,如果进入PR后仍然无法满足setup时序,PR工具也可以利用类似的原理进行优化。
如在IC Compiler里,在布线后优化时可以使用如下语句来进行优化:
physopt –preserve_footprint –only_power_recovery –post_route –incremental
这里设置了-preserve_footprint以及-only_power_recovery,因此只是针对相同footprint的单元做漏电功耗优化,也就是说如果某个使用了High VT X2的Buffer需要减小延时,则可以替换成Low VT X2的Buffer,这样做可以保持原有的布线结果。
当出现Multi-VT的单元库后,每个单元库都会多一个default_threshold_voltage_group以及threshold_voltage_group属性来说明该单元库是High VT、标准VT还是Low VT。可以利用report_threshold_voltage_group(DC和IC Compiler都支持)指令报出设计中每种单元库单元占整个设计的百分比,如High VT的单元库占60%,标准VT占25%,等。这样做可以使设计者了解不同VT对自己设计的影响,如果速度不快,则Low VT的库可能占用很少,甚至没有使用,那么完全可以在设计过程中直接不使用该库。
如果库中没有default_threshold_voltage_group变量,我们可以在DC中设置:
set_attr -type string dbtcbn90lphdbwphvtwc.db: dbtcbn90lphdbwphvtwc default_threshold_voltage_group HVT
3.2.3 时钟门控减小不必要的动态功耗
时钟门控单元的插入在3.1.2已经有所描述,这里就不多进行描述了。同样的,标准单元库必须提供相应Cell的库才可以实现。
3.2.4 多供电电压,实现动态功耗与时序的平衡(Multi-Voltage)
我们知道,降低驱动电压VDD,是减小动态功耗最快的方法,因此在满足时序的情况下,适当降低驱动电压,可以有效的减小动态功耗。而设计中可以使用多驱动电压的设计方法,对于速度要求快的电路,供高一些的驱动电压,如 1.3V,而速度要求不高的模块,则只需要供比较低的驱动电压,如1.0V。
对于逻辑综合来说,DC中,首先需要对不同电压域的电路设置不同的operating_condition,综合工具就可以对该电压域电路进行初步分析和优化了。如果使用UPF,则可以直接使用load_upf,工具会根据UPF的描述自动寻找相应的库文件进行分析。如下所示:
set target_library “slow_14V slow 10V
……
read_verilog design_include.v
current_design design_top
link
#set_operating_condition –max slow_10V –max_library slow_10V
#uDesign/uDMA速度快,需要使用1.4V供电
#set_operating_condition –max slow_14V –max_library slow_14V
–object_list \
12 / 26
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库数字集成电路低功耗物理实现技术与UPF(12)在线全文阅读。
相关推荐: