e-works数字化企业网  »  文章频道  »  产品创新数字化(PLM)  »  EDA

干货系列!标准单元设计技术全局介绍

2020/10/24    来源:ISEEDREAM    作者:刘峰      
关键字:单元库  EDA  
本文将对标准单元库设计阶段中的关键问题给出具体解决方法。

    集成电路制造工艺已经向超深亚微米和纳米迈进,标准单元库的设计面临着新的挑战。标准单元库的成功开发对于单元库的开发者来说变得越发艰巨。不仅用户的需求越来越高,而且ASIC设计的环境也越来越复杂,如纳米工艺下CMOS电路的亚阈值影响时序建模精确度等等。一个有效的设计流程将有助于衔接市场需求和foundry的制造能力。本文将对标准单元库设计阶段中的关键问题给出具体解决方法。

自行设计标准单元库的重要性

   标准单元库是ASIC 设计的基础,它的质量和性能对ASIC 设计来说至关重要。厂家提供的标准单元库虽然是使用最普遍的,但是它也有很多先天的不足。

    1. 在速度上面,厂家的标准单元并不是最快的,由于它的设计结构很单一,普遍使用静态逻辑实现,就拿我项目中某0.13µm下单元库中Flipflop单元来说,厂家使用的是最经典的C²MOS触发器,该单元在各种触发器实现形式中它是最慢的。即使工艺在不断的先进,但是单元实现结构却一直没有变化,那单元的性能也没有得到最大的发挥。

     2. 在数量上面,厂家的标准单元数量是很有限的。比如某厂家在0.13µm工艺下提供的单元中,在很多逻辑较复杂的单元里只有最大到X4驱动的单元(XNOR2、AOI21、DFFRHQ等等),而在后端布局布线的时候,很多关键路径都是由于逻辑实现固定,所使用的单元没有更大的驱动单元而导致该路径无法达到指定的时序,要解决时序违反,不得不返回到前端修改代码甚至只能降低时钟频率。单元数量越多,可供综合选用的自由度越大,综合效果就越好。设计同种类型大驱动的单元是工程应用中的客观需求。

    3.  在灵活性上,厂家的标准单元种类是有限的。就举一个最简单的例子,某0.13µm工艺下的单元库中,最多只提供最多4输入的标准单元,而在实际综合中可能需要6输入、8输入的逻辑单元(触发器阵列就是个典型需求),由于种类有限,不得不通过拼接来达到多输入的目的,在多输入单元需求比较多的时候,拼接的结果不但导致逻辑级数增加,速度减慢,还带来后端布线资源的紧张,面积的浪费,这些对芯片的成本是一个不小的开销。

    4. 价格不菲,买一套某工艺下的标准单元库少则上万元多则上十万元。对于不同的应用,各种具体应用的单元库都分得清清楚楚,明码标价,比如高性能库、低功耗库等。同工艺下,每套单元库只适合某一特定应用,只要工程需求有所变动,就需要再次掏钱购买同工艺下相应的单元库。问题在于很多时候是钱花了不少,但是买来的单元库实现得到的结果并不满意。

    5. 特殊应用的标准单元库技术封锁,对于军品级和航天级的设计应用,由于外国对我国的技术封锁,甚至没有相对应的标准单元库。

    总之,在很多应用的工程中不得不自己设计标准单元库。自行设计标准单元库,在实现价值回报上可行,在长远发展上也意义重大。

标准单元库设计使用的EDA工具

    标准单元库的设计工作是一个系统性较强的工程,它上承工艺,同时建成后的标准单元库套件又是半定制设计流程的基石,建立起一套高质量的标准单元库实际上是建起了一个完整的设计平台。它不但包括各种库模型,还应包括一系列对设计平台完整支撑的技术文件的建立。只有从设计流程及设计平台角度进行完善,才能真正发挥标准单元库的重要支撑作用。

    下面是实际工程(0.13µm工艺)中使用的EDA工具:

    电路设计               Virtuoso Schematic Editor

    版图生成               Virtuoso Layout Editor

    DRC,ERC              Hercules Explorer DRC和 Cadence Diva

    LVS                    Hercules Hierarchical Design Verification

    RC 寄生参数提取        Star RCXT

    时序模型生成(lib)      Signalstorm Library Characterizer和siliconsmart

    物理模型生成(Lef)      Abstract Generator

    性能模拟                Hspice

    同时我们还需要确定标准单元库所面向的工艺线,得到来自流片厂家建库所需的版图设计规则、SPICE Models、RC Models 及电参数等技术资料。

