4、PDK 基础:工艺设计套件(PDK)的组成、PDK 中的元件库与模型、PDK 的安装与验证
好,咱们今天聊聊PDK。这东西,说白了就是代工厂给你的一本「芯片设计说明书」。没有它,你连个波导都画不出来。
我记得我刚入行那会儿,第一次拿到某家180nm硅光工艺的PDK,打开一看,好家伙,几百个文件。当时真有点懵。后来做多了才发现,PDK其实就那几大块,搞清楚了,后面就顺了。
4.1 PDK 到底是个啥?
PDK,全称 Process Design Kit,工艺设计套件。它不是单个文件,而是一整套工具和数据的集合。代工厂通过PDK,把他们的工艺能力「翻译」成你能用的东西。
你想想看,代工厂的工艺工程师懂的是掺杂浓度、刻蚀深度、CMP平坦度。你懂的是波导损耗、调制器效率、探测器响应度。这两者怎么对接?就是靠PDK这座桥。
核心观点:PDK 是连接芯片设计师与代工厂的「契约」。它定义了你能用什么器件,以及这些器件在真实工艺下的表现。
下面这张图,是我自己总结的PDK知识体系。你可以把它当作一个地图,后面咱们逐块展开。
4.2 元件库:你能用的「积木」
元件库,就是PDK里最直观的部分。它告诉你:这个工艺节点下,代工厂给你准备了哪些现成的光电器件。
我习惯把硅光元件库分成三类:
- 无源器件:波导、MMI耦合器、Y分支、光栅耦合器、边缘耦合器、微环谐振器。这些器件不需要加电,光进去光出来。
- 有源器件:调制器(MZM、微环调制器)、光电探测器(Ge探测器)、热光移相器。这些需要电信号驱动。
- 辅助结构:对准标记、测试结构、焊盘、ESD保护结构。这些不参与光路,但流片和测试离不开它们。
我的经验:拿到一个新PDK,我第一件事不是看模型,而是打开元件库的文档,看看它提供了哪些波导宽度。为什么?因为波导宽度直接决定了你的设计自由度。有的PDK只给500nm宽的单模波导,有的给450nm到2um的多种选择。选错了,后面很多设计都受限。
每个元件在库中通常以 参数化单元(PCell) 的形式存在。你可以在EDA工具里拖出来,双击改参数。比如一个MMI耦合器,你可以改它的宽度、长度、输出波导间距。PCell会根据你的参数,自动生成版图。
4.3 模型:仿真靠的就是它
元件库给了你「积木」,模型给了你「积木的性能数据」。没有模型,你画出来的版图就是一堆几何图形,不知道性能怎么样。
硅光PDK里的模型,通常分这么几层:
| 模型类型 | 用途 | 常见格式 |
|---|---|---|
| 光学模型 | 仿真光信号传输、损耗、相位 | S参数(Touchstone)、Lumerical INTERCONNECT |
| 电学模型 | 仿真调制器驱动、探测器响应 | SPICE、Verilog-A |
| 热学模型 | 仿真热调谐、温度效应 | Compact Thermal Model |
| 工艺统计模型 | 仿真工艺波动对性能的影响 | Monte Carlo 参数集 |
这里我想特别说一下 S参数模型。这是硅光仿真里最常用的东西。代工厂会通过实际流片测试,或者高精度FDTD仿真,提取出每个器件的S参数文件。你仿真时直接调用,不用自己从头算。
注意:我曾经踩过一个坑。某个PDK的MMI模型,文档里写的是「适用于1520-1580nm」。我直接拿来设计1550nm的链路,仿真结果很好。结果流片回来,实测插损比仿真大了1.5dB。后来查原因,发现那个模型是用FDTD仿出来的,没经过流片验证。从那以后,我拿到模型第一件事就是看它的「验证状态」——是「simulated only」还是「silicon verified」。后者才靠谱。
4.4 设计规则:代工厂的「红线」
设计规则,就是代工厂告诉你:哪些东西不能做。比如:
- 波导最小宽度不能小于400nm,否则刻蚀不出来
- 两个波导之间的间距不能小于200nm,否则光会串扰
- 有源区的掺杂浓度有固定档位,不能自己乱改
这些规则以 DRC(Design Rule Check) 文件的形式提供。你画完版图,跑一遍DRC,就能检查出有没有违反规则的地方。
另外还有 LVS(Layout vs. Schematic) 规则,用来检查你的版图是否和电路图一致。硅光芯片虽然不像纯电芯片那么复杂,但LVS同样重要——尤其是调制器和探测器的电极连接,错了就是短路。
4.5 PDK 的安装:没那么玄乎
PDK的安装,不同代工厂、不同EDA工具,流程不太一样。但大体上分三步:
- 解压与放置:把PDK压缩包解压到指定目录。我习惯放在
$HOME/pdk/下,方便管理。 - 环境变量设置:告诉EDA工具PDK在哪。通常需要设置
PDK_DIR、PDK_NAME等变量。 - 运行安装脚本:代工厂会提供一个
install.sh或setup.py,运行它,脚本会自动把库文件注册到你的EDA工具里。
举个例子,某家PDK的安装流程大致是这样:
# 解压
tar -xzvf silicon_photonics_pdk_v2.3.tar.gz -C $HOME/pdk/
# 设置环境变量
export PDK_DIR=$HOME/pdk/silicon_photonics_v2.3
export PDK_NAME=SP_PDK_V23
# 运行安装脚本
cd $PDK_DIR
./install.sh --tool=mentor --version=2023
小建议:安装前,一定先看PDK自带的 README 文件。不同版本的PDK对EDA工具版本有要求。我见过有人拿着PDK v2.0去装到最新版的工具上,结果PCell跑不出来,折腾了两天才发现是版本不兼容。
4.6 验证:装好了,怎么知道对不对?
PDK装完,别急着开始画图。先做验证。我一般按这个顺序来:
- 第一步:库加载测试。打开EDA工具,看看PDK库能不能正常加载。随便拖一个波导PCell出来,看能不能生成版图。
- 第二步:模型调用测试。建一个简单的仿真链路——一个光栅耦合器,接一段波导,再接一个光栅耦合器。跑一下仿真,看结果是否合理。
- 第三步:DRC测试。画一个简单的版图,跑DRC。如果PDK安装正确,DRC应该能正常跑完,没有报错。
- 第四步:LVS测试。如果PDK提供了LVS规则,跑一下LVS,确保版图和电路图的对应关系正确。
这一步,说白了就是「冒烟测试」。如果这四个测试都过了,那PDK基本就装好了,可以放心用。
一句话总结:PDK是代工厂给你的「工具箱」。元件库是工具,模型是工具的性能参数,设计规则是使用说明,安装验证是检查工具好不好使。把这四块搞明白,硅光设计的第一步就算站稳了。
公众号:蓝海资料掘金营,微信deep3321