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 中补偿,否则跨芯片间距检查会整体偏移。
五、配置完成后的验证与判断
deck 写完后不能直接跑全芯片,建议先用小规模测试版图验证三件事:第一,层映射是否生效——用 calibre -drc -hier 跑一次,检查日志中虚拟层是否被正确解析,若出现 “layer not found” 说明映射名拼写或 Die 前缀有误;第二,堆叠坐标是否正确——在版图上放一个已知坐标的 µBump,检查其与焊盘的重叠区域是否落在预期位置,若整体偏移则回到 ORIGIN 补偿;第三,跨芯片规则是否触发——故意把 µBump 偏移 2µm,确认重叠率检查报错,再恢复后确认通过。这三步通过后,再扩展到全芯片签核。
DIE.层号 的完整限定形式。若省略 Die 前缀,Calibre 会按默认单芯片层解析,导致跨芯片检查静默失效——规则不报错,但结果不可信,这是 3DIC deck 最隐蔽的配置风险。