标准单元库的设计流程  

    我把标准单元库建库流程分为以下六大步骤:

    1. 方案设计

    2. 电路及版图设计生成

    3. 标准单元库版图和时序信息提取

    4. 库模型生成及库文档生成

    5. 设计工具流程验证

    6. 测试电路设计及工艺流片验证

    下面将详细介绍各步的详细流程。

    方案设计

    标准单元库设计在大方向上,需要确定标准单元库的应用类型及各种类型库所需建立的单元种类、数量及单元的性能指标等等。标准单元库中单元数量的多少、库的预期应用性能、库的开发成本,这也是重要的设计需求,在工程实现之前就需要规范。

    根据我的工程经验,就标准单元库设计本身而言,与标准单元具体实现有关的四个参数尤为重要。

    标准单元电源/地线宽度的确定

    确定合理的电源/地线的宽度主要是为了防止因温度、电流密度等因素引起的电迁移。

    通过工程实践,我认为方法有两种:

    A、如果在本工艺下有相应工艺厂家的标准单元库,可以直接套用该标准单元中电源/地线的宽度。

    B、也可以根据实验数据自行定义标准单元库电源/地线的宽度,在我接触的工程中,确定电源/地线宽度的方法如下:

    电迁移依赖于导体中电流的大小,而电迁移敏感的单元是像输出缓冲器和时钟发生器一样的大驱动器。在确定标准单元的物理设计规范前,在大范围温度、供电电压、信号斜率和工艺偏差内对大驱动能力单元进行模拟,以获得流过单元电源地网络导线电流的预估最大值,同时结合foundry 的电流密度规则决定电源和地网络导线的最小宽度。

    我们在工程中拿大驱动缓冲器BUFX20 单元为模拟对象,在典型工艺下,做直流分析,电源VDD 电流特性如下:

    Ivdd_max=3e-04A

    Ivdd_rms=1e-04A

    Ivdd_avg=2e-04A

    由工艺规则文件的Current Density Rule 规定在TT条件下M1最大DC电流假如是1mA/μm,则电源地网络导线最小宽度是:

    WM1=0.3mA/1mA/μm=0. 3μm

    标准单元高度的确定

    确定合理的标准单元高度,有利于进行高效的布局布线,减少长距离导线互连带来的延时损失,对于水平连线紧张的工艺尤为重要。

    通过工程实践,我认为方法有两种:

    A、如果在本工艺下有相应工艺厂家的标准单元库,可以直接套用该标准单元的高度。

    B、也可以根据实验数据自行定义标准单元库高度,我们工程中使用的方法如下:

    由于电子的载流子迁移率大于空穴的载流子迁移率(一般是两倍多),所以P 管宽度一般比N 管大,而或非门是N 管并联,P 管串连。在通用的标准单元库中,单倍四输入的或非门是所有单元中N管有源区最高的(五输入甚至更多的就选用输入最多的或非门),所以通过一个四输入NORX1门(该尺寸的门是有源区没有折叠管的最大值),通过固定的N管X1尺寸来确定P管非折叠高度,最终确定最小单元高度。最后根据版图设计规则和布线要求得到水平布线track 值后,结合四输入NOR 门的高度来最终确定单元高度等于几条track 值。我通过对多个工艺下标准单元track 值的分析,我认为一般的取值为9和10,所以标准单元的宽度在通过或非门计算后还需尽量达到拥有8到9个track的高度。

    标准单元驱动强度的定义

    为了满足实际需求,根据逻辑关系来设计不同尺寸、不同驱动能力的单元。一般的逻辑单元均设计了四种不同驱动能力的单元:半倍驱动能力的低功耗单元,常用的单倍驱动能力单元,速度更快的2 倍驱动能力单元和4 倍驱动能力单元,用以满足不同的设计需要。而常用的反相器和时钟缓冲器则设计了更多的驱动能力单元。其中,反相器设计了10 种不同驱动能力的单元,缓冲器、用于时钟树的时钟反相器和缓冲器设计了从半倍到二十倍9 种不同驱动能力的单元。

    在讨论驱动强度方法之前,首先应定义驱动强度最小单元的N管尺寸。

    在工程中,确定最小单元N管尺寸的方法是:

    根据版图设计规则中定义的通孔(contact )大小和有源区最小包孔参数值,选择最小包孔的有源区宽度,即半倍(XL)驱动能力N 管宽度。考虑到驱动能力,我们在实际的工程中作了适当的放大。

    通过工程实践分析,我把定义驱动强度的方法归纳为三种。

    A、零负载与倍数尺寸(厂家使用的方法)

    该类型驱动能力的定义方法是:

    设定输出负载为0,即通过本征延时数据来定义不同驱动能力的单元。以N管最小尺寸为基数,通过扩大基数整数倍的尺寸定义相应的驱动单元(即尺寸通过以最后一级晶体管最小尺寸为基数,再乘以一个倍数来定义驱动能力),同时按照设计要求规定上升和下降延时的最大偏差值Xps,经过尺寸微调后达到要求即可。

    B、倍数负载与固定延时(我工程中使用的方法)

    由于在前端逻辑综合时,编译器是以延时、面积、功耗等约束进行单元选取。后端布局布线也是根据延时、负载等因素确定单元的选取。传统的零负载与倍数尺寸的方法不能有效提高前端综合工具和后端布局布线工具对标准单元库的合理选择性。通过数据分析,我们认为倍数负载与固定延时的方法比传统方法更适合设计适用于EDA工具调用的标准单元库。

    该类型驱动能力的定义方法是:

    设定INVXL的输入负载为最小单元输出负载基数值,根据单元驱动的倍数同时增加基数负载的相同倍数,即负载基数值与倍数相乘,不是使用相同倍数的INV的输入负载值。按照设计要求确定在该对应负载下的延时规定(我们工程中规定上升下降都需延时小于Xps并与同类型X1单元的延时偏差小于Xps)来设计相应驱动能力的标准单元

    C、固定负载与降级延时 (添加中间驱动能力单元中使用)

    通常标准单元库提供了多种驱动能力(如X1,X2,X4,X8,X16)的单元。我们通过模拟实验发现,现有标准单元数据手册中INV 单元在输入斜率和输出负载相同情况下,延时数据X1和X2 间的延时差值比X4 和X8 间的延时差值大。

    自动综合和布局布线后,进行时序分析发现,EDA工具使用了大量小驱动能力的单元,可见在典型的设计中低驱动能力单元使用得很普遍。因此,在实际工程中,提供延时间隔更短的低驱动能力单元显得更为重要。在固定负载下,依据延时来设置单元的驱动力可以使工具对单元的选取具有更大的灵活性,相对传统方法更具针对性。

    为了提高标准单元库的灵活性,通过数据分析,我认为需要在XL~X1 和XL~X2 间根据延时差值增加更多驱动能力等级的单元,如驱动能力单元X0.6, X0.8, X1.3,X1.7等等。

    通过实验数据分析,在相同激励、负载情况下,对于驱动能力相近的单元,其延时与驱动能力近似成线性关系,延时随驱动能力增大而递减。所以该类型驱动能力的定义方法是:

    以X1到X2之间的驱动设置为例,将倍数负载与固定延时方法中X2单元采用的负载作为X1.x系列单元的固定负载进行模拟,根据模拟结果来确定线性关系系数,从逐渐递减的单元延时参数中设定X1.3,X1.7等单元。

   单元最后一级P/N 管宽度比的确定

   通常在标准单元库中可以把P/N 管宽度比值分成两类。一类是作为时钟电路单元的P/N 管宽度比值,另一类是普通为延时优化的P/N 管宽度比值。通常时钟电路单元需要平衡上升时间和下降时间。

    通过理论分析和实验数据,得到如果要平衡上升时间和下降时间,在实际工程使用的工艺下,理想状态的P 管宽度是N管宽度的X倍。在数字电路中,噪声容限是反映电路抗干扰性能的一个重要指标,所以我们需要考虑噪声容限的因素,通过对厂家数据的分析和实验证明:标准单元库中普通单元P/N管宽度比值在1.2~2 之间,我们工程中设定是X。用于时钟平衡的单元P/N管宽度比值在2.3~3.6之间,我们工程中设定是X。

    电路及版图设计生成

    标准单元库的主要参数定义以后,就需要对各个种类的单元进行电路设计和版图实现了。

    标准单元库中,复杂逻辑单元(例如多路选择器、异或/同或门等)通常含有较多的晶体管数目,对复杂逻辑单元的电路结构进行设计和优化,相比版图而言能获得更好的效果。

    静态互补CMOS工作时速度慢且功耗大,动态逻辑类型可能是最快的实现结构,基于传输管和传输门的电路通常被认为是快速且低功耗的。在电路级,利用各种电路实现技术对各种单元进行合理的设计,对后期单元库的整体性能起决定性作用。

    版图物理设计原则

    最终标准单元库是提供给布局布线工具使用的,而不是人工手动布局,所以在标准单元的版图实现上要尽可能的符合布局布线工具的要求,使布局布线工具合理分配单元位置并提供最多布线资源达到系统整体性能最优。

    下面是实际工程中,归纳的在版图实现这块一直要遵循的基本设计建议。

    A、端口要尽可能放置在网格格点上,水平和垂直方向上的端口应当尽量错开,这样可以充分利用垂直布线的资源。

    B、端口必须在本单元的边界以内,而且边缘的端口必须和单元的边界至少保持半个最小网格间距。

    C、对于端口比较密集的单元,稍微增加单元的大小有时会比减少单元的大小要好,这样可以增加布线资源。

    D、应保证同一类型的单元中最大单元的宽度是最小单元宽度的5-6倍。如果单元很复杂,可以通过增加高度来保证宽度的要求。

    E、所有单元的宽度必须是网格的倍数或者是偏移半个格点后网格的倍数(根据布线工具的策略来定)。

    F、如果单元内端口周围有剩余空间,增加端口的金属面积可以使其更具多通孔性,多通孔单元可提高连接度。

    单元边界和端口相关定义

    标准单元供APR工具调用,所以在紧密布局时,单元面积上的布线通道有严格规定。根据布局布线工具的算法策略,对标准单元内部的版图布局做对应的规范能减少Die大小,使布局布线工具进行更有效操作。一个好的库单元设计有利于从布局布线中获得最优结果,一个差的库单元设计会导致布局布线较差,无法获得好的性能。

    布局布线工具按照预先为各层定义的布线网格进行自动布线,通常单元的布线网格间距有三种定义方式,包括via-to-via 、line-to-via 和line-to-line。如下图所示

