《CMOS集成电路后端设计与实战》——3.3 标准单元设计流程

简介:

本节书摘来自华章出版社《CMOS集成电路后端设计与实战》一 书中的第3章,第3.3节,作者:刘峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 标准单元设计流程

标准单元的设计流程是实现标准单元建库工作的基本指导方针,只有在一套完善且系统的开发流程下逐步完成每个工作环节才能实现标准单元库的建立。一般情况下,可以按照以下六大步骤完成CMOS标准单元库的开发工作,但在实际应用过程中由于种种原因,会出现开发工作的反复迭代,例如当工艺和互连线的器件模型不够精确时,引起单元特征化,得到的模型参数不够精确,就需要迭代。如图3-22所示为标准单元库实现的基本流程图。

8683a56ff78f92936602ff733a84bcff96f56ac7

1)方案设计。根据设计需求确定设计目标和实现方案。
2)电路及版图设计生成。标准单元库的主要参数定义后,就需要对各个种类的单元进行电路设计和版图实现。
3)标准单元库版图和时序信息提取。标准单元设计完成了单元的Schmatic和Layout视图后,通过对版图和时序信息进行提取才能被多种EDA工具所识别和使用。
4)库模型生成及库文档生成。标准单元库版图和时序信息都提取完成以后,就可以进行相关数据的整理和归纳,供后续设计使用。
5)设计工具流程验证。标准单元库的数据都准备好了以后,就可以供相关EDA工具使用,验证其数据在设计实现流程中是否可用。
6)测试电路设计及工艺流片验证。测试电路设计主要包括功能验证电路、工作频率测试电路、建立/保持时间测试电路、恢复/移除时间测试电路以及制定测试方案。

3.3.1 方案设计

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

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

基于标准单元设计方法的设计,通过设置合适的单元电源线的金属宽度满足功耗分布的需要,同时电源线的宽度应该设计得尽量窄来减少电源线所占用的标准单元内部面积,以实现最大化布线资源。

485de0324f815de6df68b68dad5709d523553e71

然而,标准单元的电源线宽度首先需要设计的足够宽来满足自身需要。对于给定的具体设计,我们确定合理的电源/地线的宽度主要是为了防止因温度、电流密度等因素引起的电迁移。
标准单元电源/地线宽度的确定可以通过下面3种设计建议的方法来预估和确定。
1)直接参考工艺厂家的标准单元库进行定义。如果在本工艺下有相应工艺厂家的标准单元库,可以直接套用该标准单元中电源/地线的宽度。
2)基于标准单元仿真实验数据进行定义。根据仿真实验数据自行定义标准单元库电源/地线的宽度,确定电源/地线宽度的基本建议方法如下:
电迁移依赖于导体中电流的大小,而电迁移敏感的单元像输出缓冲器和时钟发生器一样的大驱动器。在确定标准单元的物理设计规范前,在大范围温度、供电电压、信号斜率和工艺偏差内对大驱动能力单元进行模拟,以获得流过单元电源地网络的导线电流的预估最大值,同时结合流片厂家的电流密度规则决定电源和地网络导线的最小宽度。
以驱动缓冲器BUFX20单元为模拟对象,在典型工艺下,做直流分析,电源Vdd电流特性如下:

3e2db23ab7604082fa2ea38d7be8cd05a9c409d0 7fb42354e7761b650410a2715e948229c4c75b08

假如由工艺规则文件的电流密度规则(Current Density Rule)规定在TT条件下,M1的最大DC电流假如是1mA/μm,则电源地网络导线最小宽度是:
WM1=0.3mA/1mA/μm=0.3μm
3)基于设计所预估的总功耗和面积信息来定义。下面的设计建议通过一些简单的假设提供比较粗略的预估,假设标准单元的电源线与金属层2的电源条带(stripe)连接,如图3-24
所示。
假定的参数说明如下:
Iavg——设计中的总平均电流,该值通过预估的总功耗计算得到;
dm1——金属层1能够允许的最大电流密度;
dm2——金属层2能够允许的最大电流密度;
Im1——水平方向上的金属层1可以提供的最大电流;
Istrap——金属层1电源线总共需要提供的最大电流;
Wm2——实现垂直电源带的金属层2的宽度;

 r——实现垂直金属层2电源带的数目;
