2、面积估算基础:晶体管级面积估算、标准单元面积估算、互连线面积估算

做版图设计,第一关就是面积估算。你想想看,芯片面积直接决定了成本。我见过不少新手,上来就画版图,画到一半发现面积爆了,只能推倒重来。所以,在动手之前,心里得有本账。

面积估算,说白了就是三件事:晶体管占多大、标准单元占多大、互连线又占多大。咱们一个一个说。

2.1 晶体管级面积估算

这是最底层的估算。你得知道一个MOS管到底占多少面积。

一个MOS管的核心区域,就是有源区(扩散区)。它的面积大致等于:

晶体管面积 ≈ (W + 2*Ld) * (L + 2*Ld)

这里W是沟道宽度,L是沟道长度,Ld是扩散区超出栅的余量。嗯,这个Ld很关键,我早期做项目时吃过亏,以为只要算W和L就够了,结果实际版图画出来,每个管子都比预期大了一圈。

我个人习惯,在项目初期会用一个更简化的公式:

单管面积 ≈ W * L * 1.5

这个1.5是个经验系数,包含了扩散区、接触孔和必要的间距。当然,不同工艺节点这个系数会变。比如在0.18um工艺下,我常用1.3;到了28nm,就得用到1.8甚至2.0了。

重要提醒: 晶体管面积估算时,别忘了考虑阱间距和衬底接触。很多新手只算有源区,结果阱之间的隔离区占了很大一块,面积一下子就超了。

对于差分对、电流镜这类匹配要求高的管子,面积估算还要更保守。我记得有一次做ADC的版图,差分对管为了匹配,我不得不把每个管子拆成多个finger,并且加dummy管,面积直接翻了2.5倍。

2.2 标准单元面积估算

数字电路里,我们很少一个个管子去算。更常用的方法是估算标准单元的面积。

标准单元的面积,主要取决于两个因素:

  • 单元高度:通常由工艺决定,比如7nm工艺的标准单元高度可能是0.6um左右
  • 单元宽度:取决于逻辑功能的复杂度,一个反相器可能只有1-2个track宽,一个D触发器可能要8-12个track

我常用的估算方法是:

标准单元总面积 = 单元数量 × 平均单元面积

这个平均单元面积怎么来?我建议你从工艺库的datasheet里查。比如某个28nm工艺库,反相器面积是0.5um²,与非门是0.8um²,D触发器是3.2um²。然后根据你的设计里各种单元的比例,加权平均一下。

我的经验: 如果设计还没做完,不知道具体单元比例,可以先用一个经验值——平均每个逻辑门(等效门)占5-8个track的面积。这个数字在大多数数字芯片里都挺准的。

另外,别忘了标准单元之间的布线通道。我曾经做过一个项目,标准单元本身只占了60%的面积,剩下的40%全被布线通道吃掉了。所以,我建议你在估算时,把布线开销也算进去:

实际面积 ≈ 标准单元总面积 × 1.5 ~ 2.0

这个系数取决于设计的布线拥挤度。如果是高速设计,走线多,系数取大一些;如果是低功耗设计,走线少,系数可以小一些。

2.3 互连线面积估算

互连线面积,很多人会忽略。但说实话,在先进工艺下,互连线占的面积可能比晶体管还大。

互连线面积估算,主要看两点:

  • 走线宽度:由电流大小决定。比如电源线,电流大,线宽就要大
  • 走线间距:由工艺设计规则决定。不同金属层,间距要求不一样

我一般这样估算:

单根互连线面积 ≈ (线宽 + 间距) × 走线长度

但实际设计中,互连线是成片的。更实用的方法是估算布线资源:

布线面积 ≈ 总布线长度 × 平均线间距

这个总布线长度怎么来?我教你一个土办法:把设计里的所有net数量乘以平均net长度。平均net长度可以用芯片面积的平方根来估算,大概在芯片边长的1/3到1/2之间。

注意: 电源/地线的面积估算要单独做。它们通常走宽线,而且会占用专门的金属层。我见过有人把电源线和信号线混在一起算,结果电源压降超标,芯片直接废了。

还有一个容易被坑的地方——via(通孔)。每个via本身不占多少面积,但via周围的包围规则和间距规则会吃掉不少面积。特别是在多层金属切换的地方,via阵列一放,面积就上去了。

我曾经做过一个高速接口的设计,为了降低电阻,我在电源网络上用了大量via阵列。结果光via占的面积就比预期的多了15%。从那以后,我每次估算面积都会单独列一项「via开销」。

2.4 三种估算的整合

好了,三种估算方法都讲完了。实际项目中,你得把它们整合起来:

芯片总面积 ≈ 晶体管面积 + 标准单元面积 + 互连线面积 + 预留余量

这个预留余量,我一般取10%-20%。为什么?因为设计过程中总会冒出一些意想不到的东西——比如ECO(工程变更)要加逻辑,或者时序收敛不了要插buffer。

核心要点: 面积估算不是精确计算,而是快速评估。目的是在项目早期就发现面积风险,而不是等到版图画完了才发现放不下。

下面这张图,是我自己总结的面积估算流程,你可以参考一下:

面积估算流程 开始面积估算 晶体管级估算 W*L*系数 + 阱间距 标准单元估算 单元数量 × 平均面积 互连线估算 线宽×间距 + via开销 • 有源区面积 • 栅极延伸 • 匹配/ dummy开销 • 单元高度/宽度 • 布线通道开销 • 拥挤度系数 • 电源/地线 • 信号线 • via阵列 汇总:总面积 = 三项之和 + 余量 余量建议 10% ~ 20% 输出面积预算

这张图把整个流程串起来了。你从三个方向分别估算,最后汇总,再加上余量,就是你的面积预算。

好了,面积估算基础就讲到这里。记住,估算不是精确计算,它的目的是帮你快速判断「这个设计能不能塞进目标面积」。做多了,你自然会有感觉。

最后一个小建议: 每次做完一个项目,把实际面积和当初的估算面积做个对比。积累个三五个项目,你的估算准确率就会大幅提升。我自己就是这么过来的。

可可精品资料库