1、新思科技 Thursday, November 18, 2010 窗体顶端 基于IEEE1801(UPF)标准的低功耗设计实现流程 Low-power Implementation Flow Based IEEE1801 (UPF) 郭军, 廖水清, 张剑景 华为通信技术有限公司 jguo@ liaoshuiqing@ zhangjianjing@ Abstract Power consumption is becoming an increasingly important aspect of ASIC design. There are several diffe
2、rent approaches that can be used to reduce power. However, it is important to use these low-power technology more effectively in IC design implementation and verification flow. In our latest low-power chip, we completed full implementation and verification flow from RTL to GDSII successfully and eff
3、ectively by adopting IEEE1801 Unified Power Format (UPF). This paper will focus on UPF application in design implementation with Synopsys low power solution. It will highlight that how to describe our low-power intent using UPF and how to complete the design flow. This paper first illustrates curren
4、t low-power methodology and UPF’s concept. Then, it discussed UPF application in detail. Finally, it gives our conclusion. Key words: IEEE1801, UPF, Low-Power, Shut-Down, Power Gating, Isolation, IC-Compiler 摘要 目前除了时序和面积,功耗已经成为集成电路设计中日益关注的因素。当前有很多种降低功耗的方法,为了在设计实现流程中更加有效的利用各种低功耗的设计方法,我们在最近一款芯片的设计实
5、现以及验证流程中,使用了基于IEEE1801标准Unified Power Format(UPF)的完整技术,成功的完成了从RTL到GDSII的全部过程,并且芯片制造回来成功的完成了测试。本文就其中的设计实现部分进行了详细探讨,重点介绍如何用UPF把我们的低功耗意图描述出来以及如何用Synopsys工具实现整个流程,希望给大家以启发。本文先介绍目前常用的低功耗设计的一些方法特别是用power-gating的方法来控制静态功耗以及UPF的实现方法,然后阐述UPF在我们设计流程中的应用,并在介绍中引入了一些我们的设计经验,最后给出我们的结论。 关键字:IEEE1801, UPF,低功耗, 电源关
6、断,Power-Gating, Isolation, IC-Compiler 1. 简介 1.1 深亚微米设计面临的挑战 随着工艺特征尺寸的缩小以及复杂度的提高,IC设计面临了很多挑战:速度越来越高,面积不断增大,噪声现象更加严重等。其中,功耗问题尤为突出,工艺进入130nm以下节点后,单位面积上的功耗密度急剧上升,已经达到封装、散热、以及底层设备所能支持的极限。随着工艺进一步达到90nm以下,漏电流呈指数级增加(如图1所示),在某些65nm设计中,漏电流已经和动态电流一样大,曾经可以忽略的静态功耗成为功耗的主要部分。功耗已成为继传统二维要素(速度、面积)之后的第三维要素。 图1:
7、 静态功耗与工艺特征尺寸的关系 另外,目前飞速发展的手持电子设备市场,为了增强自身产品的竞争力,也对低功耗提出了越来越高的要求;其次散热问题、可靠性问题也要求IC的功耗越小越好;最后全球都在倡导绿色环保科技理念,保护环境,节约能源。这些都要求IC设计时必须采用低功耗技术,以有效应对这些挑战。 1.2 目前低功耗设计常用的方法 如图2所示,影响功耗的因素有电压、漏电流、工作频率、有效电容等。可以通过降低工作电压、减少翻转负载以及降低电路翻转率等来降低动态功耗;通过减少工作电压以及减少漏 图2: 影响功耗的因素 电流来降低静态功耗。当前,业界采用了各种方法来降低芯片的动态
8、功耗和静态功耗。如图3所示,传统的低功耗技术有时钟关断(Clock-Gating),多域值电压库(Multi-threshold libraries)等;较新的技术有多电压(Multi-Voltage),电源关断(MTCMOS Power Gating),带状态保持功能的电源关断(Power Gating with State Retention),动态电压频率调整(Dynamic Voltage and Frequency Scaling),低电压待机(Low-Vdd Standby)等。 图3: 低功耗技术示例 1.3 控制静态漏电的方法 1.3.1 电路优化(Gate-l
9、evel Optimization) 在设计实现过程中,自动化的综合和布局布线工具可以根据电路的时序特征,来综合优化每条路径中用到的所有标准单元的时序,面积以及功耗。根据负载将非关键路径中的标准单元切换到具有较小驱动能力的单元,由于输出电容减小,可以减小动态功耗;同时,由于标准单元MOS管和电容变小,静态漏电流也同时减小。除了变化驱动能力之外,还可以通过优化电路中的逻辑单元、移动单元物理位置等方法来达到降低功耗的目的。 1.3.2 多域值电压库 (Multi-Threshold) 如图4所示,高域值电压的标准单元漏电流小但速度慢,低域值电压的标准单元则速度快但漏电流大。所以采用多域值电压
10、库作为设计实现的目标库,在设计中尽可能多地用高域值电压的标准单元,仅在关键路径上为了满足时序要求采用低域值电压的标准单元,这样就可以最大限度地减小标准单元的漏电流,从而降低静态功耗。 图4: 漏电流、单元速度与阈值电压三者之间的关系 1.3.3 电源关断 (Power-Gating) 芯片中某些模块在不工作时,可以关断其电源,在需要工作时,再将其电源导通,这就是电源关断技术。它可以使电源关断区域的漏电流降至接近零,极大的减小芯片的静态功耗。现在电源关断的技术也很多,有片内关断、片外关断。顾名思义,片外关断就是在芯片外部通过切断电源来关断芯片内部的某些模块。片内关断又分为精细关断
11、fine-grain)和粗糙关断(coarse-grain),精细关断需要特别库的支持,可以实现每个标准单元的精细关断;而粗糙关断只需要一些门控单元就可以实现对某些模块的电源或地的控制,如图5所示,用pmos来控制电源,用nmos来控制地。 图5: 电源关断(Power-Gating)的原理图 2. UPF的设计实现流程 IEEE1801标准Unified Power Format(UPF)是一个真正意义统一的,被广泛采用的低功耗实现标准。它用一些标准的语句描述用户的低功耗设计意图(Power Intent)。如图6所示, 图6: UPF的应用流程 有了这样一个
12、统一的UPF文件,逻辑综合、物理实现、仿真验证、等效性检查以及最后的sign-off流程就可以按照UPF中对低功耗设计意图的描述来完成整个IC设计实现验证流程。这样贯穿于整个流程的低功耗意图来源于同一个文件,这种一致性可以大大降低低功耗设计的风险性。并且UPF对低功耗设计提供了开放的,多厂商工具支持的流程和解决方案。众多支持UPF标准的EDA供应商的产品证明了它是一个互操作性强的标准。 2.1 Synopsys基于UPF的低功耗设计流程 Synopsys公司提供了完整的基于UPF的低功耗综合、物理实现和验证流程,如图7所示。该流程始于寄存器传输级(RTL)描述的逻辑设计,加上一个独立的描述
13、低功耗设计意图的UPF文件。RTL和UPF描述分别放在独立的文件中,使他们可以单独维护和修改。在这个示例中,最初的UPF文件标志为UPF。 图7: UPF Flow With Synopsys Tools Design Compiler读入RTL和初始UPF描述文件,基于它们综合出门级网表并产生一个更新了的UPF文件,这个Design Compiler输出的UPF文件在示例图中标志为UPF’。UPF’文件中包含了原始UPF文件的内容,并添加了综合时加入的对某些特殊cell(比如isolation cells、level shifters)的电源和地的连接关系。综合输出的门级网表已
14、经被工具根据UPF的相应描述插入了一些低功耗所需的特殊电路单元,比如Level-Shifter,Isolation cells,Retention Register等。 IC Compiler读入综合输出的门级网表和UPF’描述文件,基于它们进行物理实现,包括:布局和布线以及电源关断特殊单元(Power-Gating cell)的插入、摆放和控制信号线的连接等步骤。输出一个新的门级网表,一个包括所有cell的电源和地连接关系的网表(俗称pg网表),以及一个更新了的UPF文件,标志为UPF’’。UPF’’文件包含了UPF’的内容,并添加了在物理实现阶段对低功耗电路结构的改变,比如添加了Powe
15、r Switches(俗称MTCMOS)的连接关系。 这个flow中产生的数据可以用于做功能仿真(利用MVSIM、VCS),插入的低功耗单元的正确性检查(利用MVRC),形式验证(利用Formality),以及时序功耗检查(利用Prime Time-PX)和电压降(IR-Drop)(利用Prime Rail)的验证。 VCS仿真器和MVSIM多电压仿真工具可以在几个阶段用来做多电压的功能仿真:RTL级,综合后加入了低功耗相关器件(比如Isolation cell)的门级,以及PR之后加入了Power Switches的门级。MVRC用于检查多电压设计的规则是否正确实现,包括电源连接关系、电
16、源结构、电源一致性等等,也适用于流程中的各个步骤。 Prime Time读入DC或ICC输出的门级网表以及对应的UPF文件。它利用UPF文件中的信息建立一个虚拟的电源网络模型,并将电压值反标到每个器件的电源端口,进行带电源信息的时序检查。 Prime Rail是基于带UPF信息的版图进行电压降以及电迁移的分析。如果设计中有电源关断单元,它还可以分析相关关断电路的瞬态电流以及动态的电压降分布。来帮助判断这些电源关断单元是否插入合理以及是否需要插入De-cap单元。 2.2 UPF所需要的特殊单元库 基于UPF的设计流程与传统流程相比,需要一些库中特殊单元的支持以及对传统的DB时序库添加电
17、源地的信息。特殊单元包括Level-shifter,Isolation Cell,电源关断单元(Power Gating, 也叫MTCMOS),Retention-Register,以及Always-on单元。下面分别阐述: 2.2.1 Level-Shifter和Isolation Cell 对于多电压设计,需要用Level-shifter来实现不同电压域之间信号的电平转换。根据信号电平由高到低和由低到高的转换,Level-shifter分为两类,其结构分别如图8和图9所示。 图8: High to Low Level-shifters 图9: Low to High
18、Level-shifters 对于电源关断技术,电源关断区域的输出信号在电源关断时处于不定态,这种不定态会导致其负载单元出现内部电流,从而导致不期望的功耗。所以需要在电源关断区域的输出信号上插入Isolation Cell来实现对不定态的隔离。Isolation cell根据钳位值不同分为与型和或型结构,其结构如图10所示。 图10: Basic Isolation Cells 2.2.2 Power-Gating cell,Retention-Register和 Always-on单元 对于电源关断技术,需要Power-Gating Cell(也称MTCMOS)来实现电源的
19、关断。可以选择断开电源(VDD)或地(VSS)的连接来实现Power-Gating,这两种Power-Gating Cell被形象的称为Header-Switch和Footer-Switch。它们的结构如图11所示。 图11: Basic Header-Switch structure and Footer-Switch structure 在电源关断模块有可能要求register对关断前的数据进行锁存或者在电源打开后要求对锁存的数据进行恢复,这就需要特殊的单元Retention-Register。如图12所示,它有两个电源,一个用于模块电源未关断时的工作用电,一个用于模块电源关断时的
20、用电。它还有两个控制信号save和restore,用于控制是否锁存数据或者恢复数据。 图12: Retention-Register 在电源关断模块还有可能需要有些信号线或逻辑长期工作,比如MTCMOS单元的控制信号线,Retention-register的save/restore控制信号,isolation cell的控制信号等。为了实现这种功能,这就需要另外的特殊单元叫always-on cell。如图13所示。 图13 Aways-on单元的应用场合 2.2.3 PG library的准备 除了上述这些特殊单元外,UPF流程的实现还需要用到的logical
21、library(db库)是带PG(Power&Ground)信息的,与传统流程相比要多出下面与PG相关的信息: • pg_pin 的名称,pg_pin 的类型 (如primary, backup 等); • 每个信号管脚(signal pin)与pg_pin的对应关系; • 每个输出信号管脚中power_down_function的定义; • 每个pg-pin的电压数值。 有了上述信息,工具就可以根据UPF里面的描述自动地完成电源网络的连接,电源关断电路的验证,基于UPF里面电源状态表的综合和优化,以及最后输出带PG信息的网表的验证等。其直接带来的好处就是使得流程更完整,更简单,更自
22、动化。 由于UPF应用还不是很普及,Foundry及第三方IP提供商目前提供的db库基本上还没有完全更新到带PG信息的版本,所以需要用户在使用前先转换。ICC和DC都提供了转换PG db库的命令:add_pg _pin_to_db,可以将不带PG信息的db库转换成带PG信息的db库。ICC0809以上版本还提供了add_pg _pin_to_lib命令,可以将不带PG信息的lib库转换成带PG信息的lib库,这样可以更清晰的知道PG库中具体都添加了什么信息。 3. UPF在本芯片设计实现中的应用 本款芯片的设计实现以及验证流程完全采用了如图7中所示的所有Synopsys工具,并且所有实现
23、和验证流程都使用了基于IEEE1801标准Unified Power Format(UPF)的完整技术,成功的完成了从RTL到GDSII的全部过程,并且芯片制造回来成功的完成了功能测试以及低功耗测试。本篇文章着重介绍实现流程中基于UPF的应用,对于验证流程的应用我们不作介绍。在实现过程中我们主要完成了下列工作,如图14所示。 图14: 本芯片实现流程图 • PG library的准备; • UPF文件的准备; • 有了UPF以及PG library,先用Design Compiler对RTL 综合,综合后产生的netlist里面就包含了low-power设 计中除了电源关断单
24、元(MTCMOS)之外的所有的特 殊cell,如:level-shifter, isolation cell等等; • 综合完成后,作了DFT的工作,在这一步骤如果DFT设计中要引入一些特殊单元,工具会自动插入; • DFT之后我们在IC-Compiler完成了所有的布局布线工作,包括:整体规划(floorplan),电源关断单元MTCMOS的插 入、布局以及控制信号的连接,电源网络综合和分析,布局,时钟树综合,布线以及最后一些提高良率方面的工作。 • 布局布线完成后,我们还对timing,SI,Power,IR-DROP等进行了Sign-off分析。 • 在流程中经过每一步我们都用f
25、ormality对包含了UPF的设计作了形式验证,既保证了功能的一致性,也保证了含有低功 耗信息的实现一致性。 下面我们对每一步骤进行详细介绍,其中PG library的准备在2.2章节中已经作了介绍,这里就不再说明。 3.1 本芯片中用到的low power设计意图 在我们最近的这款芯片中,采用了时钟关断(Clock-Gating),多域值电压库(Multi-threshold libraries),电源关断(MTCMOS Power Gating),低电压待机(Low-Vdd Standby)等低功耗技术。 图15和图16分别是芯片电源分区拓扑图和floorplan截图,芯片划分成
26、3个power domain,分别为PD_1、PD_2、PD_TOP。其中PD_1是掉电区,PD_2是降压区,PD_TOP是常开区;PD_2的hierarchy嵌套在PD_1内部,当PD_1掉电时,PD_2可以降压保持数据即可。VDD和VDD_2是芯片外部提供的两个电源,分别提供给PD_TOP和PD_2;而VDD_1是PD_1的内部电源,由VDD经过MTCMOS产生,可以通过控制MTCMOS关断使PD_1掉电。 在进行芯片设计之前,我们要先对芯片的低功耗意图用UPF描述出来,下面的章节做详细的阐述。 图15: 芯片电源分区拓扑图 图16: 芯片floorplan截图
27、 3.2 用UPF对本芯片设计意图的描述 在UPF中,包含了所有对low-power设计意图的描述,比如:芯片中有哪些相对独立的电源模块;每个电源模块中用到哪些电源或地;如果有电源关断模块的话还要描述其关断的方式及控制;每一个电源的各种工作模式(工作电压或是否关断);特殊单元的规划等。下面章节将根据本芯片中用到的low-power意图(如图15和图16所示)分别介绍如何用UPF描述这些意图。 3.2.1 UPF对Power Domain的描述 在UPF中,首先要对所有的Power domain进行定义。先设定顶层的power domain,然后描述PD_1和PD_2这两个power do
28、main。如下所示: # power domain definitions create_power_domain PD_TOP –include_scope create_power_domain PD_1 –elements BLOCKA create_power_domain PD_2 –elements BLOCKB 3.2.2 UPF对Power Network的描述 然后根据电源分区拓扑图,要清晰地描述各个power domain里面的电源网络(Power Network),如下所示,详细的定义了每个domain里面的电源线的名称以及和芯片原始电源输入端口的连接关系。
29、 # supply nets definitions create_supply_net VDD –domain PD_TOP create_supply_net VDD –domain PD_1 –reuse create_supply_net VDD_2 –domain PD_TOP create_supply_net VDD_2 –domain PD_1 –reuse create_supply_net VDD_2 –domain PD_2 –reuse create_supply_net VDD_1 –domain PD_1 create_supply_net VSS –
30、domain PD_TOP create_supply_net VSS –domain PD_1 –reuse create_supply_net VSS –domain PD_2 –reuse #define the primary power/ground for power domains set_domain_supply_net PD_TOP –primary_power_net VDD –primary_ground_net VSS set_domain_suupply_net PD_1 –primary_power_net VDD_1 –primary_ground_n
31、et VSS set_domain_supply_net PD_2 –primary_power_net VDD_2 –primary_ground_net VSS # power ports definitions create_supply_port VDD –domain PD_TOP –direction in create_supply_port VDD_2 –domain PD_TOP –direction in create_supply_port VSS –domain PD_TOP –direction in #connect the supply net to
32、power port connect_supply_net VDD –ports VDD connect_supply_net VDD_2 –ports VDD_2 connect_supply_net VSS –ports VSS 3.2.3 UPF对Power Gating的描述 本设计中含有电源关断模块,需要在UPF中定义电源关断单元(Power Gating cell),描述该单元的电源输入输出,以及控制信号的连接。如下所示。 create_power_switch SW1 –domain PD_1 –output_supply_port {VDD_OUT VDD_1} \
33、 –input_supply_port {VDD_IN VDD} –control_port {PW_CTRL pd1_pw_en} –on_state \ {PW_ON VDD_IN {PW_CTRL}} –ack_port {{PW_ACK pd1_pw_ack} 该条命令中VDD_1是VDD经过该单元后的电源名称,pd1_pw_en是控制信号,当该控制信号为高的时候,VDD_1接通VDD使电路处于开启状态。除了该控制信号,该单元还输出一个叫pd1_pw_ack的响应信号。 至于如何在物理上实现Power Gating cell的插入以及控制信号的连接,这个要在IC Compile
34、r里面完成,后面的章节里面有详细的介绍。 3.2.4 UPF对Isolation的描述 因为芯片中有关断模块,从功能上为了处理模块关断后信号输出的稳定性,还需要增加关断电源模块处于关断时如何插入isolation单元的描述。如下所示,以PD_1的边界信号定义为例: 指定其所有输入信号都不插入isolation cell,输出信号默认插入箝位到0的isolation cell,对其中两个特殊信号插入箝位到1的isolation cell。并且定义了Isolation cell的控制信号,以及插入的位置是在PD_TOP domain。 set_isolation pd1_iso_in –d
35、omain PD_1 –no_isolation –applies_to inputs set_isolation pd1_iso_low –domain PD_1 –isolation_power_net VDD –isolation_ground_net \ VSS –clamp_value 0 –applies_to outputs set_isolation_control pd1_iso_low –domain PD_1 –isolation_signal iso_en –isolation_sense high \ –location parent set_isolation
36、 pd1_iso_high –domain PD_1 –isolatioin_power_net VDD –isolation_ground_net \ VSS –elements {BLOCKA/pin1 BLOCKA/pin2} –clamp_value 1 set_isolation_control pd1_iso_high –domain PD_1 –isolation_signal iso_en –isolation_sense \ high –location parent 3.2.5 UPF对Power State的描述 在UPF里面,还有一个非常重要的部分,那就是描述电
37、源状态表(Power State Table),简称PST,也就是说要描述各个电源有哪些工作模式。有了这个表格,工具就可以判断是否需要在各个电源模块之间插入特殊的单元。 本芯片共有三种工作模式,pst_pd1_ON是正常模式,三个domain都是1.2V供电;pst_pd1_OFF是掉电模式,PD_1掉电,其他两个domain是1.2V供电;pst_pd2_LOW是掉电降压模式,PD_1掉电,PD_2降压到0.8V供电,仅保持数据。 add_port_state VDD –state {NOR_VOL 1.2} add_port_state VDD_1 –state {NOR_VOL 1
38、2} add_port_state VDD_1 –state {OFF_VOL off} add_port_statte VDD_2 –state {NOR_VOL 1.2} add_port_state VDD_2 –state {LOW_VOL 0.8} create_ps top_pst –supplies [list VDD VDD_1 VDD_2] add_pst_state pst_pd1_ON –pst top_pst –state {NOR_VOL NOR_VOL NOR_VOL} add_pst_state pst_pd1_OFF –pst top_pst –s
39、tate {NOR_VOL OFF_VOL NOR_VOL} add_pst_state pst_pd2_LOW –pst top_pst –state {NOR_VOL OFF_VOL LOW_VOL} 完整的UPF请参考附件7.1。 3.3 UPF在Design Compiler中的应用 根据图14中的流程介绍,UPF准备好就可以进行综合和DFT的工作了。在这一步,Isolation cell、level shifters、Retention Registers等特殊单元都要正确的实现插入,而且也要插入clock gating来优化动态功耗以及用多个阈值电压的库来优化静态功耗。
40、如图17所示,在DC中,首先把所有不同阈值电压的标准单元库都设置到target_library以及link_library里面去,工具在综合优化的时候,就可以根据路径上timing的是否关键来尽量平衡标准单元速度与静态功耗的关系,关键路径上,尽量选择低阈值电压/速度快的单元,但在非关键路径上,就尽量选择高阈值电压/静态功耗小的单元。 在读入RTL后,需要用load_upf的命令读入 UPF文件,然后在compile时,工具会根据UPF的设置,自动插入Isolation cell、level shifters、Retention Registers等特殊单元(在我们这个设计中,仅需插入Isol
41、ation cells),并正确连接这些特殊单元的控制信号。 另外,为了优化动态功耗,我们在综合阶段让DC自动插入了Clock Gating。设置也很简单,只要在 compile_ultra命令后面加上clock_gating的选项就可以了。 图17: UPF flow in Design Compiler 综合完成后,除MTCMOS没有插入外,其他特殊单元都已经按UPF描述的设计意图插入并连接。 综合后我们还要插入DFT相关结构,再做一个增进式的优化。在这两个过程中,如果DFT引入的电路根据UPF的要求需要插入特殊单元的话,工具会自动判断并在insert_dft或者comp
42、ile命令执行的时候自动插入。比如,DFT插入的扫描链从电源关断模块连接到了其它非关断模块,这个时候根据UPF里面的规定,从关断区到非关断区要经过isolation cell的过渡,工具会自动判断到这一点,在需要的地方插入这些单元。 在综合和DFT的各个阶段,可以利用DC提供的命令check_mv_design对低功耗设计进行规则检查,确保没有违反UPF里面定义的相关规则。 最后,DC输出网表和UPF。也可以直接输出DDC或者直接写入到Milkyway数据库里面去,这两种方式都包含了网表和UPF信息,可以直接作为物理实现工具ICC的输入。 在综合前后我们都用Formality对输入和输出
43、的RTL或netlist进行了带UPF的比对,以确保每一步骤电路在形式上没有发生改变。 3.4 UPF在IC Compiler中的应用 图18: UPF flow in IC Compiler IC Compiler的UPF流程如图18所示,可以直接用DC输出的mw库或ddc文件,里面已经包含了UPF信息。我们采用的是读入网表加UPF的方式。 首先我们需要在读入verilog网表以后,把UPF文件导入到ICC中: load_upf $ICC_IN_UPF_FILE 读入netlist以及upf后就可以作整体规划(floorplan)了,在这个阶段主要有下面的工作: •
44、在floorplan之前,要正确设置芯片的工作条件(operating_condition)以及用set_voltage命令对所有的电源和地设置正确的工作电压值。工具会根据这些设置来选择正确的单元进行时序计算。 • 读入UPF之后,ICC已经知道设计中有哪些power domain以及每个power domain里面有哪些电源、地。但这个时候ICC还没有把各个power domain里面所有cell中电源、地的端口与UPF里面定义的电源、地连接起来。需要运行下面的命令,所有power net会根据UPF中的描述自动创建,所有cells的电源也会根据UPF中的描述自动连接: derive_p
45、g_connection –create_net derive_pg_connection –reconnect 另外derive_pg_connection命令在ICC每一次优化后都要执行一次,以对新加入的cell进行电源、地的连接。 • UPF里面虽然已经有了power domain的定义,但在物理上这些不同的电源域还没有固定的位置和形状。这就需要创建voltage area,每一个power domain都对应一个voltage area。但如何根据UPF文件中描述的power domain创建Voltage Area呢?我们这里也有些经验,在创建voltage area之前,我们
46、可以用ICC里virtual-flat placement对全芯片进行一个快速的布局,然后根据布局的结果就可以知道与各个电源域相对应的各个模块的大体物理分布,从而帮助我们在这些区域来创建相应的voltage area。在UPF里面定义了三个power domain(PD_TOP, PD_1和PD_2),不过对于PD_TOP,ICC会自动的创建一个默认的Voltage Area(DEFAULT_VA), 对于另外两个Power domain,我们利用create_voltage_area命令创建Voltage Area。Voltage area的位置确定了,但其形状也与很多因素有关,可以是矩形也
47、可以是多边形,总之,其位置和形状的最后确定可能会经过一些反复,因为这与设计最终布局布线的结果息息相关,创建不好,可能影响设计的时序,也可能影响设计的布线等。 • 所有voltage area都创建好后,就可以对关断电源区域插入电源关断单元(power gating cell)了。在我们这个设计里,PD_1是电源关断域,需要在这个电源模块里面插入MTCMOS(power gating cell)。在插入之前,用map_power_switch命令指定要使用的MTCMOS单元名称及相对应的power domain名字。然后用add_header_footer_cell_array命令按指定的阵列
48、插入MTCMOS单元,如图19所示。设计中有可能因为voltage area形状的原因或者因为macro的影响,可能要求按不规则阵列插入MTCMOS单元,可以通过多个add_header_footer_cell_array命令叠加来实现,或者手动移动MTCMOS的位置,然后再将其位置固定。如图22所示,在我们的设计中电源关断区域就有个非常大的macro,为了照顾这个大macro上的供电充足,我们就在其周围插入了密度比较大的MTCMOS单元。所以MTCMOS的插入和摆放跟整体规划中voltage area以及属于这个区域的macro的规划都有紧密关系。我们使用的是有一组控制信号(NSLEEPIN
49、和NSLEEPOUT)的MTCMOS单元,其结构如图20所示:NSLEEPIN是MTCMOS打开或者关断的控制输入信号,NSLEEPOUT是NSLEEPIN信号经过MTCMOS单元后输出的响应信号。这些控制和响应信号在MTCMOS插入后还需要把他们都互相连接起来。连接的方法也有很多种,我们采用的是链状的连接方法。如图21所示。ICC提供了命令connect_power_switch来自动的实现这个功能。 图19 Column placement of MTCMOS cells 图20: Single input header control signal connections 图21: MTCMOS cells chain connections 最后,MTCMOS单元在版图中的位置及控制信号连接关系如图22所示: 图22: MTCMOS placement in the layout map • 现在voltage area已经创建,MTCMOS单元也已经摆放连接好了。下一步就开始做power plan了,也就是电源网络的规划。由于VSS在每个power domain都是一样的。所以三个power domain的VSS mesh是连在一起。True VDD(VDD)在