c——设计中标准单元电源线的预估总行数;

Wm1——金属层1作为电源线的宽度。
假设垂直方向上的金属层2的电流从金属线的两端流入,通过以下公式计算流过金属层2的电流:

3f97e08b9a26bd5d7eb571e518a03266239537a6

同样假设标准单元金属层1电源线的电流也是从金属线两端流入,则金属层1电流线的电流计算公式如下所示。

f476dd2cd565ad856f8c8e610137daad7cc3886d

最后根据金属层1电源线总共需要提供的最大电流和设计中标准单元电源线的预估总行数算出金属层1作为电源线的宽度,则电源线宽度的计算公式如下所示。

394ab813854f5c10a43323930dba1353fd6151b8

实际上还要考虑连接金属层1和金属层2的通孔个数问题。

3.3.1.2 标准单元高度的确定

确定合理的标准单元高度,不仅有利于进行高效的布局布线,还可以减少长距离导线互连带来的延时损失,对水平方向连线紧张的工艺尤为重要。
通过工程实践,总结两种方法如下:
1)如果在当前工艺下,有相应工艺厂家的标准单元库,可以直接套用该标准单元的高度。
2)可以根据实验数据自行定义标准单元库高度,下面推荐的基本粗略预估思路如下:
由于电子的载流子迁移率大于空穴的载流子迁移率(一般是两倍多),所以P管宽度一般比N管大,而或非门是N管并联,P管串联。在通用的标准单元库中,单倍四输入的或非门是所有单元中N管有源区最高的(五输入甚至更多的就选用输入最多的或非门),所以假设通过一个四输入NORX1门(保证有源区没有折叠管的最大值),通过固定的N管X1尺寸来确定P管非折叠高度,最终确定最小单元高度。最后根据版图设计规则和布线要求得到水平布线通道值后,结合四输入NOR门的高度最终确定单元高度等于几条布线通道值。通过对多个工艺下标准单元布线通道值的分析,一般的取值为7~15,所以标准单元的高度在通过或非门计算后,需尽量达到拥有7~15个布线通道的高度。

3.3.1.3 标准单元驱动强度的设置

为了满足实际需求,可以根据逻辑功能设计不同尺寸、不同驱动能力的单元。一般的逻辑单元都设计了至少四种不同驱动能力的单元:半倍驱动能力的低功耗单元、常用的单倍驱动能力单元、速度更快的2倍驱动能力单元和4倍驱动能力单元,用来满足不同的设计需要。而常用的反相器和时钟缓冲器设计了更多的驱动能力单元。其中,反相器一般会设计10种不同驱动能力的单元,用于时钟树的时钟反相器和缓冲器会设计从半倍到二十倍之间不同驱动能力的单元。
在定义驱动强度方法之前,首先应定义驱动强度最小单元的N管尺寸。下面推荐的基本粗略预估思路确定最小单元N管尺寸的方法如下:
根据版图设计规则中定义的接触孔(contact)大小和有源区最小包孔参数值,选择最小包孔的有源区宽度,即半倍(XL)驱动能力N管宽度。考虑到驱动能力,需要在实际的工程中作适当的放大。
这样介绍三种定义驱动强度的粗略方法。
1)零负载与倍数尺寸。该种驱动能力的定义方法首先是设定输出负载为0,即通过本征延时数据来定义不同驱动能力的单元。以N管最小尺寸为基数,通过扩大基数整数倍的尺寸定义相应的驱动单元(即尺寸通过以最后一级晶体管的最小尺寸为基数,再乘以一个倍数来定义驱动能力),同时按照设计要求规定上升和下降延时的最大偏差值,经过尺寸微调后达到要求即可。
2)倍数负载与固定延时。由于在前端逻辑综合时,综合软件是以延时、面积、功耗等约束进行单元选取。后端布局布线也是根据延时、负载等因素确定单元的选取。传统的零负载与倍数尺寸的方法不能有效地提高前端综合工具和后端布局布线工具对标准单元库的合理选择。因此倍数负载与固定延时的方法比零负载与倍数尺寸法更适合设计适用于EDA工具调用的标准单元库。
该类型驱动能力的定义方法是首先设定INVXL的输入负载为最小单元输出负载的基数值,根据单元驱动的倍数同时增加基数负载的相同倍数,即负载基数值与倍数相乘,不是使用相同驱动力倍数的INV的输入负载值。按照设计要求确定在该对应负载下的延时规定来设计相应驱动能力的标准单元,其延时规定可以定义上升和下降都需延时小于某个数值,并比同类型X1单元的延时偏差小于某个数值。
3)固定负载与降级延时。该方法主要用于添加中间驱动能力单元中。通常标准单元库提供了多种驱动能力(如X1,X2,X4,X8,X16)的单元。在固定负载下,依据延时设置单元的驱动力可以使工具对单元的选取具有更大的灵活性,相对传统方法更具针对性。
一般自动综合和布局布线后,EDA工具使用了大量小驱动能力的单元,可见在典型的设计中低驱动能力单元使用得很普遍。因此,提供延时间隔更短的低驱动能力单元显得更为重要。如果在现有标准单元数据中,INV单元在输入斜率和输出负载相同情况下,延时数据X1和X2间的延时差值比X4和X8间的延时差值大。在相同激励和负载情况下,对于驱动能力相近的单元,其延时与驱动能力近似为线性关系,延时随驱动能力增大而递减,为了提高标准单元库的灵活性,需要在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管宽度比值,该P/N管宽长比值主要考虑标准单元驱动力最优化。

