3. Calibre 3DIC工艺文件配置

在2.5D/3DIC签核中,Calibre 面对的不再是单一芯片的平坦版图,而是由多颗裸片(Die)、中介层(Interposer)、微凸块(µBump)、硅通孔(TSV)和混合键合(Hybrid Bonding)界面共同构成的立体结构。传统单芯片的 rule deck 只描述一层硅片内的几何关系,无法表达“哪一层属于哪颗芯片、层与层之间如何对齐、跨芯片的间距由谁负责检查”。因此,3DIC 工艺文件配置的核心任务,是把物理堆叠信息翻译成 Calibre 能识别的层定义、映射关系和检查规则。

一、3DIC 规则文件与单芯片规则文件的本质差异

单芯片 rule deck 的输入是“一个 GDS + 一套工艺层号”,输出是 DRC/LVS 结果。3DIC rule deck 的输入则是“多个 GDS + 一份堆叠描述 + 一份跨芯片层映射表”。它必须额外回答三个问题:

  • 堆叠结构:共有几颗 Die、谁在上谁在下、键合面朝向如何、每颗 Die 的厚度与坐标原点在哪。
  • 层归属:同一个层号(如 10/0)在不同 Die 中含义可能不同,必须通过映射区分。
  • 跨芯片检查:µBump 与焊盘的对准、TSV 与底层金属的套刻、键合界面的重叠率,这些检查跨越两个 GDS,需要把不同 Die 的层“搬”到同一坐标系后再运算。

Calibre 3DIC 通过 SVRF(Stacked Virtual Rule File)机制实现这一点:用 3DIC STACK 语句声明堆叠,用 LAYER MAP 把各 Die 的物理层映射为虚拟层,再在虚拟层上编写 DRC/LVS 规则。规则文件本身仍是标准 SVRF 语法,只是作用域从“单层”扩展为“堆叠层”。

二、堆叠层定义:把立体结构写成可解析的声明

堆叠定义通常放在 rule deck 顶部的 stack 区块。以下是一个双 Die + 中介层的示例(参数为教学假设值,非实测):

// 3DIC 堆叠声明(示例)
3DIC STACK stack_2die_interposer
  DIE top_die    GDS "top.gds"   ORIGIN 0 0    FLIP
  DIE interposer GDS "interposer.gds" ORIGIN 0 0
  DIE bottom_die GDS "bottom.gds" ORIGIN 0 0
  BOND top_die.interposer  FACE_DOWN  OFFSET 0 0
  BOND interposer.bottom_die FACE_UP  OFFSET 0 0
END STACK

关键字段含义:ORIGIN 定义该 Die 在堆叠坐标系中的原点偏移;FLIP 表示该 Die 需要沿 X 轴镜像(对应倒装键合);FACE_DOWN/FACE_UP 描述键合面朝向,决定跨芯片层在 Z 方向的相对位置。若忽略 FLIP,µBump 与焊盘会出现镜像错位,DRC 会报出大量假错。堆叠坐标系约定为:X 向右、Y 向上、Z 由下 Die 指向顶 Die,全文与图示保持一致。

三、跨芯片层映射:让不同 GDS 的层号可运算

层映射是 3DIC deck 最容易出错的部分。假设 top_die 的 µBump 在层 60/0,interposer 的对应焊盘在层 70/0,若直接写 AND layer60 layer70,Calibre 会因层号来自不同 Die 而无法匹配。正确做法是先映射为虚拟层:

LAYER MAP
  // 语法:虚拟层名 = DIE.物理层
  LAYER v_bump_top     = top_die.60/0
  LAYER v_pad_inter    = interposer.70/0
  LAYER v_tsv_inter    = interposer.80/0
  LAYER v_metal_bottom = bottom_die.30/0
END MAP

映射完成后,所有跨芯片检查都在虚拟层上进行。例如检查 µBump 与焊盘的重叠率:

// 跨芯片重叠检查(示例)
overlap = AND v_bump_top v_pad_inter
area_ratio = AREA(overlap) / AREA(v_bump_top)
DRC CHECK area_ratio < 0.85  // 重叠率低于85%报错