布线网格间距方式

 布线网格间距方式

    一般布线工具使用的是via-to-via布线策略,所以可以通过该策略定义网格垂直水平的单位长度(即via-to-via的距离,由于各工艺的规定不同,距离需要做相应小幅增加),并通过工艺文件中说明的via12使用的形状来定义M1包住Pin脚的大小。

    为了合理利用布线资源,布线工具一般使用垂直水平方向都偏移半个格点的策略(即半间距规则)来达到最好的连接度,所以标准单元设计时需要注意单元边界处的半间距规则(有源区,多晶,单元内金属层都要注意),以保证两个单元邻接时,同一工艺层的最小间距。

    标准单元库版图和时序信息提取

    版图物理信息Lef文件提取

     在DRC、LVS及ERC确定版图没有错误后,就可以提取Lef文件了。Lef文件用于后端布局布线,它包含标准单元的物理视图信息(Pin、boundary、metal)。在工程中使用Cadence公司的Abstract Genetrator来提取Lef信息,基本提取流程如下图所示。

提Lef文件流程

提Lef文件流程

    提取Lef文件需要准备的数据是GDSII版图数据和包含布局布线信息的Technology 文件(与Cadence Virtuoso通常采用的Technology文件不同,这里需要添加特别的信息)。

    用Virtuoso将标准单元的GDSII数据导入一个Library,打开Abstract Genetrator并连接Library,界面下图所示。为防止Abstract软件错误识别标准单元的Pin信息,一般要导入标准单元的逻辑功能网表文件。

