3、面积评估指标:标准单元面积、宏单元面积、互连线面积、总面积计算

做后端的人,天天跟面积打交道。但说实话,很多人对面积的理解还停留在「把标准单元加起来就完事」的阶段。我早年也犯过这个错,结果流片回来发现芯片比预期大了一圈,那叫一个尴尬。

面积评估,不是简单的加法。它是一门精细活。你得搞清楚三块东西:标准单元面积、宏单元面积、还有互连线面积。这三者加起来,才是真正的总面积。

3.1 标准单元面积

标准单元,就是那些逻辑门、触发器、缓冲器。它们是最基础的积木。每个标准单元的面积,在工艺库的 .lib 文件里都有定义。你打开看看,会看到类似这样的信息:

cell (AND2X1) {
  area : 2.3328;
  ...
}
cell (DFFQX1) {
  area : 8.7552;
  ...
}

这里的面积单位,通常是平方微米(μm²)。我习惯在项目初期,先跑一个快速综合,看看标准单元的总面积大概是多少。这个数字,基本决定了你的芯片核心区域的大小。

核心公式:

标准单元总面积 = Σ (每个标准单元的个数 × 该单元的面积)

嗯,这里要注意:标准单元的面积,不是一成不变的。同样的功能,驱动能力不同,面积差很多。比如一个驱动能力强的缓冲器,面积可能是普通缓冲器的两三倍。所以,你在做综合的时候,要留意工具是不是过度使用了高驱动单元。我见过一个项目,综合出来的标准单元面积比预期大了15%,就是因为工具自动选了太多高驱动单元。后来我们加了面积约束,才压下来。

3.2 宏单元面积

宏单元,就是那些SRAM、ROM、PLL、ADC之类的硬核。它们的面积,通常是固定的。你拿到的工艺库,会提供一个 .lef 文件,里面定义了宏单元的尺寸。

举个例子,一个256×32的SRAM,尺寸可能是 200μm × 150μm,面积就是 30000 μm²。这个数字,你直接拿来用就行。

但有个坑:宏单元的摆放,会影响周围标准单元的利用率。你想想看,一个巨大的SRAM放在中间,周围的标准单元就只能绕着它走。这会导致标准单元的密度下降,实际需要的面积会变大。我曾经在一个项目中,把SRAM全部挤在芯片的一角,结果标准单元的利用率从85%降到了70%,最后不得不把芯片尺寸放大。

我的经验:

宏单元的面积,不仅要算它自己,还要算它周围的「隔离带」。一般建议在宏单元周围留出至少 5-10μm 的空白区域,用于走线和放置去耦电容。

3.3 互连线面积

互连线面积,这个很多人会忽略。但说实话,它占的比例不小。尤其是在先进工艺下,互连线越来越密,它的面积影响越来越明显。

互连线面积怎么算?简单说,就是所有金属走线的总面积。但实际中,我们不会一根一根去算。工具会给你一个估算值。在布局布线之后,你可以用命令查一下:

report_net_area

这个命令会输出所有互连线的总面积。我一般会在布线完成后,看一眼这个数字。如果它超过了标准单元面积的20%,我就知道布线资源可能有点紧张了。

互连线面积的大小,跟你的设计复杂度、金属层数、还有布线策略都有关系。层数越多,互连线面积越小,因为你可以把线叠起来走。但层数多了,成本也上去了。这是个 trade-off。

避坑指南:

我曾经在一个项目中,忽略了互连线面积,结果芯片的最终尺寸比预估大了8%。原因是那个设计里有很多长距离的全局信号线,它们占用了大量的布线资源。从那以后,我每次做面积评估,都会把互连线面积单独列出来,跟标准单元面积一起看。

3.4 总面积计算

好了,现在我们把三块加起来:

面积类型 说明 占比(典型值)
标准单元面积 逻辑门、触发器、缓冲器等 50% - 70%
宏单元面积 SRAM、ROM、PLL等硬核 20% - 40%
互连线面积 所有金属走线 5% - 15%
总面积 三者之和 100%

总面积 = 标准单元面积 + 宏单元面积 + 互连线面积

但这里有个细节:实际芯片的面积,通常比这个总和要大。为什么?因为还有电源地网络、IO pad、还有各种 dummy 填充。这些都会占用面积。所以,我一般会在计算出的总面积基础上,再乘以一个 1.1 到 1.2 的系数,作为最终的芯片面积预估。

实战建议:

在项目早期,你可以用这个公式快速估算芯片面积:

芯片面积 ≈ (标准单元面积 + 宏单元面积) × 1.15

这个1.15的系数,包含了互连线、电源网络、以及填充单元的面积。当然,具体系数要根据你的设计复杂度和工艺节点来调整。

3.5 知识体系图

下面这张图,帮你理清面积评估的核心逻辑:

面积评估核心逻辑 总面积 标准单元面积 宏单元面积 互连线面积 逻辑门、触发器、缓冲器 SRAM、ROM、PLL等硬核 所有金属走线 50% - 70% 20% - 40% 5% - 15% 总面积 = 标准单元面积 + 宏单元面积 + 互连线面积 实际芯片面积 ≈ 总面积 × 1.15(含电源、IO、填充)

这张图把面积评估的三大块串起来了。你每次做面积评估,都可以拿这张图对照一下,看看自己是不是漏了哪一块。

好了,面积评估的指标就这些。说白了,就是三块加起来,再打个富裕量。但真正做的时候,每个细节都可能让你多花几周去优化。我建议你从标准单元面积入手,先把这块压到最低,再去考虑宏单元的摆放和互连线的优化。这样一步步来,面积控制就不会出大问题。