《CMOS集成电路后端设计与实战》——3.2 标准单元设计技术-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《CMOS集成电路后端设计与实战》——3.2 标准单元设计技术

简介:

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

3.2 标准单元设计技术

目前,标准单元库的设计面临着新的挑战。首先,由于芯片集成度越来越大,功耗成为设计中需要着重考虑的因素之一;其次,从成本考虑,芯片的面积利用率需要进一步优化;其三,由于系统级芯片的工作频率越来越高,从而对芯片的工作性能提出了更高的要求。目前,许多EDA厂商推出了针对深亚微米技术带来的问题解决方案与工具,但从现有的设计流程来说,对标准单元库进行针对深亚微米技术的优化仍是最关键的步骤。然而出于成本的考虑,通常在标准单元库中很难同时综合考虑高速、低功耗、面积来进行优化。

3.2.1 标准单元的基本介绍

集成电路设计中的单元库是所需单元符号库、单元电路结构库、版图库、电路性能参数库、功能描述库、设计规则和器件模型参数库的总称。从系统行为描述、逻辑综合、逻辑功能模拟,到时序分析、验证,直至物理设计中的自动布局、布线,都必须有一个内容丰富、功能完整的单元库的支持。另一方面,在自底向上的设计流程中,设计是从单元库中一个个具体单元开始的,逐步构成各级功能模块,直至整个系统。
标准单元法是库单元设计方法的一种,标准单元法的特点是各个单元高度相同宽度不等,单元宽度随单元功能的复杂程度而变,所有单元的电源线和地线位置相同,如图3-1所示。
图3-1所示为4种不同的电源线和地线的实现形式,可以看出电源线和地线可以处在单元的任何位置,目前主流的设计是选取图3-1c的实现形式,电源线和地线处在单元的最上端和最下端,信号端口处于单元的内部区域。在用标准单元构成电路版图时,每行单元的电源线、地线自然拼接。
标准单元库是用全定制方法精心设计好各种单元电路的版图,然后把这些经过优化设计并验证通过的单元版图存入数据库。芯片设计中根据设计需要调用单元库中的单元并将其排列成若干行,然后根据逻辑网表的连接要求将各单元的端口用金属线连接起来,最终得到所要求的芯片版图。
由于单元库中各个单元的高度相等、宽度不限,单元中的电源、地线及输入输出端口位置都有特殊的规定,使得单元与单元连接变得简单、有条理,布局也有规律,为以后的高层次的系统设计带来了很大的方便,使得本来很复杂、工作量很大的系统物理实现变得相对简单、容易,并且带有很强的规律性。
早期基于标准单元的物理实现,由于有限的布线资源,需要专门留有布线通道,如图3-2所示。

cbadd61b39a8420f9afdc9f79178bfd7dadfe435

现在由于工艺越来越先进,在器件尺寸不断缩小的同时,提供布线资源的金属层数也逐渐增多,单元与单元之间的连接可以直接通过不同层金属进行连接,所以一般情况下,已经不再需要布线通道的存在了,如图3-3所示。

c6a425d060a12d0a6d1ffac88d5b32be8042bff9

标准单元库中至少要包括AND(与)门、OR(或)门、NOT(非)门、DFF时序单元,这几类单元可以实现大部分的基本逻辑功能。除了这几类最基本的单元,对于芯片的实现还需要tie-high、tie-low、f?iller等物理实现所需的非逻辑功能单元,比如填充单元(f?iller)是在标准单元布局完成以后,用来把所有标准单元的电源和地以及构成晶体管的阱都连起来的物理辅助单元。
随着集成电路制造工艺技术的迅速发展和系统级芯片(SOC)的规模越来越大,设计越来越复杂。采用全定制设计提高了设计的性能和物理密度,但是成本太高。基于单元的设计优点是对于一个给定的工艺,单元只需要设计和验证一次,然后就可以重复利用多次,因此分摊了设计成本。为了缩短设计过程并使设计自动化,基于单元的设计越来越受青睐。标准单元库在基于单元的设计中地位十分重要,它是设计的基础,它为基于单元的设计流程的各个阶段提供支持,对设计的性能、功耗、面积和成品率至关重要。

