admin管理员组

文章数量:1567260

2024年6月2日发(作者:)

新思科技

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 different 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 effectively 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 current 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

摘要

目前除了时序和面积,功耗已经成为集成电路设计中日益关注的因素。当前有很多种

降低功耗的方法,为了在设计实现流程中更加有效的利用各种低功耗的设计方法,我们在

最近一款芯片的设计实现以及验证流程中,使用了基于IEEE1801标准Unified Power

Format(UPF)的完整技术,成功的完成了从RTL到GDSII的全部过程,并且芯片制造

回来成功的完成了测试。本文就其中的设计实现部分进行了详细探讨,重点介绍如何用UPF

把我们的低功耗意图描述出来以及如何用Synopsys工具实现整个流程,希望给大家以启

发。本文先介绍目前常用的低功耗设计的一些方法特别是用power-gating的方法来控制

静态功耗以及UPF的实现方法,然后阐述UPF在我们设计流程中的应用,并在介绍中引

入了一些我们的设计经验,最后给出我们的结论。

关键字:IEEE1801, UPF,低功耗, 电源关断,Power-Gating, Isolation, IC-Compiler

1. 简介

1.1 深亚微米设计面临的挑战

随着工艺特征尺寸的缩小以及复杂度的提高,IC设计面临了很多挑战:速度越来越高,

面积不断增大,噪声现象更加严重等。其中,功耗问题尤为突出,工艺进入130nm以下

节点后,单位面积上的功耗密度急剧上升,已经达到封装、散热、以及底层设备所能支持

的极限。随着工艺进一步达到90nm以下,漏电流呈指数级增加(如图1所示),在某些

65nm设计中,漏电流已经和动态电流一样大,曾经可以忽略的静态功耗成为功耗的主要

部分。功耗已成为继传统二维要素(速度、面积)之后的第三维要素。

图1: 静态功耗与工艺特征尺寸的关系

另外,目前飞速发展的手持电子设备市场,为了增强自身产品的竞争力,也对低功耗

提出了越来越高的要求;其次散热问题、可靠性问题也要求IC的功耗越小越好;最后全球

都在倡导绿色环保科技理念,保护环境,节约能源。这些都要求IC设计时必须采用低功耗

技术,以有效应对这些挑战。

1.2 目前低功耗设计常用的方法

如图2所示,影响功耗的因素有电压、漏电流、工作频率、有效电容等。可以通过降

低工作电压、减少翻转负载以及降低电路翻转率等来降低动态功耗;通过减少工作电压以

及减少漏

图2: 影响功耗的因素

电流来降低静态功耗。当前,业界采用了各种方法来降低芯片的动态功耗和静态功耗。

如图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-level Optimization)

在设计实现过程中,自动化的综合和布局布线工具可以根据电路的时序特征,来综合

优化每条路径中用到的所有标准单元的时序,面积以及功耗。根据负载将非关键路径中的

标准单元切换到具有较小驱动能力的单元,由于输出电容减小,可以减小动态功耗;同时,

由于标准单元MOS管和电容变小,静态漏电流也同时减小。除了变化驱动能力之外,还

可以通过优化电路中的逻辑单元、移动单元物理位置等方法来达到降低功耗的目的。

1.3.2 多域值电压库 (Multi-Threshold)

如图4所示,高域值电压的标准单元漏电流小但速度慢,低域值电压的标准单元则速

度快但漏电流大。所以采用多域值电压库作为设计实现的目标库,在设计中尽可能多地用

高域值电压的标准单元,仅在关键路径上为了满足时序要求采用低域值电压的标准单元,

这样就可以最大限度地减小标准单元的漏电流,从而降低静态功耗。

图4: 漏电流、单元速度与阈值电压三者之间的关系

1.3.3 电源关断 (Power-Gating)

芯片中某些模块在不工作时,可以关断其电源,在需要工作时,再将其电源导通,这

就是电源关断技术。它可以使电源关断区域的漏电流降至接近零,极大的减小芯片的静态

功耗。现在电源关断的技术也很多,有片内关断、片外关断。顾名思义,片外关断就是在

芯片外部通过切断电源来关断芯片内部的某些模块。片内关断又分为精细关断(fine-grain)

和粗糙关断(coarse-grain),精细关断需要特别库的支持,可以实现每个标准单元的精细关

