使能功耗优化
属性design_power_effort是Genus中功耗优化的主要控制属性。可以设为:
- none-关闭功耗优化
- low-在保证面积开销小的情况下优化功耗。适合于非常timing-critical的设计并且对面积和runtime有严格要求
- high-将使用更激进的算法,以牺牲面积和性能的代价来降低功耗。适合主要关注功耗的设计
使用opt_high_effort_lib_cells属性,可以标记只在timing优化后期使用的library cell。这能够帮助限制泄漏电流大的cell的早期使用。这些cell在优化早期被标记为dont use true。
设置leakage vs dynamic 功耗优化比例
使用opt_leakage_to_dynamic_ratio属性来控制逻辑优化评估时的leakage和dynamic的权重。必须时0~1之间的浮点数,0代表只优化dynamic,1代表只优化leakage。
建议使用1位小数例如(0.2、0.3),0.5是一个全局power优化的好的起始设置。
优化功耗的技术
- Genus能够resize gate或将一个高翻转率的信号移到路径后面
- Genus能够重新连接高翻转率的net到低电容的pin上
- Genus能够使用复杂的门吸收高频net成内部net
- internal 功耗依赖输入slew和输出load,提高input slew可以降低动态功耗,对关键路径添加buffer
- Genus可以在高活动因子的net上添加或删除buffer来降低动态功耗
脚本示例
init_design
#read activity data
read_vcd top.pwr_bm.vcd
#enable high-effort power optimization
set_db design_power_effort high
#optimize for both leakage and dynamic power equally
set_db opt_leakage_to_dynamic_ratio 0.5
#restrict usage of ultra-low Vt cells
set_dont_use [get_db lib_cells *ULVT*] true
set_db opt_high_effort_lib_cells [get_db lib_cells *ULVT*]
#run early-physical flow
syn_generic -physical
syn_map -physical
#run dedicated logical incre opt (optional)
syn_opt
#call iSpatial flow
syn_opt -spatial
#report power
report_power
参考资料:
Genus Low Power