3.2.2 标准单元的基本类型

一般来说各种门电路、触发器及各种I/O单元是一个标准单元库所必需的配置,这些配置可以满足一个纯数字电路的设计需要。其他大型复杂宏单元,例如模拟单元、内存(ROM、RAM、SRAM)单元等,在许多流片厂商中往往是作为IP形式提供的,所以也可以不完全纳入标准单元库中。标准单元分类简图如图3-4所示。
通常标准单元库中的标准单元按功能分类一般分为以下几种:
1)逻辑门单元。逻辑门单元是指具有逻辑功能的单元,比如与门、或门、与非门、或非门、与或非门、或与非门、异或门等,并且每种类型的逻辑门存在多个不同驱动强度的单元。

75da645d99da682f4da6a70dcf5b2be0bf916020

2)驱动单元。驱动单元分为逻辑正向和逻辑反向两种形式,通常逻辑正向驱动单元称作缓冲器(buffer),逻辑反向驱动单元称作反相器(inverter)。每种驱动单元可以提供多个不同输出驱动能力的单元。
3)时序单元。时序单元指用于储存逻辑状态的单元,比如触发器、锁存器、移位寄存器等。其中触发器又包括D触发器、RS触发器、JK触发器和T触发器,每种触发器还可以设有清零/置位端等。
4)运算单元。运算单元包括半加器、全加器、减法器和二位比较器等。这些单元通过级联的方式可构成更多位的运算单元如乘法器、除法器等。
5)混合逻辑单元。混合逻辑单元具有比较复杂的逻辑功能,比如多路选择器、计数器、编码器、译码器、奇偶发生器等。
6)I/O单元。I/O单元是芯片与外界交换信息的接口单元,其接口端用于输入输出的金属压焊块(PAD)。
7)物理单元。物理单元指没有逻辑功能但是在物理实现上需要使用的单元,比如tie-high、tie-low、f?iller单元等。
有的高级标准单元库中还设计了如时序单元阵列、乘加部件等功能比较复杂的宏单元,为满足用户的特殊要求而加入的扩展单元。
一个好的标准单元库应该能提供综合工具实现各种可灵活选择的单元,这样能够为设计提供最优的逻辑实现结果。因此良好的标准单元库应该具备如下几个特点:
1)拥有各种逻辑单元类型并且同时提供多种驱动力强度的同类型单元。
2)缓冲器(buffer)和反相器(inverter)的驱动强度变化范围大。
3)拥有上升和下降时间均衡的驱动单元,该类型单元主要用于时钟树的实现中。
4)拥有相同逻辑功能,但输出可以同时提供正向和反相输出的时序单元,比如时序单元的输出即有正向输出Q端也有输出取反端QN。
5)拥有相同的逻辑功能,但分别提供输出正向和输出反相的组合逻辑单元,比如与门单元(AND)和与非门单元(NAND)。
6)拥有多种高扇入的逻辑单元,用于逻辑优化,比如多输入或与非门单元(OAI)。
7)拥有多种驱动强度的正沿触发和负沿触发的时序单元。
8)拥有多种不同置位复位端组合的时序单元。
9)拥有多种用于修正保持时间违反的延时单元。
10)拥有各种灵活的物理单元,用于实现复杂芯片版图的完整性。

3.2.3 标准单元库提供的数据

