知识星球还有分享 3万字-129页的低功耗技术合集 精编版以及56万字+的个人笔记,更多干货知识以及后端笔记、视频教程等,欢迎加入星球进行查看。
《UPF与低功耗设计实现实例 -- 附UPF与DC综合脚本》本文摘自《数字集成电路低功耗物理实现技术与UPF》孙轶群 sun.yiqun@nationz.com.cn这里提供一个DEMO(pl8051_extend_chip),可以使读者更快的理解低功耗设计的基础。下图所示,是该设计的功能结构图:
图4.1 pl8051_extend_chip功能结构图由图41可以看出,整个设计主要是由一个8051控制器,通过SFR总线对其他模块进行控制,U_Des是一个算法模块,U_Pcu是功耗控制单元(Power Control Unit)。整个设计都在Clk的控制下进行工作,只有U_Des工作在ClkF下。
这里假设Clk(28ns)是ClkF(7ns)的4分频时钟,且与ClkF同源同向,这样才可以保证U_Des控制的正确性。
由于U_Des需要在较快的频率下工作,因此需要对U_Des进行一些特殊的设计,也就是对整个设计进行低功耗设计,如下所示:
1. 2个电压域,TOP以及DES_DOMAIN。2. 电源设计外部提供,分1.2V的VDD12和1.0V的VDD103. 设计中除DES电路几乎所有电路工作在1.0V的VDD电压域。4. U_Des由于工作速度要求较高,工作在1.2V的VDD12电压域DES_DOMAIN,但由于不使用的时候需要关断,以降低静态功耗,因此,通过一组PowerSwitch进行控制,控制信号来源为U_Pcu的PcuSfrDatOut[0]输出。该电压域与TOP电压域共用VSS地信号。5. 由于U_Des电路处于VDD12电压域,而U_Pcu处于VDD电压域,因此需要添加Level Shifter进行电平转换。6. U_Des电路输出信号,需要通过一个Isolation Cell,在关断电源时提供稳定电平,而该电平为1.2V,因此还需要利用Level Shifter转换成1.0V电压域信号,Isolation Cell的Enable信号来自于U_Pcu模块的PcuSfrDatOut[1]信号。7. U_Des电路中的寄存器需要使用Retention Register,save和restore控制信号分别来自于U_Pcu输出PcuSfrDatOut[2]和PcuSfrDatOut[3]经过Level Shifter产生的信号。Synopsys公司为低功耗设计提供了一整套的解决方案,即UPF设计流程。UPF(Unify Power Format)是一种描述功耗设计思想的文件,Synopsys Galaxy Implementation Platform只需要读取UPF文件,就可以将低功耗设计思路实现,而Synopsys Discovery Verification Platform读取UPF后,可以对低功耗思路以及最终实现的电路进行验证。接下来,我们利用UPF描述该DEMO的功耗设计思路。首先申明电压域,并申明VDD、VDD12以及VSS等电压端口:create_power_domain DES_DOMAIN_domain –elements U_Des |
根据上述指令,工具会识别出如下图所示中画圈的信息,电压域及虚拟电压端口开始出现:需要注意的是电压端口只不过是虚拟存在的,并不是一定在顶层连接。接着申明每个电压域中的电源网络,建议从顶层往底层进行申明,如首先申明TOP的VSS、VDD:接着申明DES_DOMAIN的电源网络,但需要注意的是,如果需要插入Level Shifter,最好是在与其有连接关系的电源域(TOP)同时申请电源线,并连接起来:create_supply_net VDD12 –domain DES_DOMAIN –reuse #DES_DOMAIN的VDD12与TOP的VSS共用一个网络,因此需要-reusecreate_supply_net VDD12G –domain DES_DOMAIN -reusecreate_supply_net VSS –domain DES_DOMAIN –reusecreate_supply_net VDD –domain DES_DOMAIN –reuse |
connect_supply_net VDD12 –port {VDD12} connect_supply_net VDD –port {VDD}connect_supply_net VSS–port {VSS} |
最后为每个电源域申明主电源网络来源,主电源就是该电压域普通逻辑工作使用的电源:set_domain_supply_net TOP –primary_power_net VDD –primary_ground_net VSS set_domain_supply_net DES_DOMAIN –primary_power_net VDD12G –primary_ground_net VSS |
这添加Power Switch主要是2步,第一步创建Power Switch,第二步map Power Switch。可以参看以下脚本进行:create_power_switch des_sw -input_supply_port {in VDD12} -output_supply_port {out VDD12G} -control_port {des_po U_Pcu/PcuSfrDatOut[0]} -on_state {state_on in {!des_po}} -off_state {OFF {des_po}} |
create_power_switch和map_power_switch在综合时只会检查语法,不会有实际效果,但在综合时将该UPF指令读入系统,可以由DC输出相应的UPF给Synopsys的PR工具,PR工具可以自动识别这些指令,到时才会真正添加Power Switch。2句命令的结果示意在下图画圈中:4.4 建立电源状态表格(Power State Table, PST)在Power Switch插入以后,需要对电压域的有效电压,以及不同电压域之间的关系进行设置,同时建立电压分布及关断的情景(scenarios),可以用于静态电压分析、仿真等。add_port_state VDD –state {LV 1.0} #VDD是1.0V,属于低电压域(LV)状态 add_port_state VDD12 –state {HV 1.2} #VDD12是1.2V,属于高电压域(HV)状态add_port_state des_sw/out –state {HV 1.2} #Power Switch输出是1.2V,属于高电压域(HV)状态 -state {OFF off}#关闭状态(OFF),无电压(off)add_port_state VSS –state {ON 0.0} #VSS处于常开状态(ON),电压0Vcreate_pst design_pst –supplies {VDD VDD12 VDD12G} #建立一个PST,由3个电源状态不同组成add_pst_state design_work –pst design_pst –state {LV HV HV} #design_work状态下,三组电源都开add_pst_state stand_by –pst top_pst –state {LV HV OFF} #stand_by状态下,des_sw/out输出电源为关闭状态 |
需要注意add_pst_state的-state括号里的描述顺序,必须与create_pst的-supplies里一致,选择的状态必须与add_port_state的-state里描述的一致才可以。这样就建立了下表所示的PST,design_pst:由此建立了PST,分析工具或仿真工具就知道需要对哪些状态进行分析了。下面需要为DES_DOMAIN输出给TOP的输出信号添加Isolation Cell。脚本如下所示: set_isolation des_iso_out -isolation_power_net VDD12 -isolation_ground_net VSS #隔离后只有VDD12供电 -applies_to outputs #对于所有输出添加set_isolation_control des_iso_out -isolation_signal U_Pcu/PcuSfrDatOut[1] -isolation_sense high #控制信号为高时ISO有效 -location self # Isolation Cell添加在DES_DOMAIN里面 |
4.6 替换Retention Register Cell接着需要使用Retention Register Cell将DES_DOMAIN中在关断电源后需要保留数据的寄存器替换为Retention Register Cell,可以使用如下脚本:set_retention des_ret -domain DES_DOMAIN -retention_power_net VDD12G -retention_ground_net VSS #retention_power_net是关电的Power,表示需要保持VDD12G电源域的数据set_retention_control des_ret -domain DES_DOMAIN -save_signal {U_Pcu/PcuSfrDatOut[2] high} -restore_signal {U_Pcu/PcuSfrDatOut[3] low}map_retention_cell des_ret#RSDFCSD1是带有异步置位的Retention Register Type,可以从lib文件中retention_cell属性中看到。 |
图4.9 替换Retention Register Cell插入Level Shifters是根据PST的定义进行,根据PST定义看来,DES_DOMAIN和TOP之间需要插入Level Shifters,其中DES_DOMAIN输出的pin(Isolation Cell的输出)需要插入H->L的Level Shifter,而其输入则需要插入L->H的Level Shifter。插入Level Shifter在Compile过程中自动进行,也可以利用UPF命令set_level_shifter定义插入的规则。插入Level Shifter后产生的电路变化示意图如下图画圈处所示:create_power_domain DES_DOMAIN -elements U_Descreate_supply_net VDD -domain TOPcreate_supply_net VDD -domain DES_DOMAIN -reuseconnect_supply_net VDD -port VDDcreate_supply_net VSS -domain TOPcreate_supply_net VSS -domain DES_DOMAIN -reuseconnect_supply_net VSS -port VSScreate_supply_net VDD12 -domain TOPcreate_supply_net VDD12 -domain DES_DOMAIN -reuseconnect_supply_net VDD12 -port VDD12create_supply_net VDD12G -domain DES_DOMAINcreate_supply_net VDD12G -domain TOP -reuseset_domain_supply_net TOP -primary_power_net VDD -primary_ground_net VSSset_domain_supply_net DES_DOMAIN -primary_power_net VDD12G -primary_ground_net VSScreate_power_switch des_sw -input_supply_port {in VDD12} -output_supply_port {out VDD12G} -control_port {des_po U_Pcu/PcuSfrDatOut[0]} -on_state {state_on in {!des_po}} -off_state {OFF {des_po}}set_isolation des_iso_out -isolation_power_net VDD12 -isolation_ground_net VSSset_isolation_control des_iso_out -isolation_signal U_Pcu/PcuSfrDatOut[1]set_retention des_ret -domain DES_DOMAIN -retention_power_net VDD12G -retention_ground_net VSSset_retention_control des_ret -domain DES_DOMAIN -save_signal {U_Pcu/PcuSfrDatOut[2] high} -restore_signal {U_Pcu/PcuSfrDatOut[3] low}map_retention_cell des_retset_level_shifter des_ls_lhset_level_shifter des_ls_hladd_port_state VDD -state {LV 0.84}add_port_state VDD12 -state {HV 1.08}add_port_state VSS -state {ON 0.0}add_port_state des_sw/out -state {HV 1.08}create_pst design_pst -supplies {VDD VDD12 VDD12G VSS}add_pst_state design_work -pst design_pst -state {LV HV HV ON}add_pst_state stand_by -pst design_pst -state {LV HV OFF ON} |
4.9 DC UPF Flow Script Demosource -e ../scr/synopsys_dc.setup source -e ../scr/ variable.tclset_clock_gating_style -min ${CG_MIN_BITWIDTH} -max_fanout ${CG_MAX_FANOUT} -sequential_cell ${CG_SEQ_CELL} -positive_edge_logic ${CG_POS_CELL_LIST} -negative_edge_logic ${CG_NEG_CELL_LIST} -control_point ${CG_CONTROL_POINT} -control_signal ${CG_CONTROL_SIGNAL} -setup ${CG_SETUP_VALUE} -hold ${CG_HOLD_VALUE}set_operand_isolation_style -logic adaptiveset_operand_isolation_slack 0.1set_svf ${NETLIST_PATH}${top}${VER}.svfread_verilog ${RTL_INCLUDE}load_upf ${SCRIPT_PATH}power.upfset auto_insert_level_shifters_on_clocks all ;#can be added in backend flowset_voltage 1.08 -object_list {VDD12 VDD12G}set_voltage 0.84 -object_list VDDset_voltage 0.0 -object_list VSSsource -e -v ${SCRIPT_PATH}timing.tcl#M1~M9 are avaliable, M1 will be used by STD#set_ignored_layers -min_routing_layer M4set_ignored_layers -max_routing_layer M7report_ignored_layers > ${REPORT_PATH}${top}_ignored_layers.rptset_clock_gating_check -setup ${CG_SETUP_CHECK} -hold ${CG_HOLD_CHECK} [all_clocks]set_fix_multiple_port_nets -feedthroughs -outputs -buffer_constantset_attr -type string tcbn90lphpwc0d70d9_pg.db:tcbn90lphpwc0d70d9 default_threshold_voltage_group SVT_LS_LHset_attr -type string tcbn90lphphvtwc0d70d9_pg.db:tcbn90lphphvtwc0d70d9 default_threshold_voltage_group HVT_LP_LHset_attr -type string tcbn90lphpwc0d7_pg.db:tcbn90lphpwc0d7 default_threshold_voltage_group SVT_LVset_attr -type string tcbn90lphphvtwc0d7_pg.db:tcbn90lphphvtwc0d7 default_threshold_voltage_group HVT_LVset_attr -type string tcbn90lphpwc_pg.db:tcbn90lphpwc default_threshold_voltage_group SVTset_attr -type string tcbn90lphphvtwc_pg.db:tcbn90lphphvtwc default_threshold_voltage_group HVTset_attr -type string tcbn90lphphvtcgwc_pg.db:tcbn90lphphvtcgwc default_threshold_voltage_group HVT_CGset_attr -type string tcbn90lphphvtwc0d90d9_pg.db:tcbn90lphphvtwc0d90d9 default_threshold_voltage_group HVT_ISOset_attr -type string tcbn90lphphvtwc0d90d7_pg.db:tcbn90lphphvtwc0d90d7 default_threshold_voltage_group HVT_LS_HLset_attr -type string tcbn90lphpwc0d90d7_pg.db:tcbn90lphpwc0d90d7 default_threshold_voltage_group SVT_LS_HL compile_ultra -scan -no_autoungroup -no_boundary_optimizationchange_names -rules verilog -hierarchywrite -format ddc -hierarchy -output ${DDC_PATH}${top}_noscan${VER}.ddcwrite -format verilog -hierarchy -output ${NETLIST_PATH}${top}_noscan${VER}.vset write_sdc_output_lumped_net_capacitance falseset write_sdc_output_net_resistance falsewrite_sdc -version 1.5 ${SDC_PATH}${top}_cons${VER}.sdccheck_design > ${REPORT_PATH}${top}_check_design_postcomp.rptreport_area > ${REPORT_PATH}${top}_area.rptcheck_mv_design –verbose > ${REPORT_PATH}${top}_check_mv_design.rptreport_constraint -all > ${REPORT_PATH}${top}_all_vio.rptreport_clock_gating -gating_elements >> ${REPORT_PATH}${top}_icg.rptreport_operand_isolation -verbose -isolated > ${REPORT_PATH}${top}_opiso.rptreport_threshold_voltage_group > ${REPORT_PATH}${top}_VT.rptreport_threshold_voltage_group -verbose >> ${REPORT_PATH}${top}_VT.rptsave_upf ${NETLIST_PATH}${top}${VER}_dc.upf #upf’ for next part of flow |
本文从CMOS电路功耗原理入手,针对不同工艺尺寸下数字集成电路的低功耗物理实现方法进行描述,并通过一个例子介绍了Synopsys UPF(Unified Power Format)文件对低功耗设计的描述原理。UPF是Synopsys公司提出的一种对芯片中电源域设计进行约束的文件格式。通过与UPF格式匹配的Liberty文件,UPF约束文件可以被整套Galaxy物理实现平台的任何一个环节直接使用,并将设计者的电源设计约束传递给设计工具,由工具完成设计的实现工作,从而实现整套数字集成电路低功耗物理实现的流程。[1] Page 14, “Low Power Methodology Manual For System on Chip Design.”, Micheal Keating, David Flynn, Robert Aitken, Alan Gibbons, KaiJian Shi, ISBN 978-0-387-71818-7[2] Page 42, “Low Power Methodology Manual For System on Chip Design.”, Micheal Keating, David Flynn, Robert Aitken, Alan Gibbons, KaiJian Shi, ISBN 978-0-387-71818-7[3] Page 2-29, “Library Compiler™ User Guide: Modeling Timing, Signal Integrity, and Power in Technology Libraries Version A-2007.12, December 2007”[4] Page 2-32, “Library Compiler™ User Guide: Modeling Timing, Signal Integrity, and Power in Technology Libraries Version A-2007.12, December 2007”[5] Page 46, “Low Power Methodology Manual For System on Chip Design.”, Micheal Keating, David Flynn, Robert Aitken, Alan Gibbons, KaiJian Shi, ISBN 978-0-387-71818-7[6] Page 2-23, “Library Compiler™ User Guide: Modeling Timing, Signal Integrity, and Power in Technology Libraries Version A-2007.12, December 2007”[7] Page 55, “Low Power Methodology Manual For System on Chip Design.”, Micheal Keating, David Flynn, Robert Aitken, Alan Gibbons, KaiJian Shi, ISBN 978-0-387-71818-7[8] Page 2-46, “Library Compiler™ User Guide: Modeling Timing, Signal Integrity, and Power in Technology Libraries Version A-2007.12, December 2007”[9] Page 2-11, “Library Compiler™ User Guide: Modeling Timing, Signal Integrity, and Power in Technology Libraries Version A-2007.12, December 2007”[10]Page 2-2, “Library Compiler™ User Guide: Modeling Timing, Signal Integrity, and Power in Technology Libraries Version A-2007.12, December 2007”
3、多电源电压(Multi VDD Circuit Technology)4、动态电压频率调整(Dynamic Voltage Frequency Scaling, DVFS)
目前星球中一共分享了20本+系统性的、整理成册的笔记,高达56万字+,2024年星球将分享更多私人笔记,逐步完善整个IC设计生态。《Timing/DRV修复的专题笔记》 《ICC2 flow教程》 《Makefile在IC设计中的应用》和 《RedHawk教程笔记》 等等。- IR drop的分析与修复总结 - 4.3千字,20页
- 数字后端理论及实践-ICC干货笔记 - 11万字,423页
- 数字后端理论及实践-Innouvs教程(第4版)- 5.7万字,316页
- 数字后端理论及实践-Innouvs教程(第5版)- 11.8万字,635页
- 面试笔试题整理 面试笔试经验分享(第1版)- 1.6万字,48页
- 面试笔试题整理 面试笔试经验分享(第2版)- 2.3万字,87页
- ICC2 ICC与Innovus的命令对照(第1版)
- Tcl与DesignCompiler教程(第1版)- 6.1万字,183页
- DRC规则讲解、DRC的检查与修复(第1版)- 7.3千字,26页
- Congestion的分析与修复专题(第1版)- 1.2万字,41页
- Perl-Tk教程(第1版)- 1.6万字 73页
- 星球精华推文分类整理合集(第1版)- 1.8万字,75页
- 星球精华推文分类整理合集(第2版)- 4.4万字,160页
- 面试笔试题整理 面试笔试经验分享(第3版)- 2.7万字,96页
- 星球精华推文分类整理合集(第3版)- 6.6万字,240页
- 时序分析与sdc专题笔记(第1版) - 3.1万字,115页
- 星球精华推文分类整理合集(第4版)- 8.4万字,296页
- 面试笔试题整理 面试笔试经验分享(第4版)- 3.2万字,103页