3.3.2 标准单元电路及版图设计

在定义了标准单元库的主要设计参数后,就需要对各个种类的单元进行电路设计和版图实现。
在标准单元库中,复杂的逻辑单元(例如多路选择器、异或/同或门等)通常含有较多的晶体管数目,对复杂逻辑单元的电路结构进行设计和优化,相比版图能获得更好的效果。静态CMOS工作时速度慢,动态电路类型可能是最快的实现结构,基于传输管和传输门的电路通常被认为是快速且低功耗的。在电路级,利用各种电路实现技术对各单元进行合理的设计,对后期单元库的整体性能起决定性作用。
标准单元电路及版图设计基本流程如图3-25所示。

1b3ef7dd86cca38ca6a2f8e92637681f7edb921e

最终标准单元库是提供给布局布线工具使用的,而不是人工手动布局,所以在标准单元的版图实现上要尽可能的符合布局布线工具的要求,使布局布线工具合理地分配单元位置并提供最多的布线资源以达到系统整体性能最优。
下面归纳在版图实现中,一直要遵循的几个基本设计建议。
1)输入输出端口要尽可能地放置在网格格点上,水平和垂直方向上的端口应尽量错开,这样可以充分利用垂直布线的资源。
2)输入输出端口必须在本单元的边界以内,而且边缘端口必须和单元的边界保持至少半个最小格点间距。
3)对于输入输出端口比较密集的单元,稍微增加单元面积的大小有时会比刻意保持单元面积最小要好,这样可以增加布线资源。
4)保证同类型的单元中最大单元的宽度是最小单元宽度的10倍之内。如果单元很复杂,可以通过增加高度来保证宽度的要求。
5)所有单元的宽度必须是格点间距的倍数或者是偏移半个格点后网格的倍数(根据布线工具的策略来定)。
6)如果单元内输入输出端口的周围有剩余空间,可以增加端口的金属面积使其更具多通孔性,多通孔单元可提高可连接度。

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