Abstract Genetrator 界面

Abstract Genetrator 界面

    以单元DFFHQX1为例, Layout视图和提取Lef信息并导入Virtuoso后得到Abstract视图如下图所示。Lef文件包含了单元的Metal1坐标、Pin及电源地信息,此外还有单元的面积和单元间的拼接信息。

Layout视图和Abstract视图
Layout视图和Abstract视图

 Layout视图和Abstract视图

    时序信息Lib的提取

    标准单元必须特征化(提取.lib文件)后才能被多种EDA工具所识别和使用。在单元特征化之前,只设计了单元的Schmatic和Layout视图,但是单元输入负载、速度和功耗等信息却没有以其他EDA工具能认知的形式提取出来,如综合工具需要知道单元的逻辑功能、单元实际的输入负载电容、在不同输入斜率和输出负载情况下单元的延时和功耗,单元的面积等等。单元特征化就是通过模拟仿真器来提取标准单元相关信息的过程。我们采用的是Cadence公司的SignalStorm Library Characterizer。

    SignalStormLC(SignalStorm Library Characterizer)可提取标准单元(数字的)和IO端口的时序信息,并将其整合为.lib文件。典型特征化流程,如下图所示。

特征化流程

特征化流程

    将库设计规范文件(setup.ss)、标准单元的带寄生参数网表文件(.spf)及Hspice器件仿真模型参数文件(.lib和.mdl)输入到SignalStormLC中,内部机制调用Hspice进行模拟,可得到标准单元的有效电流源模型文件(ECSM)及中间文件(.alf),中间文件(.spf)可转化为多种数据格式(包括.html、.lib、.v和.vhdl),供相关EDA工具使用。   

    使用SignalstormLC提取时序信息需要一些必要的命令语句。可将这些命令编写到一个脚本文件(.txt或着其他后缀),将软件启动后,调入文件即可等待.lib文件的生成。

    库模型生成及库文档生成

    标准单元库版图和时序信息都提取完以后,就可以进行相关数据的整理和归纳了。

    库模型需要整理归纳的数据有:

    A、标准单元库各个单元数据的文字描写文档。

    B、标准单元库的Verilog代码数据,电路级(CDL)数据,物理版图(GDSII)数据,物理视图(Lef)数据,时序(LIB)信息数据。这些数据再结合厂家的工艺文件数据就可以供相关EDA工具进行工程应用了。

    C、指导性文档。当标准单元库完成以后,需要对其进行性能的评估,总结该标准单元库适合使用的环境数据,指导使用者在该单元库性能指标可以达到的前提下,合理设计系统来实现预期的目标。其中最重要的一个指导性数据是使用该单元库可以使系统达到什么样的性能,即最小时钟周期的设置。

    目前一种对标准单元库进行性能预估的可行性理论方法:

     在ITRS(国际半导体技术发展路线图)中为了建立一个微处理器时钟频率的趋势模型采用了一种概念,即时钟速度不能超过一个固定数量的门的传播延时。如在2001年的ITRS中,一个16级的典型门延时被定义为全局的时钟周期,而一个典型的门延时则是指的一个FO4。目前FO4作为一种延时单位被广泛采用,这样做的好处是在讨论体系结构如何影响性能时可以把工艺的因素放在一边。

    在过去的十多年当中,微处理器的时钟周期大幅下降。例如Intel的6代X86微处理器的时钟周期从1992年的53FO4(i486DX2)下降到2002年的12FO4(Pentium4)。目前有研究指出,当同时考虑高性能和低功耗时,时钟周期为18FO4时,性能达到最优值。

    所以根据这一指导思想,通过测试标准单元库所采用工艺的FO4值,确定使用该标准单元库后系统的最优频率值,可以指导设计者对系统进行合理的性能定义。

    选取某工艺典型情况下反向器的平均传输延时作为该工艺的FO4参考值,根据时钟周期为18FO4时性能最优的结论得出:

    T=18FO4=18×55.36ps=996.48ps

    即系统设计最优时钟周期为1ns左右,工作频率1GHz左右。

    通过对比该工艺厂家提供的时钟最小宽度数据和厂家标称可以达到的性能说明,该预估的时钟频率在这些数据范围之内,所以具有一定的参考价值。