这里 AREA 是 SVRF 的面积函数,area_ratio 是派生层。判断依据是:重叠率低于 0.85 意味着键合有效接触面积不足,存在开路或高阻风险。该阈值来自工艺设计规则,示例中取 0.85 仅为演示。

四、工艺 deck 的组织与复用策略

一个完整的 3DIC deck 通常包含四类文件:堆叠描述文件(stack)、层映射文件(map)、单芯片基础规则(base DRC/LVS)、跨芯片规则(inter-die)。组织策略建议采用“基础规则复用 + 堆叠配置参数化”的方式:

  • 基础规则复用:每颗 Die 的单芯片 DRC/LVS 规则独立维护,通过 INCLUDE 引入,避免把单芯片规则复制进 3DIC deck 造成版本分裂。
  • 堆叠参数化:把 Die 数量、键合面朝向、偏移量抽成变量,用 #define 或 VARIABLE 管理,同一套跨芯片规则可适配不同堆叠组合。
  • 分层检查:先跑各 Die 的单芯片 DRC,再跑跨芯片规则,最后跑 LVS 的跨芯片网表比对,便于定位错误来源。

复用时的常见陷阱是层号冲突:若两颗 Die 都使用层 10/0 表示金属,映射时必须写成 top_die.10/0 与 bottom_die.10/0,不能简写为 10/0,否则 Calibre 无法判断归属。另一个陷阱是坐标系不一致:若某颗 Die 的 GDS 原点不在左下角,必须在 ORIGIN 中补偿,否则跨芯片间距检查会整体偏移。

3DIC 工艺文件配置:堆叠定义 → 层映射 → 跨芯片检查 top_die.gds µBump: 60/0 interposer.gds Pad: 70/0 TSV: 80/0 bottom_die.gds Metal: 30/0 3DIC STACK 声明 DIE top_die FLIP DIE interposer DIE bottom_die BOND top↔inter FACE_DOWN BOND inter↔bottom FACE_UP LAYER MAP 虚拟层映射 v_bump_top = top_die.60/0 v_pad_inter = interposer.70/0 v_tsv_inter = interposer.80/0 v_metal_bot = bottom_die.30/0 → 跨芯片层可参与同一运算 → 避免层号冲突与归属歧义 跨芯片检查规则(Inter-Die DRC) µBump 重叠率 AND v_bump_top v_pad_inter ratio ≥ 0.85 通过 TSV 套刻间距 v_tsv_inter vs v_metal_bot 间距 ≥ 0.5µm 通过 键合界面覆盖 键合层 AND 运算 无空洞/无悬空 坐标系约定:X 向右、Y 向上、Z 由下 Die 指向顶 Die;FLIP 表示沿 X 轴镜像

五、配置完成后的验证与判断

deck 写完后不能直接跑全芯片,建议先用小规模测试版图验证三件事:第一,层映射是否生效——用 calibre -drc -hier 跑一次,检查日志中虚拟层是否被正确解析,若出现 “layer not found” 说明映射名拼写或 Die 前缀有误;第二,堆叠坐标是否正确——在版图上放一个已知坐标的 µBump,检查其与焊盘的重叠区域是否落在预期位置,若整体偏移则回到 ORIGIN 补偿;第三,跨芯片规则是否触发——故意把 µBump 偏移 2µm,确认重叠率检查报错,再恢复后确认通过。这三步通过后,再扩展到全芯片签核。

复用策略的核心是“单芯片规则不动,3DIC 规则只做映射与跨芯片运算”。把堆叠参数抽成变量后,同一套 inter-die 规则可以适配 2 Die、3 Die 甚至 Chip-on-Wafer 的不同组合,显著降低维护成本。
层映射时务必使用 DIE.层号 的完整限定形式。若省略 Die 前缀,Calibre 会按默认单芯片层解析,导致跨芯片检查静默失效——规则不报错,但结果不可信,这是 3DIC deck 最隐蔽的配置风险。