设计的标准单元库在DRC、LVS及ERC确定版图没有错误后,就可以进行物理信息抽象化来提取Lef文件了。Lef文件用于后端布局布线,它包含标准单元的物理视图信息(PIN、boundary、metal)。提取Lef文件需要准备的数据是GDSII版图数据和包含布局布线信息的工艺文件。Lef文件包含了单元的金属层、PIN及电源地信息,此外还有单元的面积和单元间的拼接信息。
标准单元设计完成了单元的Schmatic和Layout视图后,但单元输入负载、速度和功耗等信息却没有以时序分析工具能认知的形式提取出来,例如综合工具需要知道单元的逻辑功能、单元实际的输入负载电容、在不同输入斜率和输出负载情况下单元的延时和功耗、单元的面积等。因此标准单元必须完成时序信息特征化(提取.lib文件)后,才能被多种时序分析工具所识别和使用。单元时序信息特征化就是通过模拟仿真器来提取标准单元相关时序信息的过程。

3.3.3.1 版图物理信息Lef文件的提取

在DRC、LVS及ERC确定版图没有错误后,就可以提取Lef文件了。Lef文件用于后端布局布线,它包含标准单元的物理视图信息(PIN、boundary、metal)。业界一般使用Cadence公司的Abstract Genetrator来提取Lef信息,基本提取流程如图3-26所示。
提取Lef文件需要准备的数据是GDSII版图数据和包含布局布线信息的工艺文件。
用Virtuoso将标准单元的GDSII数据导入一个Library,打开Abstract Genetrator并连接Library,界面如图3-27所示。为防止Abstract软件错误识别标准单元的PIN信息,需要导入标准单元的逻辑功能网表文件。

67a922d89a3ed343db0d6b97d1c72151388b5ad3 f7e955d9111d27e8c674a92da912cfb1c95a3e49

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

965a2ae55ea0d7de4d1b0f9369b13f44503cb117

3.3.3.2 时序信息Lib的提取

标准单元必须完成时序信息特征化(提取.lib文件)后才能被多种时序分析工具所识别和使用。业界使用特性参数提取的工具主要是Cadence公司的SignalStorm Library Characterizer(目前嵌入到ETS软件中)、已被收购的Magma公司的Siliconsmart和synopsys的NCX。
这里以早期Cadence公司的SignalStorm Library Characterizer为例简单介绍,不管该软件版本及名称如何变化,但其工作大体流程基本不变。
SignalStormLC(SignalStorm Library Characterizer)可提取标准单元(数字的)和IO端口的时序信息,并将其整合为.lib文件。典型的时序信息特征化流程,如图3-29所示。
将库设计规范文件(setup.ss)、标准单元的带寄生参数网表文件(.spf)及Hspice器件仿真模型参数文件(.lib和.mdl)输入到SignalStormLC中,内部机制调用Hspice进行模拟,可得到标准单元的有效电流源模型文件(ECSM)及中间文件(.alf),中间文件(.spf)可转化为多种数据格式(包括.html、.lib、.verilog和.vhdl),供其他相关EDA工具使用。

7e3fa5c34fc09006f233dbf5d9d123c21505d82b

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

3.3.4 库模型与库文档生成

标准单元库版图和时序信息都提取完以后,就可以进行相关数据的整理和归纳了。库模型需要整理归纳的基本数据如下:
1)标准单元库各个单元数据的文字描述文档。
2)标准单元库的Verilog代码数据、电路级(CDL)数据、物理版图(GDSII)数据、物理视图(Lef)数据及时序(LIB)信息数据。这些数据再结合厂家的工艺文件数据就可以供相关EDA工具进行工程应用了。
3)指导性文档。当标准单元库完成以后,需要对其进行性能的评估,总结该标准单元库适合使用的环境数据,指导使用者在该单元库性能指标达到的前提下,合理地设计系统来实现预期的目标。其中最重要的一个指导性数据是使用该单元库可以使系统达到什么样的性能,即最小时钟周期的设置。
一种对标准单元库进行性能预估的可行性理论方法如下:
在ITRS(国际半导体技术发展路线图)中,为了建立一个微处理器时钟频率的趋势模型采用了一种概念,即时钟速度不能超过固定数量的门的传播延时。例如在2001年的ITRS中,一个16级的典型门延时被定义为全局时钟周期,而一个典型的门延时则指的是一个FO4(Fanout-of-4 Inverter Delay)。目前FO4作为一种延时单位被广泛采用,这样做的好处是在讨论体系结构如何影响性能时可以把工艺的因素放在一边。
在过去的十多年中,微处理器的时钟周期大幅下降。例如,Intel的6代X86微处理器的时钟周期从1992年的53FO4(i486DX2)下降到2002年的12FO4(Pentium4)。目前有研究指出,当同时考虑高性能和低功耗时,时钟周期为18FO4时,性能达到最优值。
所以根据这个指导思想,通过测试标准单元库所采用工艺的FO4值,确定使用该标准单元库后系统的最优频率值,可以指导设计者对系统进行合理的性能定义。
如果选取某工艺典型情况下,反相器的平均传输延时作为该工艺的FO4参考值55.36ps,根据时钟周期为18FO4时性能最优的结论得出:
T=18FO4=18×55.36ps=996.48ps
计算结果显示系统设计的最优时钟周期为1ns左右,工作频率1GHz左右。
通过对比该工艺厂家提供的时钟最小宽度数据和厂家标称可以达到的性能说明,该预估的时钟频率在这些数据范围之内,所以具有一定的参考价值。

