图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