标准单元库支持设计所需的标准单元库模型的数据主要包括:
1)GDSII版图库。GDSII版图含各种标准单元的实体版图(全部掩膜版数据),一般采用全定制图形编辑方式进行设计。GDSII版图也是标准单元库的核心部分,这些版图库可以用来生成自动布局、自动布线后的电路版图,并可以对版图进行工艺规则的检查、电特性规则检查、版图参数提取以及版图和原理图的相互校验。如果是更复杂的版图还可以用细致的EDA验证工具进行验证。
2)符号库。符号库用于电路的逻辑输入,是用几何图形表示单元的符号。符号库用于定义和命名单元的输入/输出引线,每一个单元都有表示该单元的逻辑符号和输入/输出引线的名称。
3)LIB时序库。LIB时序库用于描述每个标准单元的基本逻辑功能、延迟时间参数等,其中延迟时间参数是通过投片测试或仿真提取获得的。每一个标准单元中都列出了该单元的功能、真值表和有关的延迟参数,利用这些单元的功能参数库可以进行电路的Verilog/VHDL数字仿真,确定所设计电路的功能正确与否,检查异步时序电路中的竞争和冒险等工作。
4)LEF布局布线库。LEF布局布线库用于描述每一个标准单元版图的外形尺寸、输入输出端口的几何位置坐标和图形特征等,用于标准单元实现方法中的自动布局、布线调用。利用LEF布局布线库,就可不必考虑太多单元版图内部的细节来布局布线,从而大大地减少了布局布线工具对物理版图数据的处理量。
5)spice网表。spice网表是标准单元的电路网表,主要用于做版图与电路图一致性检查即物理验证中的LVS检查。
6)Verilog与VHDL仿真模型。Verilog与VHDL仿真模型主要用于前端设计时,做代码综合和功能仿真验证。

3.2.4 标准单元设计参数

对于标准单元库,设计者总是非常关心单元的一些重要参数,比如单元延迟参数、扇出延迟特性、线延迟参数、最高工作频率等,因为只有清楚地知道这些单元参数及特性之后,在利用这些库进行设计时才能把握设计灵活性使设计结果最优化。在集成电路代工厂生产工艺特征尺寸不断缩小的同时,芯片的逻辑参数(时延、功耗、建立时间、保持时间等)也必须随工艺的不断进步而不断更新。

3.2.4.1 标准单元物理参数

标准单元在物理版图上所遵循的主要参数信息如图3-5所示。

aa915fc416a16fcfb16b45235ce3fe5469f533fb

1)门栅长度(Drawn gate length)。该参数用于说明该标准单元的栅长度,一般是指工艺大小,比如0.13μm、0.028μm。
2)金属层数(Layers of metal)。该参数用于说明标准单元库所在的工艺下,能使用的金属层数。
3)版图格点(Layout grid)。该参数用于说明标准单元版图可编辑的最小间距,比如0.005μm。
4)垂直PIN脚格点(Vertical PIN grid)。该参数用于说明垂直走线方向上PIN脚的格点间距是多少。在标准单元设计方法中,大多数的布局布线工具能够对位于格点上的PIN脚进行高效地端口连接,因此所有标准单元的PIN脚应该位于垂直和水平格点上,关于格点的概念会在后面章节中说明。
5)水平PIN脚格点(Horizontal PIN grid)。该参数用于说明水平走线方向上PIN脚的格点间距是多少。
6)单元电源和地线宽带(Cell power and ground rail width)。该参数用于说明标准单元所用电源地线的宽度。
7)单元高度(Cell height)。该参数用于说明标准单元的高度,主要说明该高度能包含多少水平方向上的布线通道数。

3.2.4.2 格点及其设置

布线格点指的是布局布线中走线规则下垂直水平方向上的交叉节点,如图3-6所示。

686537d75768ae43aa82eece62035b4ae2ed8786

1.?格点间距设置
格点间距可以根据3种形式来设置,即线与线距离、线与通孔距离、通孔与通孔距离,如图3-7所示。
1)线与线距离。线与线距离是布线金属层之间的最小DRC间距,基于满足线与线距离的格点间距定义可以最大化地利用走线资源。由于各层金属之间会通过通孔进行连接,如果通孔的面积小于金属线的宽度,那么就不会出现DRC违反,但是如果通孔的面积大于金属线宽,布局布线中会由于金属线到通孔的间距无法满足最小DRC间距的要求而导致DRC违反。

993694f6de1a919dcec4543930dd34b6bd7f5dbc

