黄越(10月31改动)第二章标准单元技术章节预览本章将要了解的内容有:⏹为什么在数字电路版图设计中标准化是重要的?⏹在模拟电路版图设计中标准化技术的优点⏹为什么要把一些单元放在一起⏹只有很少的金属层布线时应该了解的注意点⏹有很多的金属层布线时应该了解的注意点⏹为了布线如何插入布线通道⏹什么时候布局粗的电源线⏹高密度区域信号的输入与输出⏹如何保证单元之间有合适的距离⏹如何完全通过版图设计规则的检查⏹如何节约设计时间⏹如何保护门电路不被损坏标准单元技术的设计思想为使自动版图设计工具能够布局布线,需要制定规则。
比如单元设计规则、布局规则、测试规则。
稍稍想象一下塑料拼装玩具,这些规格统一的玩具块都在相同一个地方有用于连接的连接头和连接空隙。
用这些塑料方块可以拼成一个大方块。
所有的塑料块都可以相互拼装。
因为这些塑料块都是标准的长、宽、高,并按标准格式将塑料块拼装好。
不可能将任何非标准的块与这些标准的块拼在一起。
像这些标准塑料方块一样,用自动版图设计软件依据网格线和设计规则来设计单元库。
标准单元库之间同样要求能够相互集成。
为实现这个设想人们利用各种标准化的技术来构造这个特殊的单元库。
标准化技术同样也适用于模拟电路版图设计,即使是不使用自动版图设计软件的情况。
由于这些标准化技术在数字电路版图设计中是强制执行的,所以本章的重点及举例主要使用数字电路版图设计。
标准网格通过将器件布局在标准网格上,标准化的版图系统可以自动布线并能够保证标准单元所有可行的布局。
这些网格就像一个个标准平面正方形塑料块拼装在一起。
这是我们首先讨论的问题。
讨论过网格后,再来讨论一下布局在这些网格之上的标准单元。
如果我们利用网格布局并使用设计规则统一的(设计)单元,就可以使用自动工具来进行布局布线。
不考虑软件的决定性的因素的情况下,我们的电路就会正确的设计出来。
基于网格的系统典型的布线软件是基于网格的。
基于网格的布线器有两个限制。
固定线宽以及只能将器件对称的布在网格线上。
不能在基于网格的系统中随心所欲的进行设计,必须符合网格布线规则。
决定网格大小的因素??假设第一金属层最小线宽为1微米,换句话就是最小线间距为1微米的工艺下。
每根线的宽度为1微米,两根线的间距为1微米,因此两根平行线的最小距离为3微米。
图2-1 网格大小举例,最小线宽为1微米,最小线间距为1微米。
因此,两根线占了3微米的宽度,在这种工艺中,已经建立了线中心到线中心间距为2微米的网格。
在图2-1示例中,可以看到两根线的线中心距离是半根顶部金属线的线宽,加上两根线的线间距,再加上半根底部金属线的线宽,总共是2微米。
两个金属线的线中心距离是2微米,所以要使用基于2微米的网格。
先确定在所使用的工艺中的最小线宽和最小线间距,才能确定将使用多大的网格。
最小线宽越宽,线间距越大,所使用的网格就越大。
在本例中,使用2微米的网格可以保证在这个工艺中按工艺要求布线总是正确的。
设计尺寸决定网格的大小在这个工艺中我们可以在第二金属层,甚至更多层金属层上布线。
首先先定义基片上布满X(水平方向)和Y(垂直方向)的网格线。
基于网格的布线器只能将线布在网格线上,从一个网格交叉点到另一个网格交叉点。
图2-2 自动布线器只能在X轴和Y轴的的网格线上布线尽管布线受到网格线的限制,但它使自动布线软件可以尽可能自动布线,基于网格的布线器布线时完全依赖这些网格。
基于网格的布线器可以在不同层使用不同大小的网格布线吗?也许你会在不同层使用不同大小的网格,但当试图连接不同层的布线时,布置用于连接在不同层的水平和和垂直线的通孔时变得很棘手。
试着在一种网格的上面再画上稍微大一点的另一种网格,就会发现两层的网格交点几乎没有一个是重叠在一起的。
所以,使用不同大小网格的布线的金属层几乎是不可能连通的。
做过试验后,我们了解了什么才是基于规则的布线器应该做的(见下一节)基于规则的布线器现代工艺中,同一工艺使用不同网格尺寸,因为不同层的金属线的最小宽度和最小线间距不同。
若强制所有层上的网格使用同一种尺寸的话,人们将不得不使用芯片所有层上最大的需求尺寸。
例如,如果在某一层可以使用1微米的间距,为何还要强制在该层使用2微米的间距呢?接下来看看如何解决这个问题。
基于规则的布线器是基于网格的布线器的升级版本。
每一层布线是用实际的设计尺寸来替代固定尺寸。
因为简单、容易使用,绝大多数人使用基于网格的布线器。
我们不必将每一层的网格尺寸整合起来。
在老版本基于网格的布线器中,只需告诉网格在哪儿布线器就会把线布在网格线上,布线工作变得非常容易,布线软件也容易编写。
然而,使用基于规则的布线器可以获得更加紧凑的线路。
每一金属层的线宽度和线间距可以不同,一些层上的线路可以进一步压缩,可以有更小的网格尺寸,节约版图空间。
每层按方向的布线技术计算机可以在第一金属层随意的布线。
然而,如果把芯片所有的部分都布在第一金属层的话,将会画地为牢无法布通。
就像你与你的朋友在玩铅笔和纸的游戏,将对方陷入一个网状的陷阱中。
在电影“TRON”中有一个关于两个摩托车手玩的游戏。
两位骑手比赛开摩托车试图用车印将对方圈住。
够快、够酷的电影。
假设要在同一层布成百上千的器件,如果随意布线的话,发现很快就会阻塞其它器件的布线路径。
为了能够使所有很多器件的版图能够布线布通,必须在某些地方使用第二金属层,以解决在第一层形成陷井的地方的布线问题。
人们使用两个金属层的通道“通孔”将多层板的线路连接起来。
使用基于网格的系统,连接第一和第二层金属层的通孔只能在线路通过的网格线上。
使用何种工艺决定人们使用多大的网格。
这里仍然使用2微米的网格来举例。
像上面提及的,在第一金属层布线时只能精确地沿着网格线来布线,在第二金属层布线时同样也要使用同样的方法。
如果在两层金属层中都使用网格来布线,并对布线不加以约束,随意布线的话,第一和第二金属层很快就不能继续布线了。
图2-3 你曾经和你的朋友玩过像这样的陷阱游戏吗?即使有两层,你很容易便发现很快你就不能再布线了。
与在一层板上随意布线相比,在二层板上随意布线布通的概率会更高。
因第二层板能将在无法在第一层板上布通的线继续布下去。
但是,即使是这样,我们也会很快陷入绝境。
人们随意布线时,为了保证能够布通常常需要越来越多的金属层。
但是,实际上是没有这么多的金属层可供我们使用。
有一个比较好的方法可以较好的解决这个复杂问题。
如果只在第一金属层布水平线,第二金属层布垂直线,你会觉得这个想法怎么样?天才的想法!绝对天才的想法!图2-4 这种设计技巧允许能仅仅使用两层金属使得具有复杂交叉点的线路布通,并且不会形成“陷阱”。
第一金属层只布水平线,第二金属层只布垂直线。
若要改变布线方向,只需改变金属层布线即可。
例如,当你要从一点到另一点布线的时候,首先在第一金属层布水平线,接着通过通孔连到第二金属层布垂直线。
水平线、垂直线因在不同的板上所以不会形成交叉。
使用这个技巧,仅用二个金属层,就可以布通所有的线路而不会形成“陷阱”。
你认为如果平行线垂直方向仅移动1或2个网格时是否仍采用二个金属层来布线?在图2-5中,可以看到5根平行线在相同的部位都上跳一个网格,你是否考虑不用第二金属层布这些短的垂直线?图2-5 你是如何考虑非常短的跳线?是只需在同一金属层布线,还是布到另一层上去的?如果垂直跳线的长度只有1~2个网格距离,一般跳线和水平线布在一个金属层上。
(如果这就是你的回答的话,那么恭喜你答对了。
)迟钝规则:对于短的跳线不要改变金属层布线层大致说来,将垂直线转入第二金属层布线可以使第一金属层上不更多的水平线,但是如果两个水平线之间的跳线只相距一个网格也采取这个方法,两个平行线之间也不可能布其他的平行线,所以我们用这个方法也不能获得任何好处。
不仅如此,还有可能产生不利因素。
当你使用某一金属层布线时,其他的线路就不能使用该层同一位置布线。
而在同一层同一位置上重复布线的可能性是存在的。
当这种情况出现时,你就不得不会选择使用第二金属层布短跳线来避开重复布线的位置。
两根线之间也也不允许再布其他的线了。
图2-6 第二金属层的某个区域已被占用了。
使用这个技巧,还可以获得可靠性的提高。
因为连接短跳线的通孔可能会导致高阻抗。
不仅如此,通孔有时在加工时会没有被完全蚀刻。
因此,仅仅跳开1~2个网格的平行线不必使用第二层布线,只需在第一层布线即可。
图2-7 小跳线只需在同一层布线即可基于网格系统的库规则设计库单元当使用基于网格的布线器布线时,需要制定一系列涉及布线所有情况的设计规则。
一般我们就是使用这些规则来设计完整的标准单元库。
每个单元、每个反相器、每个与非门…所有器件的设计都服从这些规则。
输入、输出线的调整图2-8是一个标准的反相器的逻辑图,输入标为A,输出标为Z图2-8 标准反相器的逻辑图要将输入线A和输出线Z用网格线完全布好。
否则将丢失通过自动布线器所布的连接点。
图2-9显示了反相器在标准单元中的图形,注意输入和输出A、Z位于单元的中心。
输入、输出线A和Z不能随便的布线,必须像所有走线一样布在网格上。
如何将A、Z用布线连起来呢?图2-9 是标准反相器单元的版图,当只能在网格上布线时,如何保证接线是好的呢?将网格放在反相器的版图上,这样用网格布线就容易的多了。
图2-10网格系统覆盖在标准化的反相器的版图上面,注意输入、输出端用网格线对准。
使用自动布线程序便可以完成本单元的布线。
观察反相器的布局可以发现A和Z连接十分方便,因为A和Z位于水平网格线和垂直网格线的交点上。
必须用同样的方法将标准单元中的所有构件放在网格交叉点上。
所有版图上的如走线、单元和交叉点等都要遵守这些规则。
例如有关布局的规则和最小间距,否则就不能保证能通过自动布线系统的DRC和LVC的验证。
不仅要求所有单元要与网格的尺寸相符合,而且要求单元内部器件也要与网格吻合的很好。
这似乎是一个很一般概念,但人们会惊奇的发现单元一旦布局好后,内部构件的精确定位就变得容易的多。
(先布内还是先布外?)最近我们发现了一些问题,有些人没有将部分单元器件精确地定位在网格的交叉点上,只是稍稍偏了一点。
自动布线器在布线时,认为有足够的空间可以布下一根线,实际上线可能与该器件连接再一起了。
不过单元精确的布局,那么空的网格点离单元内部器件的距离足够远的话,就不会产生上述的错误。
发生这种错误时我们不得不对内部器件重新布局。
最后的要点是将标准单元的输入和输出端不仅布在X方向的网格线上而且要布在Y方向的网格线上。
使自动布线软件在水平和垂直方向都能够发现它们,这种做法听起来容易,但是却要认真仔细的对待的问题。
固定的高度,不定的宽度如果库中每个库单元的都有不同大小的电源端。
每个库单元的高度都不同,那么布线工作将陷入一片混乱。
使用软件也难以布通,即使这些器件是布局在网格交叉点上。