肖琼 郭军 李剑
海思半导体有限公司
手持电子设备对功耗和性能的要求越来越高,低功耗、多种工作模式共存等特性构成了集成电路设计新的聚焦点。这些需求增加了芯片在物理实现阶段的收敛时间和设计难度,也给后端工程师和EDA工具提出了新的难题。
本文将简单介绍一个90nm工艺的后端设计。在物理实现上,我们利用了IC Compiler的MCMM并行优化技术,缩减了在不同模式、不同工作条件下时序收敛的迭代次数,提升了工作效率;在降低功耗方面,我们采用了Multi-Vt、Clock-Gating、Power-Gating、Multi-VDD、Multi-Supply等LowPower技术。此外,在时钟树综合、时序优化等方面,ICC也显示了其优秀性能。
Modern handset devices require cutting down power consumption and higher performance. The new focus on integrate circuit design has turned to low power and multi-mode implementation, which makes it more difficult on physical design, and gives new challenge to both P&R engineers and EDA tools.
The physical implementation of a 90nm low power design will be discussed in this paper. We use IC Compiler with its new feature MCMM to achieve much faster timing closure and less iteration under multi-mode operation and multi-corner condition that help to improve efficiency greatly compared with traditional flow. Various low power techniques embedded in ICC, such as Multi-Vt, Clock-Gating, Power-Gating, Multi-VDD, Multi-Supply, are also used in this design and satisfied power saving is achieved. Besides MCMM optimization and low power techniques, ICC shows its excellent ability on clock tree synthesis and timing optimization that will be discussed and compared with traditional flow later.
高性能、低功耗、多种工作模式共存的集成电路设计为EDA工具和后端工程师带来新的挑战。本文将要讨论的一个90nm设计实例应用于无线可移动设备,必须采用Multi-VDD、Multi-Supply、Multi-Vt等多种低功耗技术以适应市场需求;芯片有4种工作模式(mode),sign-off需要考虑5种PVT组合的工作条件(corner)。传统的物理设计流程和工具面对这些低功耗、多模式的特殊需求,无论从实现结果、还是从人力时间上看,都已经力不从心。因此,亟需一种工具,能够在物理实现各阶段考虑低功耗的优化、实现各种低功耗技术;并且能同时“吃”进多个corner,能够同时“看”到各种mode下的约束,同步优化时序。此外,工具在优化性能、优化面积,及运行时间等方面也应当表现出良好的处理能力。为此,我们引入了IC Compiler流程,主要以一个子模块Block A为例,介绍MCMM并行优化、时钟树综合等,并将ICC与PC+Astro流程在工具性能、运行时间、实现结果等方面作了比较与分析。在低功耗技术的应用上,将以整个顶层设计为例,介绍我们在low power中的相关处理,及最后的实现结果。图1.1是采用MCMM并行优化和low power技术的ICC流程图。
芯片在制造之前需要分析和评估其在各种应用环境下的性能,而现今的应用环境越来越复杂,一颗芯片往往需要工作在多个工作条件(corner)和多种工作模式(mode)下。要满足、优化所有应用环境的性能要求,并非一件易事。在传统的时序收敛和分析方法下,PR工程师要在不同的工作模式之间来回切换设计约束进行分析优化,以满足同一时序路径在不同工作模式下的时序要求;同时,还要在sign-off分析工具和PR工具之间来回切换多次,以解决在各种工作条件下不同工具之间的寄生和时序计算方法的相关性问题(correlation)。这种方法最大的弊病在于PR工具无法同时覆盖到所有corner和mode下的时序,增加了实现与时序验证两类工具之间切换的次数和手工ECO的时间;并且每次对一个mode或corner的修正,往往会影响到其他mode或corner下的timing,增加了各个mode或corner之间的切换迭代次数。芯片的应用环境越多,切换、迭代次数越多。对于本次设计的4个工作模式、5个工作条件组合而言,工作量可想而知!
ICC对MCMM(multi-corner multi-mode)的处理变以往的“串行”为“并行”,将所有mode和corner的组合定义成若干个“scenario”,ICC对所有scenario的时序同时分析和优化,并能选择性地同时优化面积和功耗,从而大大减少了时序收敛的迭代次数和设计时间。
我们选取func1和shift两个模式,与WC、BC、WCL、ML四个corner(暂未考虑Typical),以及对应的寄生模型(TLU+文件)rcworst、rcbest、cworst、cbest,组合成FUNC_WCL_C、FUNC_WCL_RC、FUNC_WC_RC、FUNC_WC_C、SHIFT_WCL_C、SHIFT_WCL_RC、SHIFT _WC_RC、SHIFT _WC_C共8个scenario,并分别为它们指定时序约束、工作条件和寄生参数模型。scenario具体的定义如图2.1所示。每个scenario中包含了与max和min相应的两个寄生模型和两个工作条件。如图2.1(b)所列举的FUNC_WC_C,它采用cworst和cbest分别作为其相应max、min下的寄生模型;采用WC和BC分别作为其相应max、min下的工作条件。如此,8个scenario就覆盖了2个工作模式、4个工作条件和4种寄生模型的相应组合。
定义过各种scenario后,即对所有的scenario进行布局和时序优化。ICC目前的版本还不支持CTS阶段的MCMM功能,因此我们在时钟树综合的时候,选取FUNC_WC_C作为CTS_scenario。具体做法可参见第§3节。
在CTS前后的时序优化我们分别采用8个scenario来同时优化各个模式和工作条件下的所有时序问题。操作如图2.2。
在place和CTS后的阶段同时对8个scenario下的所有时序路径进行优化。命令如上节所述。限于篇幅,仅挑选列举出CTS后两个时钟域在FUNC_WC(L)_C、SHIFT_WC(L)_C四个scenario下同步优化的QoR,如表2.1所示。
我们将Block A分别在PC+Astro和ICC两个流程中优化timing,Astro流程采用顺序串行处理MCMM,ICC采用同步并行处理MCMM,两个流程如图2.3所示。为了快速得到两个流程的比较结果,选取FUNC_WC_C、SHIFT_WC_C两个scenario分别在ICC和Astro中进行CTS后的时序优化。
从流程图来看,ICC的MCMM流程显然简单,仅需设计师定义若干scenario,工具就能同时处理所有corner和mode下的时序优化;而Astro采用“串行”方式,在两个scenario之间切换、迭代的次数不可预知,需要加入相当多的人工判断和干预。
两个流程在CTS后的优化,都能基本满足时序要求,但Astro流程中max transition的DRC violation明显多余ICC;此外,ICC优化后电路单元的个数多于Astro流程,但总的面积反而小。表2.2为两套流程在CTS后的物理信息。
我们还比较了两个流程在CTS前后布局和优化的运行时间。如图2.4。
其中,左图显示了ICC采用不同scenario策略在CTS后优化时序所用的时间。同时激活两个scenario(FUNC_WC_C、SHIFT_WC_C),ICC优化时间为1.5小时;仅激活FUNC_WC_C,ICC优化耗时1.3小时;仅激活SHIFT_WC_C,ICC优化耗时0.5小时。由此可以看出,ICC的MCMM并行优化时间并非简单地将优化每个scenario的时间叠加,相比“串行”优化,其运行时间有明显优势。
图2.4的右图显示了两套flow在CTS前后做place优化所用的时间。ICC流程在CTS前的布局和优化中激活了FUNC_WC_C和SHIFT_WC_C两个scenario,用时4.2小时;而PC+Astro流程在CTS前仅考虑FUNC模式,用时稍短,约为3.3小时。CTS后,ICC激活两个scenario,同时优化时序,经过两次“psynopt”优化,达到时序要求,耗时仅1.5小时;而Astro每次只能加载一个时序约束,两种模式下的时序优化彼此影响,需要4~5次反复迭代才能满足时序要求,耗时将近3小时。Block A仅包含不到30万个电路单元,在两种工作模式、两个工作条件下进行MCMM的并行优化比Astro串行方式节省了近50%的时间。由此可以想象,ICC的MCMM并行优化方式在大规模、多模式、多工作条件的设计中,在单一命令优化时间长的routing后阶段,将节省不少时间。这对于PR工程师来说,绝对是个好的手段
Block A是模块级的设计,时钟结构比较简单——包含2个功能时钟和2个测试时钟。
ICC做CTS后的结果及其与Astro的比较如表3.1所示。从表中结果来看,ICC在做时钟树上的耗时超过Astro;但最后的CTS结果,无论从skew还是latency来看,ICC均优于Astro。
Block A作为芯片CPU,对其速度的要求当然是越快越好。为研究ICC对芯片速度优化的能力,我们将设计约束加严,主时钟ZSPCLK的频率由原先的172MHz提高到200MHz。在加严的时序约束下做CTS前的place优化,得到超过2000条Violation Path,其中WNS为-0.546ns。我们在CTS阶段采用useful skew的方式,进一步优化timing、提高速度,具体操作可参见图3.1。
skew_opt后,在当前目录下产生一个skew_opt.tcl,会根据CTS前的时序,为每个register的sink端提供一个合理的时钟latency值,作为下一步CTS的参考;并为有数据通路的时钟域创建inter-clock balance的group。采用useful skew作为CTS策略后,设计整体的skew变大,但原本violation很大的path由于skew的优化调整,时序可以提高0.3ns,整个design的WNS减至-0.2ns,大大提高了整个设计的速度。采用skew_opt前后的QoR比较如表3.2。
我们也尝试了在Astro中利用skew_opt,进一步提高设计的频率。从最后的时序分析来看,Astro通过useful_skew_opt命令,将WNS从-0.496ns优化到-0.335ns。
如前所述,本文提及的设计实例应用于无线可移动设备,需采用Multi-VDD,Multi-Supply、Multi-Vt等多种低功耗技术以适应市场需求。
在power规划上,为降低系统功耗,在顶层将设计根据供电电平的不同和关断与否的要求划分成3个区域。我们在ICC中创建了三个Voltage Area,分别对应DC中创建的三个Power Domain。图4.1给出了创建Voltage Area后局部的floorplan。三个电压域分别对应于图中黄、红、绿3个区域,具体为:
1、包括系统控制和IO复用配置的1.2V不可关断电压区(Always on Area,黄色);
2、包括外设和系统总线的1.2V可关断电压区(Shut-Down Area,红色);
3、包括处理器及其应用模块的0.7V/1.0V可变电压区(Multi-VDD,绿色)。
电压区两两之间的信号由Level-shifter(LS)和Isolation cell(ISO)连接、隔离。多电压区中两组power net之间用Multi-Threshold CMOS(MTCMOS)连接。
在低功耗的实现上,我们在逻辑综合的阶段完成了power domain的划分,LS、ISO的插入,以及Clock Gating;在物理实现的阶段,借助IC Compiler,实现了Voltage Area及其相应Power net的创建、规划和连接,MTCMOS的插入、摆放和连接,LS 和 ISO的摆放,以及门级的power优化:
1、 create_voltage_area:生成对应Power Domain的各个电压区域VA;
create_power_net_info,connect_power_domain:创建各个电压域的电源/地 net,并进行逻辑连接;
2、 add_header_footer_cell_array,connect_pg_nets:插入MTCMOS,并对其进行PG连接;
3、 place_opt –power,clock_opt –power,route_opt –power:对design进行VA-aware的布局、布线和时钟树综合,并优化门级power(leakage power、dynamic power)。
ICC中的Low power技术实现起来非常简单。在Floorplan阶段,VA的创建、power的连接、MTCMOS的插入仅需几条命令;在P&R阶段,ICC支持基于不同电源域的物理布局和时序优化,能在place、cts、route各阶段为每个电压域中的cell自动加载相应的operating condition和timing library,这些过程在PR工程师看来,与从前传统流程的操作无异。
表4.1给出了经过place、cts、route各阶段power优化后Block A的leakage power、dynamic power,及其与power优化前的比较。从结果来看,进行power优化与否,其dynamic power值相差14.41%,leakage power相差38.08%;进行power优化后,design的面积也有所下降。我们也对IC Compiler和Physical Compiler在Post-Place的leakage power优化性能上,作了简单比较,结果显示在post-place过程中仅优化leakage power,ICC比PC降低超过10%。
表4.2给出了PrimeRail分析的功耗信息。其中,
a)中描述了Multi-VDD区域中供电电压分别为1.0V和0.7V时相应的Dynamic Power和Leakage Power;
b)中描述了Multi-Supply区域中供/断电时相应的Leakage Power。从表中可以明显的看出,通过LowPower技术的应用,设计的功耗可以大大降低。
采用IC Compiler流程,是我们在90nm、低功耗、高性能芯片后端设计上的一个新的尝试。本文在优化结果、运行时间、实现难易等方面,详细给出了ICC与传统流程的各种比较。工具引入的新技术——如MCMM同步优化、Power Gating插入等——大大节省了设计实现的时间,也为PR工程师解决了大部分手工干预的难题。更重要的是,IC Complier 为用户提供了一套完整的低功耗设计的解决方案。而在一些传统的优化步骤上,ICC也显示了其更优秀的性能。从本文所举的设计实例来看,ICC的时钟树综合无论从latency还是skew来看,都优于Astro;在门级功耗的优化上,ICC的降低leakage power的效果也优于PC;此外,ICC通过skew opt的方式,能将timing进一步优化0.3ns以上,为提高设计速度、电路性能提供了一个很有效的优化手段。
作为新工具、新流程,ICC为深亚微米尺寸的后端设计提供了强大的技术支持,在优化能力上也表现不凡。但在整个流程实现的过程中,我们也遇到了一些小问题,在此提出,希望能够改进:
1、 ICC的图形界面操作性不够强大,尤其在显示速度、菜单操作上需要改进;
2、 希望能在post routing阶段增加一些用户可控的,有针对性的时序收敛手段和命令。