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。
核心要点: 面积估算不是精确计算,而是快速评估。目的是在项目早期就发现面积风险,而不是等到版图画完了才发现放不下。
下面这张图,是我自己总结的面积估算流程,你可以参考一下:
这张图把整个流程串起来了。你从三个方向分别估算,最后汇总,再加上余量,就是你的面积预算。
好了,面积估算基础就讲到这里。记住,估算不是精确计算,它的目的是帮你快速判断「这个设计能不能塞进目标面积」。做多了,你自然会有感觉。
最后一个小建议: 每次做完一个项目,把实际面积和当初的估算面积做个对比。积累个三五个项目,你的估算准确率就会大幅提升。我自己就是这么过来的。
可可精品资料库