设计工具流程验证

    标准单元库的数据都准备好了以后就可以供相关EDA工具使用,验证其数据是否可用。

    下面为设计的标准单元库应用到具体工程中的截图。

    标准单元库的物理视图数据导入布局布线工具中的使用情况如下图所示:

布局布线中的视图

布局布线中的视图

    标准单元库的时序信息导入时序分析工具中的使用情况如下图所示

时序分析中的视图

时序分析中的视图

测试电路设计及工艺流片验证

    设计功能验证电路、工作频率测试电路、建立/保持时间测试电路、恢复/移除时间测试电路以及制定测试方案,目前正在设计研究中。

    最笨的办法就是用该标准单元库进行小模块的设计,并进行流片验证。

未来标准单元建库的挑战

    1. 相应设计流程方法的建立。到更先进的工艺下,是否还可以得到现有特征化自动提取工具的支持?比如:0.13µm和0.005µm工艺在测建立和保持时间的规范就完全不一样了,自动提取时序信息的工具(siliconsmart)的模拟策略是否需要修改?

    2. 更多深亚微米下问题的解决。到0.005µm的设计已经进入DFM(基于制造的设计)设计,在流片掩模曝光过程中就存在光学变形严重的问题了,还有互连延时问题,噪声问题,成品率问题,等等。可能需要更多的工具来解决深亚微米设计中的新问题。

    3. 对标准单元和版图的设计规范需要修改,基于老工艺下的模拟数据在新工艺下不再适用,需要重新进行相关数据的模拟采集,比如在0.25µm工艺下的反向器链驱动倍数最优为4,而在0.13µm工艺下为2.5,那在0.065µm工艺下就需要再次模拟分析了。在版图设计上,需要考虑更多的设计规则,在0.13µm工艺下,版图实现只要DRC通过就可以了,在0.005µm工艺下,DRC通过后还需要进行其他检。

责任编辑:杨培
本文来源于互联网,e-works本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供,并已尽力标明作者与出处,如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