2)线与通孔距离。当通孔的面积大于金属线宽的时候,线与通孔距离是布线金属层与通孔之间的最小DRC间距,基于满足线与通孔距离的格点间距定义也可以比较高效地利用走线资源,但是和线与线距离存在的问题一样,当相邻的金属线在相同水平或者垂直方向上同时存在同类型的通孔时,可能出现通孔之间最小间距DRC违反,因此在走线资源的任何位置不能随意地通过通孔进行金属线层与层之间的连接,需要布局布线工具通过算法来控制通孔之间最小间距,防止DRC违反情况的发生。
3)通孔与通孔距离。当通孔的面积大于金属线宽的时候,通孔与通孔距离所利用的走线资源比前面两种格点间距的定义方法要少,但是却能很好地解决前面两种格点间距无法解决的最小间距DRC问题。定义格点间距满足通孔与通孔距离后,布局布线工具可以非常灵活地在走线资源的任何位置进行金属线层与层之间的连接并不会出现最小间距DRC问题。
2.?垂直水平布线规则设置
垂直水平布线规则定义了金属层走线方向、走线金属宽度,走线金属间距和走线通道偏移值。金属层走线方向定义后,信号线走线时的方向改变可基于多层金属走线并通过错层切换走线方向的方式实现。走线金属宽度应该大于DRC规则的最小金属宽度,走线金属间距与格点间距相关。
走线通道偏移值定义了走线通道是否从原点开始还是偏移一定距离,走线通道偏移值分为水平和垂直两个方向上的定义,如图3-8所示为水平方向上走线通道偏移值为0和半个格点距离的对比图。

82a0730041d23ae5a87b9be3dc987c3b83641314

图3-9所示为垂直方向上走线通道偏移值为0和半个格点距离的对比图。

d4b33b7d954b4c632ee595d0b83d3e14be505e55

一般情况下,为了能够在标准单元拼接后得到更好的布局结构且有效地利用布线资源,垂直和水平走线通道都设置了偏移半个格点的间距(如果无偏移,最边的走线通道只有一边有标准单元,资源有些浪费),如图3-10所示。
同时标准单元的高度应该是垂直方向上的格点间距的整数倍,单元宽度应该是水平方向上格点间距的整数倍,标准单元的有效端口位置应该位于格点上。

3.2.4.3 标准单元端口设置

标准单元端口分为信号端口和电源端口两类,基于标准单元自身版图的特殊要求,需要对这两类端口进行不同的设置。

52f5511fa75ab47609ec8ddf381ba013ce60a686

1.?标准单元信号端口
标准单元的信号端口即输入输出PIN脚,如图3-11所示,输入输出PIN脚应该在垂直与水平布线通道的交界处,即格点处。布局布线工具可以对没有在格点的PIN脚进行连线,但是这样会增加布线的难度同时降低布线的效率,作为最基本同时又是使用率最高的基础单元应该尽量符合高效布线策略的要求。

3642f323e27257e1ed1a73af9f73e6cd719e19bd

在标准单元设计时为了提高可连接性,信号端口应该分别在水平垂直方向上错开放置,这样可以提高布线通道的利用率。同时可以扩大信号端口的金属层面积,达到覆盖多个格点来提高连通性的目的。
一个具体的标准单元PIN脚在格点上的示例如图3-12所示。
图3-12中的标准单元,输入PIN脚CK和D端口以及输出PIN脚Q端口都处在垂直和水平布线通道的格点上,同时有的端口金属层覆盖多个格点。
2.?标准单元电源端口
在标准单元库中,所有单元都是同一高度的。单元版图允许背靠背的连接来分享电源和地线,所以标准单元的电源端口Vss和Vdd在单元拼接时,由于单元背靠背或者相邻连接就自动拼接在一起了。由于上下相邻背靠背,上下相邻两行的电源/地线自动拼接。由于左右肩并肩相邻,左右相邻的标准单元电源/地线自动拼接。如果左右没有肩并肩紧紧相连,后续会插入填充单元来使同一行上的标准单元肩并肩紧紧相连,达到电源地线连接的目的。

b2911ddc7cd88eb56ae248769aa48fa24185be12

标准单元的Vdd与Vss金属线进行无缝拼接如图3-13所示。
图3-13所示的金属层3和金属层5用于水平走线、金属层4用于垂直走线,通过单元端口的错开放置有效提高了布线通道利用率。标准单元的Vdd与Vss金属线通过上下两个方位的单元进行无缝拼接。标准单元拼接时阵列间没有间隔,这使面积减少到最小,但是对于阻塞比较严重的设计,不得不在标准单元行之间设置间距来增加足够的布线通道,如图3-14所示。