3.3.5 设计工具流程验证

标准单元库的数据都准备好了以后,就可以供相关EDA工具使用,验证其数据是否可用。标准单元库的物理视图数据导入布局布线工具中的使用情况如图3-30所示。

6d6f9ae990af9e9f27f6605a2e58a0bac25880ea

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

fd4a32499a9990512de3fca25cac4fecf3459052

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

测试电路设计主要包括功能验证电路、工作频率测试电路、建立/保持时间测试电路、恢复/移除时间测试电路以及制定测试方案。

相关文章
|
26天前
|
缓存 安全 前端开发
构建高效后端服务:从理论到实战
在数字化浪潮的推动下,后端服务成为了支撑现代互联网应用的核心。本文旨在揭示如何打造一个既可靠又高效的后端系统,从基础架构设计、代码组织、性能优化到安全防护,全方位解析后端开发的艺术。通过实际代码示例和深入浅出的解释,引导读者理解并掌握后端开发的关键技术点。
|
1月前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
48 4
|
1月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
84 4
|
1月前
|
小程序 前端开发 算法
|
1月前
|
JavaScript API 开发工具
<大厂实战场景> ~ Flutter&鸿蒙next 解析后端返回的 HTML 数据详解
本文介绍了如何在 Flutter 中解析后端返回的 HTML 数据。首先解释了 HTML 解析的概念,然后详细介绍了使用 `http` 和 `html` 库的步骤,包括添加依赖、获取 HTML 数据、解析 HTML 内容和在 Flutter UI 中显示解析结果。通过具体的代码示例,展示了如何从 URL 获取 HTML 并提取特定信息,如链接列表。希望本文能帮助你在 Flutter 应用中更好地处理 HTML 数据。
117 1
|
2月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
39 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
JSON Dart 数据格式
<大厂实战场景> ~ flutter&鸿蒙next处理后端返回来的数据的转义问题
在 Flutter 应用开发中,处理后端返回的数据是常见任务,尤其涉及转义字符时。本文详细探讨了如何使用 Dart 的 `dart:convert` 库解析包含转义字符的 JSON 数据,并提供了示例代码和常见问题的解决方案,帮助开发者有效处理数据转义问题。
135 0
|
1月前
|
前端开发 JavaScript NoSQL
探索后端开发之旅:从基础到高级实战
【10月更文挑战第24天】在这个数字时代的浪潮中,后端开发如同一座巨大的宝藏岛,等待着勇敢的探险者去发掘。本文将作为你的藏宝图,引领你从浅滩走向深海,探索后端开发的广阔天地。无论你是初心者还是资深开发者,这篇文章都将为你提供价值连城的知识和技能。准备好了吗?让我们启航,一起构建强大、高效、安全的后端系统!
|
3月前
|
网络协议
keepalived对后端服务器的监测方式实战案例
关于使用keepalived进行后端服务器TCP监测的实战案例,包括配置文件的编辑和keepalived服务的重启,以确保配置生效。
87 1
keepalived对后端服务器的监测方式实战案例
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
99 1

热门文章

最新文章