2. 3DIC设计数据准备
3DIC 物理验证的第一步不是跑规则,而是把多颗芯片的数据“摆到同一张桌子上”。与单芯片验证只读一个 GDS 不同,3DIC 签核需要同时读入多颗裸片(die)、中介层(interposer)、基板(substrate)甚至封装体的版图数据,并让它们在统一的坐标系、统一的层编号体系下彼此对齐。数据准备做错,后面的 DRC/LVS 结果全部不可信,因此这一节的重点是:输入格式怎么选、层怎么映射、层次怎么组织、TSV/微凸点/混合键合这些关键对象在版图里到底长什么样、用什么层和图形表示。
一、多芯片输入:GDSII 与 OASIS 的选择
Calibre 3DIC 流程中,每颗芯片通常以独立文件输入,常见格式为 GDSII(.gds)和 OASIS(.oas)。GDSII 兼容性最好,几乎所有 EDA 工具都能读写,但它是 1970 年代设计的格式,对超大版图(中介层动辄几十 GB)存储效率低,且层号、数据类型字段宽度有限。OASIS 采用压缩与变长编码,同一中介层版图体积常可降到 GDSII 的 1/5~1/10,读取更快,并支持重复结构(repetition)和更灵活的层表达,因此在先进 3DIC 项目中逐渐成为首选。
实际工程里常见的做法是:各芯片来自不同团队、不同工艺,交付格式不统一。此时应在数据准备阶段统一转换,而不是让验证工具去兼容多种格式。转换时要注意三点:一是单位(database unit)必须统一,例如全部归一到 1 nm 或 0.5 nm,否则堆叠后尺寸会整体缩放;二是层号不能冲突,需要重映射;三是文本标签(text)和属性要保留,否则后续做 LVS 时找不到网络名。
二、层映射:把不同工艺的层“翻译”到统一编号
每颗芯片的层编号由各自工艺决定,例如 A 芯片用 1/0 表示有源区、2/0 表示多晶硅,B 芯片可能用 10/0、11/0。3DIC 验证工具需要一套统一的“堆叠层表”,把每颗芯片的原始层映射到全局层号,并标注该层属于哪颗芯片、位于哪个 Z 高度。层映射通常以映射表文件描述,例如:
# layer_map: die_layer -> global_layer
DIE_A 1/0 -> 101/0 # active
DIE_A 2/0 -> 102/0 # poly
DIE_B 10/0 -> 201/0 # active
DIE_B 11/0 -> 202/0 # poly
INTERPOSER 30/0 -> 301/0 # RDL
映射的原则是“同物理意义同全局层、不同芯片不同段”。这样在写规则时,可以针对全局层 101 写 A 芯片有源区规则,针对 201 写 B 芯片规则,互不干扰。层映射还要处理派生层(derived layer),例如用“TSV 开孔层 AND 金属层”生成 TSV 连接层,供后续连接性检查使用。
三、层次化结构:用 cell 表达堆叠关系
3DIC 版图天然是层次化的:每颗芯片内部有标准单元、宏单元、电源网格,芯片之间通过堆叠关系组合。Calibre 3DIC 通常用一个顶层 cell 引用各芯片的顶层 cell,并通过放置(placement)指定每颗芯片的 X/Y 偏移和 Z 顺序。层次化结构带来两个好处:一是数据复用,同一颗芯片被多次引用时只存一份;二是规则可按层次作用,例如只在芯片交界处检查跨芯片间距。
需要注意的是,层次化会带来“同名 cell 冲突”。不同芯片可能都有名为 TOP 或 FILL 的 cell,直接合并会出错。解决办法是在读入时给每颗芯片的 cell 名加前缀,例如 A_TOP、B_TOP,或在工具中启用命名空间隔离。此外,扁平化(flatten)虽然能消除层次问题,但会让数据量爆炸,3DIC 中应尽量保留层次,只在必要时对局部做扁平化。
四、TSV、微凸点、混合键合的表示方法
这三类对象是 3DIC 的“连接件”,在版图中必须能被工具识别为独立对象,而不是普通图形。
- TSV(硅通孔):贯穿硅片的垂直互连。版图上通常用圆形或方形开孔层表示,直径示例为 5~10 μm,深宽比 10:1 左右。表示时至少需要两层:TSV 开孔层(描述孔的位置和尺寸)和 TSV 金属层(描述填充金属)。验证时要检查 TSV 与有源区、金属层的间距,以及 TSV 之间的最小间距。
- 微凸点(micro-bump):芯片与中介层之间的焊接点,直径示例 20~40 μm,节距 40~55 μm。版图上用凸点下金属(UBM)层和凸点开孔层表示。关键检查项是凸点与 RDL 的对准、凸点间最小间距、以及凸点与 TSV 的对应关系。
- 混合键合(hybrid bonding):铜-铜直接键合,键合垫尺寸可小到 1~3 μm,节距 2~5 μm。版图上用键合垫层表示,通常成对出现(上下芯片各一层)。验证重点是上下键合垫的对准精度、键合垫密度和边缘排除区。
为了让工具正确识别,这些对象应使用专用层号,并在层映射表中标注类型(如 type=TSV、type=BOND_PAD)。有些流程还会为每个对象生成唯一标识(ID),便于跨芯片追踪同一连接点。
五、数据准备的检查闭环
数据准备完成后,不要直接进入规则检查,应先做一次“空跑”验证:读入所有文件,检查层映射是否全部命中、层次引用是否完整、单位是否一致、关键对象是否被正确识别。一个实用的判断方法是统计各全局层的图形数量,与各芯片原始层图形数量做对比,若某层数量为 0 或明显异常,说明映射或读入有问题。此外,可以单独提取 TSV、微凸点、混合键合层,观察其分布是否与预期堆叠位置一致。只有这一步通过,后续的 DRC/LVS 结果才有意义。