基于IEEE1801(UPF)的低功耗设计流程.doc_第1页
基于IEEE1801(UPF)的低功耗设计流程.doc_第2页
基于IEEE1801(UPF)的低功耗设计流程.doc_第3页
基于IEEE1801(UPF)的低功耗设计流程.doc_第4页
基于IEEE1801(UPF)的低功耗设计流程.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于IEEE1801(UPF)标准的低功耗设计实现流程摘要目前除了时序和面积,功耗已经成为集成电路设计中日益关注的因素。当前有很多种降低功耗的方法,为了在设计实现流程中更加 有效的利用各种低功耗的设计方法,我们在最近一款芯片的设计实现以及验证流程中,使用了基于IEEE1801标准Unified Power Format(UPF)的完整技术,成功的完成了从RTL到GDSII的全部过程,并且芯片制造回来成功的完成了测试。本文就其中的设计实现部分进行了详 细探讨,重点介绍如何用UPF把我们的低功耗意图描述出来以及如何用Synopsys工具实现整个流程,希望给大家以启发。本文先介绍目前常用的低功耗设 计的一些方法特别是用power-gating的方法来控制静态功耗以及UPF的实现方法,然后阐述UPF在我们设计流程中的应用,并在介绍中引入了一些 我们的设计经验,最后给出我们的结论。关键字:IEEE1801, UPF,低功耗, 电源关断,Power-Gating, Isolation, IC-Compiler1. 简介1.1 深亚微米设计面临的挑战随着工艺特征尺寸的缩小以及复杂度的提高,IC设计面临了很多挑战:速度越来越高,面积不断增大,噪声现象更加严重等。其 中,功耗问题尤为突出,工艺进入130nm以下节点后,单位面积上的功耗密度急剧上升,已经达到封装、散热、以及底层设备所能支持的极限。随着工艺进一步 达到90nm以下,漏电流呈指数级增加(如图所示),在某些65nm设计中,漏电流已经和动态电流一样大,曾经可以忽略的静态功耗成为功耗的主要部分。 功耗已成为继传统二维要素(速度、面积)之后的第三维要素。图1: 静态功耗与工艺特征尺寸的关系另外,目前飞速发展的手持电子设备市场,为了增强自身产品的竞争力,也对低功耗提出了越来越高的要求;其次散热问题、可靠 性问题也要求IC的功耗越小越好;最后全球都在倡导绿色环保科技理念,保护环境,节约能源。这些都要求IC设计时必须采用低功耗技术,以有效应对这些挑 战。1.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: 漏电流、单元速度与阈值电压三者之间的关系1.3.3 电源关断 (Power-Gating)芯片中某些模块在不工作时,可以关断其电源,在需要工作时,再将其电源导通,这就是电源关断技术。它可以使电源关断区域的 漏电流降至接近零,极大的减小芯片的静态功耗。现在电源关断的技术也很多,有片内关断、片外关断。顾名思义,片外关断就是在芯片外部通过切断电源来关断芯 片内部的某些模块。片内关断又分为精细关断(fine-grain)和粗糙关断(coarse-grain),精细关断需要特别库的支持,可以实现每个标 准单元的精细关断;而粗糙关断只需要一些门控单元就可以实现对某些模块的电源或地的控制,如图所示,用pmos来控制电源,用nmos来控制地。图5: 电源关断(Power-Gating)的原理图2. UPF的设计实现流程IEEE1801标准Unified Power Format(UPF)是一个真正意义统一的,被广泛采用的低功耗实现标准。它用一些标准的语句描述用户的低功耗设计意图(Power Intent)。如图所示,图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 ToolsDesign 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 Cells2.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 definitionscreate_power_domain PD_TOP include_scopecreate_power_domain PD_1 elements BLOCKAcreate_power_domain PD_2 elements BLOCKB3.2.2 UPF对Power Network的描述然后根据电源分区拓扑图,要清晰地描述各个power domain里面的电源网络(Power Network),如下所示,详细的定义了每个domain里面的电源线的名称以及和芯片原始电源输入端口的连接关系。# supply nets definitionscreate_supply_net VDD domain PD_TOPcreate_supply_net VDD domain PD_1 reusecreate_supply_net VDD_2 domain PD_TOPcreate_supply_net VDD_2 domain PD_1 reusecreate_supply_net VDD_2 domain PD_2 reusecreate_supply_net VDD_1 domain PD_1create_supply_net VSS domain PD_TOPcreate_supply_net VSS domain PD_1 reusecreate_supply_net VSS domain PD_2 reuse#define the primary power/ground for power domainsset_domain_supply_net PD_TOP primary_power_net VDD primary_ground_net VSSset_domain_suupply_net PD_1 primary_power_net VDD_1 primary_ground_net VSSset_domain_supply_net PD_2 primary_power_net VDD_2 primary_ground_net VSS# power ports definitionscreate_supply_port VDD domain PD_TOP direction increate_supply_port VDD_2 domain PD_TOP direction increate_supply_port VSS domain PD_TOP direction in#connect the supply net to power portconnect_supply_net VDD ports VDDconnect_supply_net VDD_2 ports VDD_2connect_supply_net VSS ports VSS3.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 inputsset_isolation pd1_iso_low domain PD_1 isolation_power_net VDD isolation_ground_net VSS clamp_value 0 applies_to outputsset_isolation_control pd1_iso_low domain PD_1 isolation_signal iso_en isolation_sense high location parentset_isolation pd1_iso_high domain PD_1 isolatioin_power_net VDD isolation_ground_net VSS elements BLOCKA/pin1 BLOCKA/pin2 clamp_value 1set_isolation_control pd1_iso_high domain PD_1 isolation_signal iso_en isolation_sense high location parent3.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.2add_port_state VDD_1 state NOR_VOL 1.2add_port_state VDD_1 state OFF_VOL offadd_port_statte VDD_2 state NOR_VOL 1.2add_port_state VDD_2 state LOW_VOL 0.8create_ps top_pst supplies list VDD VDD_1 VDD_2add_pst_state pst_pd1_ON pst top_pst state NOR_VOL NOR_VOL NOR_VOLadd_pst_state pst_pd1_OFF pst top_pst state NOR_VOL OFF_VOL NOR_VOLadd_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 CompilerIC 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_netderive_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 20082 Synopsys Low Power Solution white paper, December 20083 Michael Keating, David Flynn, Robert Aitken, Alan Gibbons, Kaijian Shi, “Low Power Methodology Manual For System-on-Chip Design”7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论