转载来源:数字集成电路低功耗物理实现技术与UPF——孙轶群
我们知道,降低驱动电压VDD,是减小动态功耗最快的方法,因此在满足时序的情况下,适当降低驱动电压,可以有效的减小动态功耗。而设计中可以使用多驱动电压的设计方法,对于速度要求快的电路,供高一些的驱动电压,如1.4V,而速度要求不高的模块,则只需要供比较低的驱动电压,如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
#uDesign/uDMA
load_upf power.upf
……
check_mv_design
compile –scan
check_mv_design
……
这里check_mv_design主要是检查UPF对设计的描述是否正确,在compile之后再做一次是为了查看compile后,电路结构域UPF的描述是否正确。
接着,需要在不同电压电路之间,添加Level_shifters,进行电压转换。如下所示:
check_level_shiftersinsert_level_shifters –all_clock_nets -verbose
DC会根据不同电压域设置operating condition中voltage的数值或者UPF中的描述,查找Level Shifter Cell中input_voltage_range和output_voltage_range满足这些电压域需求的元件,在2个电压域的数据交互信号上添加Level Shifter Cells。