c71b10355776cbe842431e45d86493766e458e6f

由于默认的标准单元库设置的初衷是单元背靠背的边界重叠共享电源地金属线,但设置了行间距后可能引起DRC违反,所以目前主流生产工艺的设计一般不设置标准单元行间距,如果一定要隔开标准单元行,那么需要人工避免标准单元行可能出现的DRC违反。

3.2.4.4 传播延时与转换延时

传播延时是标准单元本征延时、基于负载大小的延时及基于输入激励转换速度的延时的总称。传播延时的大小一般定义为输入激励的电源电压改变50%的点与输出电压改变到电源电压50%的点的时间间隔,但是该定义中的电源电压改变的参考点可以根据具体工程应用灵活调整。如图3-15所示为传播延时的定义。

91f884857e08deee57d3cb45be922835540b9d44

输入与输出的转换延时一般定义为信号电压从原始电源电压的10%变化到电源电压90%的时间间隔,同样该定义中的电源电压参考点可以根据具体的工程应该灵活调整。如图3-16所示为转换时间上升与下降时的定义。

c0d9ce51d208ba34c82d038af7a93ca96a1631ee

影响传播延时与转换延时的因素包括:温度、供电电压、工艺变化、扇出负载大小、互连负载大小、输入激励转换时间、输入信号的极性(上升或下降)及时序约束。在时序模型中提供包含有输入激励转换时间对传播延时的影响信息,该信息在时序模型中是以查找表的形式提供的。

3.2.4.5 衰减因子

衰减因子是指时序数据受工作环境影响而适当乘以的缩放系数。衰减因子由许多不同的标准单元在不同影响程度下,实测数据统计出来的平均值。但是该因子并不适合所有的单元,有些特殊组合的单元可能要好于或坏于该计算结果。
下面我们讨论一下单元延时的计算。当传播延时、输出负载、衰减因子确定后,就可以通过下面的计算公式预估出单元总的传播延时,计算公式如下:

   tTPD=(KProcess)·[1+(KVolt·ΔVdd)]·[1+(KTemp·ΔT?)]·ttypical
ttypical = tintrinsic+(Kload·Cload)
式中 tTPD——总的传播延时;
  ttypical——在典型工艺条件下的延时,典型条件是温度25°,标准电压供电与标准的工艺变化率;
   Kload——负载衰减因子;
   Cload——输出端的电容负载;
KProcess——工艺衰减因子,分别对应典型、最优、最差情况下三个取值;
   KVolt——电压衰减因子;
   ΔVdd——实际电压与理想电源的差值;
  KTemp——温度衰减因子;
      ΔT——临界温度值,定义为-25°。

3.2.4.6 时序参数

时序参数的定义是指为了保证单元能够实现正确的逻辑功能所规定的时序约束信息。时序约束信息包括:建立时间、保持时间,恢复时间及最小脉冲宽度。
时序约束会影响传播延。本征延时的计算是基于比较宽松的时序约束(远大于建立时间、保持时间、恢复时间及脉冲宽度)定义的。在较严格的时序约束下,单元需要满足正确完成逻辑功能的延时小于该时序约束下规定的延时要求。
1.?建立时间
对于时序单元,建立时间是指为了保持单元功能的正确性,输入数据应该在时钟信号有效前到达并保持的最小时间。建立时间的测量值定义为数据信号的电压达到标准电压50%时间点到时钟信号电压到达标准电压50%时间点的时间间隔。为了测量建立时间,数据信号需要保证时钟沿有效后的保持时间是无限长的。图3-17说明建立时间的定义。

2af0cc110aa512bf8b219ff788b18718e66f3acc

2.?保持时间
保持时间是指时序单元要实现正确的逻辑功能,数据在时钟沿有效后必须保持的最小时间长度。保持时间的测量值定义为数据信号的电压达到标准电压50%的时的间点到时钟信号电压到达标准电压50%的时间点的时间间隔。为了测量保持时间,数据信号需要保证时钟沿有效前的建立时间是无限长的。图3-18说明保持时间的定义。

