PDK基础与工艺库:从概念到实战

各位同学,今天我们来聊聊硅光芯片设计里最基础、也最绕不开的一个话题——PDK。说实话,我刚入行那会儿,对PDK的理解就是“一堆文件”。后来踩了不少坑,才真正明白它到底是什么。

PDK,全称是Process Design Kit,工艺设计套件。你可以把它理解成芯片代工厂给你的一本“菜谱”。这本菜谱告诉你:

  • 你的“食材”(材料层)有哪些
  • 你的“厨具”(器件模型)怎么用
  • 你的“火候”(工艺参数)怎么调
  • 哪些“做法”(设计规则)是允许的

没有PDK,你就像在黑暗中摸索。我见过不少新手,拿到PDK第一件事就是直接开始画版图,结果DRC报错几百条,心态直接崩了。嗯,咱们今天就把这事说透。

一、PDK的核心概念

PDK本质上是一套标准化的数据包。它把代工厂的工艺能力,翻译成了设计工具能读懂的语言。我个人习惯把PDK分成三大块:

模块 内容 作用
器件模型 SPICE模型、Verilog-A模型 仿真时描述器件电/光行为
版图层次 GDSII层定义、颜色映射 定义哪些层可用、怎么用
规则文件 DRC、LVS、PEX规则 检查设计是否满足工艺要求

为什么PDK这么重要?我举个例子。有一次我在做MZI(马赫-曾德尔干涉仪)设计,仿真结果完美,流片回来却完全不对。后来一查,是我用的波导宽度超出了PDK允许的公差范围。说白了,PDK里的每一个数字,都是代工厂用真金白银试出来的。你绕开它,就是绕开安全。

核心原则:PDK不是建议,是约束。所有设计必须跑在PDK定义的框架内。

二、工艺库文件结构

打开一个典型的硅光PDK文件夹,你可能会被一堆子目录吓到。别慌,我带你捋一遍。通常结构是这样的:

pdk_root/
├── doc/                # 文档手册
├── lib/                # 仿真模型库
│   ├── spice/          # SPICE模型
│   ├── veriloga/       # Verilog-A模型
│   └── compact/        # 紧凑模型
├── layout/             # 版图相关
│   ├── gds/            # GDSII参考版图
│   ├── drc/            # DRC规则文件
│   ├── lvs/            # LVS规则文件
│   └── pcell/          # 参数化单元
├── tech/               # 技术文件
│   ├── display.drf     # 显示设置
│   ├── layer.map       # 层映射
│   └── techfile.tf     # 工艺技术文件
└── scripts/            # 辅助脚本

这里我特别想强调一下techfile.tf这个文件。它定义了所有物理层的属性,比如最小线宽、最小间距、层与层之间的对准容差。我记得有一次,一个同事把techfile加载错了版本,结果画出来的版图全部偏了0.1微米。嗯,0.1微米在硅光里,可能就是生与死的区别。

另外,pcell(参数化单元)是硅光PDK的一大亮点。比如一个定向耦合器,你可以通过调整参数gap和length,快速生成不同耦合比的版图。这比手动画GDSII高效太多了。

我的习惯:拿到新PDK,第一件事不是跑仿真,而是先看doc目录下的release notes。那里通常会写明已知问题、更新内容和兼容性信息。这能帮你省下至少半天排查时间。

三、Design Rule Check (DRC) 基础

DRC,设计规则检查。说白了,就是检查你的版图有没有违反代工厂的“交通规则”。

为什么会需要DRC?你想想看,代工厂的工艺能力是有物理极限的。比如光刻机的分辨率有限,刻蚀机的深宽比有限。如果你画了一个太细的波导,或者两个波导靠得太近,生产出来可能就是断的、连的、或者形状完全不对。

常见的DRC规则包括:

  • 最小宽度规则:比如波导宽度不能小于400nm
  • 最小间距规则:比如两个波导边缘间距不能小于200nm
  • 最小面积规则:比如某些层上的图形面积不能小于某个值
  • 密度规则:比如某层图形的密度必须在20%~80%之间
  • 对准规则:比如不同层之间的套刻精度要求

我曾经遇到过一个特别坑的案例。一个环形谐振器的设计,所有DRC都过了,但流片回来Q值比预期低了一个数量级。后来排查发现,是波导拐角处的圆角半径太小,导致光损耗剧增。但DRC并没有检查圆角半径这个参数。从那以后,我养成了一个习惯:DRC过了不代表设计没问题,它只代表你没违反显式规则。

避坑指南:我曾经因为忽略了“密度规则”导致整批芯片报废。硅光芯片里有些层(比如金属层)对密度有严格要求,密度太低会导致CMP(化学机械抛光)不均匀,影响后续工艺。所以,跑DRC时一定要把所有规则都打开,别偷懒只跑默认项。

DRC的流程通常是这样:

  1. 把你的版图(GDSII格式)导入DRC工具
  2. 加载代工厂提供的DRC规则文件(通常是deck文件)
  3. 运行检查,生成结果报告
  4. 根据报错信息,逐条修改版图
  5. 重复直到零错误

这里有个小技巧:DRC报错信息往往很晦涩,比如“M1.S.1”这种代码。别慌,去doc目录下找DRC手册,里面会解释每条规则的含义。我一般会把常见报错代码和解决方法整理成一个速查表,贴在工位上。

四、知识体系总览

为了帮你更直观地理解本章内容,我画了一张图。这张图展示了PDK、工艺库和DRC之间的逻辑关系:

PDK基础与工艺库知识体系 PDK 工艺设计套件 器件模型 SPICE模型 Verilog-A模型 紧凑模型 版图层次 GDSII层定义 参数化单元(PCell) 技术文件(techfile) 规则文件 DRC规则 LVS规则 PEX规则 DRC检查项 最小宽度/间距 最小面积/密度 对准/套刻规则 三者缺一不可:模型决定能不能仿,版图决定能不能画,规则决定能不能造

这张图其实揭示了一个道理:PDK不是一堆文件的简单堆砌,而是一个有机的整体。器件模型、版图层次、规则文件三者相互依赖。比如,你改了版图里的波导宽度,就必须确认DRC规则是否允许,同时还要更新仿真模型里的参数。我见过最惨的翻车,就是有人只改了版图没改模型,结果仿真和实测差了十万八千里。

总结一下:PDK是代工厂和设计师之间的契约。你遵守它,它保证你的芯片能造出来。你违反它,后果自负。DRC是这个契约的“执法者”,它用规则文件来检查你是否违约。

好了,关于PDK基础、工艺库结构和DRC基础,我就讲这么多。这些东西看起来枯燥,但每一条规则背后,都是代工厂无数次的试错和经验积累。尊重规则,就是尊重工艺本身。


公众号:蓝海资料掘金营,微信deep3321