断;而粗糙关断只需要一些门控单元就可以实现对某些模块的电源或地的控制,如图5所

示,用pmos来控制电源,用nmos来控制地。

图5: 电源关断(Power-Gating)的原理图

2. UPF的设计实现流程

IEEE1801标准Unified Power Format(UPF)是一个真正意义统一的,被广泛采用

的低功耗实现标准。它用一些标准的语句描述用户的低功耗设计意图(Power Intent)。如

图6所示,

图6: UPF的应用流程

有了这样一个统一的UPF文件,逻辑综合、物理实现、仿真验证、等效性检查以及最

后的sign-off流程就可以按照UPF中对低功耗设计意图的描述来完成整个IC设计实现验

证流程。这样贯穿于整个流程的低功耗意图来源于同一个文件,这种一致性可以大大降低

低功耗设计的风险性。并且UPF对低功耗设计提供了开放的,多厂商工具支持的流程和解

决方案。众多支持UPF标准的EDA供应商的产品证明了它是一个互操作性强的标准。

2.1 Synopsys基于UPF的低功耗设计流程

Synopsys公司提供了完整的基于UPF的低功耗综合、物理实现和验证流程,如图7

所示。该流程始于寄存器传输级(RTL)描述的逻辑设计,加上一个独立的描述低功耗设

计意图的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)的电源和地的连接关系。综合输出的门级网表已经

被工具根据UPF的相应描述插入了一些低功耗所需的特殊电路单元,比如Level-Shifter,

Isolation cells,Retention Register等。

IC Compiler读入综合输出的门级网表和UPF’描述文件,基于它们进行物理实现,

包括:布局和布线以及电源关断特殊单元(Power-Gating cell)的插入、摆放和控制信号

线的连接等步骤。输出一个新的门级网表,一个包括所有cell的电源和地连接关系的网表

(俗称pg网表),以及一个更新了的UPF文件,标志为UPF’’。UPF’’文件包含了

UPF’的内容,并添加了在物理实现阶段对低功耗电路结构的改变,比如添加了Power

Switches(俗称MTCMOS)的连接关系。

这个flow中产生的数据可以用于做功能仿真(利用MVSIM、VCS),插入的低功耗

单元的正确性检查(利用MVRC),形式验证(利用Formality),以及时序功耗检查(利

用Prime Time-PX)和电压降(IR-Drop)(利用Prime Rail)的验证。

VCS仿真器和MVSIM多电压仿真工具可以在几个阶段用来做多电压的功能仿真:RTL

级,综合后加入了低功耗相关器件(比如Isolation cell)的门级,以及PR之后加入了Power

Switches的门级。MVRC用于检查多电压设计的规则是否正确实现,包括电源连接关系、

电源结构、电源一致性等等,也适用于流程中的各个步骤。

Prime Time读入DC或ICC输出的门级网表以及对应的UPF文件。它利用UPF文件

中的信息建立一个虚拟的电源网络模型,并将电压值反标到每个器件的电源端口,进行带

电源信息的时序检查。

Prime Rail是基于带UPF信息的版图进行电压降以及电迁移的分析。如果设计中有电

源关断单元,它还可以分析相关关断电路的瞬态电流以及动态的电压降分布。来帮助判断

这些电源关断单元是否插入合理以及是否需要插入De-cap单元。

2.2 UPF所需要的特殊单元库

基于UPF的设计流程与传统流程相比,需要一些库中特殊单元的支持以及对传统的

DB时序库添加电源地的信息。特殊单元包括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 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)来实现电源的关断。

可以选择断开电源(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所示,它有

两个电源,一个用于模块电源未关断时的工作用电,一个用于模块电源关断时的用电。它

还有两个控制信号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 library(db库)是

带PG(Power&Ground)信息的,与传统流程相比要多出下面与PG相关的信息:

• pg_pin 的名称,pg_pin 的类型 (如primary, backup 等);

• 每个信号管脚(signal pin)与pg_pin的对应关系;

• 每个输出信号管脚中power_down_function的定义;

• 每个pg-pin的电压数值。

有了上述信息,工具就可以根据UPF里面的描述自动地完成电源网络的连接,电源关

断电路的验证,基于UPF里面电源状态表的综合和优化,以及最后输出带PG信息的网表

的验证等。其直接带来的好处就是使得流程更完整,更简单,更自动化。

由于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工具,

并且所有实现和验证流程都使用了基于IEEE1801标准Unified Power Format(UPF)的

完整技术,成功的完成了从RTL到GDSII的全部过程,并且芯片制造回来成功的完成了功

能测试以及低功耗测试。本篇文章着重介绍实现流程中基于UPF的应用,对于验证流程的

应用我们不作介绍。在实现过程中我们主要完成了下列工作,如图14所示。

图14: 本芯片实现流程图

• PG library的准备;

• UPF文件的准备;

• 有了UPF以及PG library,先用Design Compiler对RTL 综合,综合后产生的

netlist里面就包含了low-power设 计中除了电源关断单元(MTCMOS)之外的所有的

特 殊cell,如:level-shifter, isolation cell等等;

• 综合完成后,作了DFT的工作,在这一步骤如果DFT设计中要引入一些特殊单元,

工具会自动插入;

• DFT之后我们在IC-Compiler完成了所有的布局布线工作,包括:整体规划

(floorplan),电源关断单元MTCMOS的插 入、布局以及控制信号的连接,电源网络综合

和分析,布局,时钟树综合,布线以及最后一些提高良率方面的工作。

• 布局布线完成后,我们还对timing,SI,Power,IR-DROP等进行了Sign-off分

析。

• 在流程中经过每一步我们都用formality对包含了UPF的设计作了形式验证,既保

证了功能的一致性,也保证了含有低功 耗信息的实现一致性。

下面我们对每一步骤进行详细介绍,其中PG library的准备在2.2章节中已经作了介

绍,这里就不再说明。

3.1 本芯片中用到的low power设计意图

在我们最近的这款芯片中,采用了时钟关断(Clock-Gating),多域值电压库

(Multi-threshold libraries),电源关断(MTCMOS Power Gating),低电压待机

(Low-Vdd Standby)等低功耗技术。

图15和图16分别是芯片电源分区拓扑图和floorplan截图,芯片划分成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截图

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 domain。如下所示:

# 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里面的电源线的名称以及和芯片原始电

源输入端口的连接关系。

# 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 –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_net 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 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}

–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

Compiler里面完成,后面的章节里面有详细的介绍。

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 –domain 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 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里面,还有一个非常重要的部分,那就是描述电源状态表(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.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 –state {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来优化动态功耗以及用多个阈值电压的库来优化静态功耗。

如图17所示,在DC中,首先把所有不同阈值电压的标准单元库都设置到

target_library以及link_library里面去,工具在综合优化的时候,就可以根据路径上

timing的是否关键来尽量平衡标准单元速度与静态功耗的关系,关键路径上,尽量选择低

阈值电压/速度快的单元,但在非关键路径上,就尽量选择高阈值电压/静态功耗小的单元。

在读入RTL后,需要用load_upf的命令读入 UPF文件,然后在compile时,工具

会根据UPF的设置,自动插入Isolation cell、level shifters、Retention Registers等特

殊单元(在我们这个设计中,仅需插入Isolation cells),并正确连接这些特殊单元的控制

信号。

另外,为了优化动态功耗,我们在综合阶段让DC自动插入了Clock Gating。设置也

很简单,只要在 compile_ultra命令后面加上clock_gating的选项就可以了。

图17: UPF flow in Design Compiler

综合完成后,除MTCMOS没有插入外,其他特殊单元都已经按UPF描述的设计意图

插入并连接。

综合后我们还要插入DFT相关结构,再做一个增进式的优化。在这两个过程中,如果

DFT引入的电路根据UPF的要求需要插入特殊单元的话,工具会自动判断并在insert_dft

或者compile命令执行的时候自动插入。比如,DFT插入的扫描链从电源关断模块连接到

了其它非关断模块,这个时候根据UPF里面的规定,从关断区到非关断区要经过isolation

cell的过渡,工具会自动判断到这一点,在需要的地方插入这些单元。

在综合和DFT的各个阶段,可以利用DC提供的命令check_mv_design对低功耗设

计进行规则检查,确保没有违反UPF里面定义的相关规则。

最后,DC输出网表和UPF。也可以直接输出DDC或者直接写入到Milkyway数据库

里面去,这两种方式都包含了网表和UPF信息,可以直接作为物理实现工具ICC的输入。

在综合前后我们都用Formality对输入和输出的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)了,在这个阶段主要有下面

的工作:

• 在floorplan之前,要正确设置芯片的工作条件(operating_condition)以及用

set_voltage命令对所有的电源和地设置正确的工作电压值。工具会根据这些设置来选择正

确的单元进行时序计算。

• 读入UPF之后,ICC已经知道设计中有哪些power domain以及每个power

domain里面有哪些电源、地。但这个时候ICC还没有把各个power domain里面所有

cell中电源、地的端口与UPF里面定义的电源、地连接起来。需要运行下面的命令,所有

power net会根据UPF中的描述自动创建,所有cells的电源也会根据UPF中的描述自动

连接:

derive_pg_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之前,我们可以用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的位置确定了,但其

形状也与很多因素有关,可以是矩形也可以是多边形,总之,其位置和形状的最后确定可

能会经过一些反复,因为这与设计最终布局布线的结果息息相关,创建不好,可能影响设

计的时序,也可能影响设计的布线等。

• 所有voltage area都创建好后,就可以对关断电源区域插入电源关断单元(power

gating cell)了。在我们这个设计里,PD_1是电源关断域,需要在这个电源模块里面插入

MTCMOS(power gating cell)。在插入之前,用map_power_switch命令指定要使用的

MTCMOS单元名称及相对应的power domain名字。然后用

add_header_footer_cell_array命令按指定的阵列插入MTCMOS单元,如图19所示。

设计中有可能因为voltage area形状的原因或者因为macro的影响,可能要求按不规则

阵列插入MTCMOS单元,可以通过多个add_header_footer_cell_array命令叠加来实现,

或者手动移动MTCMOS的位置,然后再将其位置固定。如图22所示,在我们的设计中

电源关断区域就有个非常大的macro,为了照顾这个大macro上的供电充足,我们就在

其周围插入了密度比较大的MTCMOS单元。所以MTCMOS的插入和摆放跟整体规划中

voltage area以及属于这个区域的macro的规划都有紧密关系。我们使用的是有一组控制

信号(NSLEEPIN和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)在所有的power

domain都会用到,所以在每个power domain都需要加上power mesh。而在掉电区

PD_1,VDD通过MTCMOS得到VDD_1,由VDD_1来给掉电区供电。所以VDD_2在

PD_2和VDD_1在PD_1的power mesh不能连接到一起。ICC里面提供一个自动的电源

网络综合的功能,用户可以告诉工具一些电源网络的约束以及要达到的电压降的目标,工

具就可以自动产生符合要求的电源网络。而且,它是支持带MTCMOS的综合,也可以一

次综合多个电源、地。用户只要根据产生的电源网络作些精细的修改就可以了。电源网络

做好后,还要把MTCMOS的辅助电源连接好,如图23所示。连接辅助电源的方法主要

有两种:一种是在“True” PG正好在MTCMOS上方的情况下,可以用

create_preroute_vias命令来直接用过孔把MTCMOS的电源端口与”True” PG连接起

来;另一种就是如果“True” PG不在MTCMOS上方,那就要用preroute_standard_cells

命令里net连接的模式物理连接起来。至此,所有的电源、地网络都连接好了,还可以借

用ICC提供的PNA(Power Network Analysis)的功能对包含MTCMOS的电压降进行分

析,以帮助判断MTCMOS单元数量是否足够以及其位置是否合理。

图23: MTCMOS辅助电源的连接

• 如果voltage area位置形状、macro的摆放以及电源网络都合理了,而且用

check_mv_design来检查低功耗的规则还有电源、地的连接都没有问题了,floorplan阶

段的工作也就结束了。自此,设计中所有因为低功耗设计要引入的新的cell都已经插入到

设计中了。在综合及DFT阶段插入了isolation cell,在floorplan阶段我们又插入了

MTCMOS。

Floorplan结束后,ICC里面的布局、时钟树综合以及布线都和传统非UPF流程没有

太大区别了。这些步骤工具都是可以自动理解low-power要求的,并会自动把isolation

单元放到相对应的voltage area的边界。在我们这个设计中,我们还用到了ICC对动态功

耗和静态功耗的电路优化能力,只要把相应开关打开工具就可以自动进行电路方面的功耗

优化了。同样,在各个阶段都可以通过check_mv_design命令来检查是否有违反低功耗

设计规则。

自此,在ICC里面的主要工作就结束了,为了给sign-off工具提供数据,我们还要写

出带PG信息的netlist以作理解low-power的形式验证、要写出最后的UPF以及不带PG

信息的netlist以作最后的时序、SI及功耗分析。PrimeRail作IR-drop分析可以直接读取

Milkyway的设计库。Star-rcxt作参数提取也可以直接读取Milkyway的设计库。

3.5 经验介绍

在上一节中已经介绍了一些物理实现的经验,比如如何确定Voltage Area的位置和形

状,如何合理摆放MTCMOS等等。下面再就我们在实现过程中遇到的一些问题,以及一

些需要注意的地方,在这里和大家分享:

1. UPF里面特殊cell的控制信号(比如Isolation cell和MTCMOS的控制信号)最

好定义在leaf pin上,不要定义在hierarchy pin上,否则ICC可能不能正确的识别该控

制信号。

2. DFT设计阶段会在UPF里定义的特殊cell的控制信号上插入mux,用于测试时控

制这些信号,如果UPF里面定义的控制信号在插入的mux之前,则ICC也会找不到这些

特殊cell的控制信号。比如Isolation cell的控制信号,如图24所示,UPF中本来定义的

Isolation cell控制信号是func_iso_en,但是加了DFT mux之后,UPF中就需要将

Isolation cell的控制信号定义在iso_en上才行。

图24: DFT模式下的Isolation控制信号

3. 关于Isolation cell的插入有一个需要注意的问题,power domain的某些接口信

号在网表中可能是直接接电源或地的,如果在这些信号上插入了Isolation cell,在ICC中

不能正确derive出这些Isolation cell的power连接关系。会报告这样的告警”The

isolation cell ‘xxx’ does not have any associated UPF isolation strategy ”。解决

的方法就是在UPF中指定对这些信号不要插入Isolation cell,或者在ICC中直接指定这

些Isolation cell的电源和地。

4. 需要在Voltage Area的边界用hard blockage留出足够的间隙或者在创建

voltage area的时候加上guard_band的选项,工具就不会在这些区域摆放cell,否则如

果voltage area边界内外cell紧密摆放的话,不同电源、地的cell就物理连接到一起了,

就会有电源或地的短路出现。具体需要留多少间隙,要根据不同工艺的design rule来计

算。

5. 关于MTCMOS的插入数量,可以先根据该模块的功耗大致估算一下。首先通过功

耗分析估算出掉电区的功耗P,根据P=VI,及电源电压,计算出供电电流I;再根据foundry

提供的MTCMOS的电阻值R,可以计算出并联n个MTCMOS的IR drop大致为IR/n;

这样就可以根据期望达到的IR drop值,计算出需要插入多少MTCMOS了。当然最后还

需要通过更精确的IR drop分析工具(比如Prime Rail)来分析IR drop是否满足要求。

6. 关于MTCMOS的摆放和分布,则需要考虑掉电区的功耗分布,功耗密度大的地方

电流密度也大,所以MTCMOS摆放密度要高一些,以减小IR drop。比如在我们的设计

中,掉电区有个大块的Macro(见图22左上),且它的时钟频率比其他部分高,功耗密度

比其他部分大很多,所以我们在其外围放了一圈紧挨着的MTCMOS,而在其他部分,则

是按阵列形式摆放了几列MTCMOS,每列MTCMOS都是隔行摆放。

7. 掉电区的电源网络规划、以及MTCMOS的电源连接也是需要特别考虑的地方。掉

电区有三个PG nets(True VDD、Virtual VDD和VSS),在做电源网络规划时,建议对

三个PG nets都画一个密度相当的电源网格。True VDD和Virtual VDD的网格通过

MTCMOS连接,MTCMOS处是电流密度最大的地方,所以为了减小IR drop,在MTCMOS

上方尽量用宽金属走Power Strap。这样做出来的电源网络,一般不会有IR drop的问题。

4. 结论及建议

利用Synopsys基于UPF标准的低功耗流程,帮助我们在设计的整个流程(从前端到

后端,以及验证)中,达成对低功耗设计意图描述上的连贯性、简洁性与一致性,并提供

各方面的验证功能,极大的提高了设计实现的效率,并保证了设计的正确性。

对于设计实现工程师来说,UPF流程仅比传统流程增加了如何用UPF来描述自己设计

中的低功耗意图,工具就可以根据UPF里面的约束,自动实现低功耗设计。而且实现与验

证可能要用到多个工具,传统流程中,每个工具都要求有自己独立的低功耗设计命令,这

样很难保证各个工具之间的描述是否一致,有了UPF,这个问题就彻底解决了,各个工具

都使用统一的UPF文件来得到一致的低功耗设计要求。另外,低功耗设计需要的特殊单元,

如Isolation cells和Level Shifters在前端综合时工具会根据UPF的描述自动插入,

MTCMOS在后端实现工具中插入以及连接,整个过程中复杂及容易出错的Power连接、

控制信号连接等步骤都由工具根据UPF的描述自动实现了,操作简单方便,且不容易出错。

觉得需要增强的是,当我们在作这个项目的时候,Synopsys的低功耗流程还不支持

在优化的中间过程对UPF进行修改。比如在物理实现的后期,想对power domain做些

微小的修改,又不想从头开始重做,要是UPF也能像SDC一样可以remove后再load就

更方便了。但是令人振奋的是,当前ICC0906的版本提供了一个叫reset_upf的新命令,

已经可以实现这个功能了。

5. 致谢

UPF流程对于我们是一个全新的低功耗流程,完成本设计,离不开华为通信芯片团队

的集体智慧和不懈的努力。在此,要特别感谢张方、张小珏、吕忠华、宋隽、乐彬、戴方

明、余剑锋,以及各位同事的大力协助。另外,还要感谢Synopsys工程师杜广山、黄秋

儿,他们提出了很多宝贵的意见和建议,并现场支持,及时解答每一个疑问,给予了我们

极大的支持和帮助。

6. 参考文献

[1] Synopsys Low-Power Flow User Guide, Version B-2008.09, September 2008

[2] Synopsys’ Low Power Solution white paper, December 2008

[3] Michael Keating, David Flynn, Robert Aitken, Alan Gibbons, Kaijian Shi,

“Low Power Methodology Manual For System-on-Chip Design”

7. 附件

7.1 UPF范例

# create power domains

create_power_domain PD_TOP –include_scope

create_power_domain PD_1 –elements BLOCKA

create_power_domain PD_2 –elements BLOCKB

# 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 –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_net 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 power port

connect_supply_net VDD –ports VDD

connect_supply_net VDD_2 –ports VDD_2

connect_supply_net VSS –ports VSS

#create the power switch

create_power_switch SW1 –domain PD_1 –output_supply_port {VDD_OUT

VDD_1} –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}

#define the isolation cell rules

set_isolation pd1_iso_in –domain 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 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

set_isolation pd2_iso_out –domain PD_2 –isolation_power_net VDD_1

–isolation_ground_net VSS –clamp_value 0 –applies_to outputs

set_isolation_control pd2_iso_out –domain PD_2 –isolation_signal iso_en

–isolation_sense high –location parent

set_isolation pd2_iso_high –domain PD_2 –isolation_power_net VDD_2

–isolation_ground_net VSS –elements {BLOCKB/pin1}

set_isolation_control pd2_iso_high –domain PD_2 –isolation_signal iso_en

–isolation_sense high –location self

set_isolation zsp_tcm_iso_en –domain PD_2 –no_isolation –elements

BLOCKB/iso_en

#create the state table

add_port_state VDD –state {NOR_VOL 1.2}

add_port_state VDD_1 –state {NOR_VOL 1.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 –state {NOR_VOL OFF_VOL

NOR_VOL}

add_pst_state pst_pd2_LOW –pst top_pst –state {NOR_VOL OFF_VOL

LOW_VOL}

Insight China

原理大概是这样的

首先formality提取比较节点,包括以下几类:

Primary outputs

Sequential elements

Black box input pins

Nets driven by multiple drivers, where at least one driver is a port or black

box

可以想象,这些节点由其它节点或者input port控制。这些多输入单输出的单元构成

一个logic cone,然后比较每一个logic cone。

使用formality时需要的设置不是很多。找一个参考script,把文件和库修改一下后,

就可以试着运行了。一般说来,工具能准确地找到compare point,如果有问题,也可以

在script中手工指定。跟RTL比较时,还要屏蔽门级设计的scan test部分。

回答

- 满足一定风格的task和funcation可以综合的

- 不包括时钟的function和task都是可以综合的

function应该就只能是组合逻辑吧?所以都能综合吧;

task只有是组合逻辑时才能够综合的。

本文标签: 电源设计关断实现低功耗