ea3b7c9bb312e18596b76d90744dc6057a522490

3.?恢复时间
恢复时间是指为了保证单元正确的逻辑功能,要求复位/置位信号在时钟有效沿之前保持有效的最小时间长度。恢复时间的测量值定义为复位或清零信号的电压达到标准电压50%的时间点到时钟信号电压到达标准电压50%的时间点的时间间隔。恢复时间的测量需要保证复位或清零信号在时钟沿有效后保持无限长的保持时间。图3-19为恢复时间的定义。

d53a965490107de6b798a1d57779bc28d3160d40

4.?移除时间
移除时间是指为了保证单元正确的逻辑功能,要求复位/置位信号在时钟有效沿之后继续保持有效的最小时间长度。移除时间的测量值定义为时钟信号电压达到标准电压50%的时间点到复位或清零信号的电压到达标准电压50%的时间点的时间间隔。移除时间的测量需要保证复位或清零信号在时钟沿有效前保持无限长的建立时间。图3-20为移除时间的定义。

876dd152513be8dab426c14cf8b67ae9df50d310

3.2.4.7 最小脉冲宽度

最小脉冲宽度是指脉冲信号波形的开始到结束之间的最小时间间隔。最小高电平脉冲宽度测量值定义为信号的上升沿电压达到标准电压50%的时间点到信号电压下降沿到达标准电压50%的时间点的时间间隔。最小低电平脉冲宽度测量值定义为信号的下降沿电压达到标准电压50%的时间点到信号电压上升沿到达标准电压50%的时间点的时间间隔。图3-21为最小脉冲宽度的定义。

afd11901ac749d875f141249328e7a52c9061fbe

所有对标准单元的时序测量都必须大于最小脉冲宽度,比如当输入信号的脉冲小于最小脉冲宽度时,测量结果会出错。

3.2.4.8 功耗分析

单元在根据输入信号的变化进行逻辑求值运算中损耗的内在功耗主要由单元的自身结构和功能决定。对设计的功耗计算是一个与单元输入输出情况和工作频率相关的函数。输入输出情况包含输出与输出端口及所有的输出负载。
功耗计算
功耗计算的结果基于供电电源的电压、运行频率、内部电容及输出负载。功耗计算公式如下:

4c13fa3860799f6f1c75e77a12232ee86dafae94

式中 Pavg——平均功耗;
  x——输入管脚的数量;
  y——输出管脚的数量;
  Ein——对应输入管脚消耗的与开关频率相关的单位功耗;
  f?in——在正常工作频率下输入管脚的开关频率;
  Con——某输出管脚的外部负载,包括所有输出管脚与输出驱动相连的电容、外加的布线金属走线电容、实际或预估的负载;
  Vdd——实际工作的理想电压;
  fon——在正常工作频率下输出管脚的开关频率;
  Eos——输出管脚所消耗的与开关频率相关的单位功耗。
通过门级模拟器对典型的输入管脚进行模拟并测量所有相关节点的变化结果来获得单元输入管脚与特殊单元输出管脚的开关频率。总的平均功耗通过把所有端口的平均功耗相加而得。
例3.1 触发器DFF单元的功耗计算。
假设触发器单元时钟端的开关频率为133MHz(时钟频率为66.5MHz),数据输入与输出管脚的开关频率都为20MHz,输出管脚的外部负载为0.02pf。使用交流功耗查找表提供DFF的基本功耗数据,DFF单元的功耗计算使用如下公式:

参数设置如下:

9de334e4b0f1874777a57d2ea22c8ca3312280e2
x: 2            Ei1: 0.0056uW/MHz    Ei2: 0.0063μW/MHz
f?i1: 20MHz           Co1: 0.02pf        Co2: 0.02pf        Vdd: 1.0V
fo1: 20MHz        fo2: 20MHz        Eos: 0.0060μW/MHz

通过公式可以得到平均功耗为1.46uW:

de22a9099b1a362fd6dec568faf0c59be66e024c

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: