一、设计规则检查(DRC)基础
1.1 什么是DRC?
DRC,全称Design Rule Check,设计规则检查。
说白了,就是检查你的光芯片版图,有没有违反工艺厂定下的规矩。
我刚开始接触光芯片设计时,总觉得这玩意儿就是个形式主义。后来有一次,我设计的一个马赫-曾德尔调制器,版图画得漂漂亮亮,结果流片回来,器件根本没法工作。为什么?因为两条波导之间的距离太近了,光信号串扰得一塌糊涂。嗯,从那以后,我再也不敢小看DRC了。
DRC的核心,就是验证你的版图是否符合工艺制造的限制。这些限制包括:
- 最小线宽:波导不能太细,否则光场约束不住
- 最小间距:器件之间不能太近,否则会有串扰
- 最小面积:某些结构必须达到一定尺寸,才能保证工艺良率
- 密度要求:某些层级的图形密度必须在某个范围内
关键点:DRC不是可选项,而是流片的必选项。没有通过DRC的版图,工艺厂根本不会接单。
1.2 为什么需要DRC?
你可能会问:我设计的时候已经很小心了,为什么还要专门跑一遍DRC?
原因很简单——人总会犯错。
我记得有一次,我设计一个阵列波导光栅(AWG),手动调整了某个波导的宽度,结果忘了检查相邻波导的间距。DRC一跑,好家伙,直接报了200多个违例。要是没跑DRC,这批芯片就全废了。
DRC的必要性体现在三个方面:
- 制造可行性:工艺厂有固定的制造能力,比如光刻分辨率、刻蚀精度等。你的设计必须在这个能力范围内。
- 良率保障:即使某个结构勉强能做出来,但如果它处于工艺窗口的边缘,良率会很低。DRC帮你避开这些边缘情况。
- 设计一致性:团队协作时,不同设计师的风格不同。DRC提供了一个统一的检查标准。
我的经验:我建议在设计的每个阶段都跑一次DRC,而不是等到最后。早期发现问题,改起来成本低得多。
1.3 DRC在流片中的关键作用
流片流程中,DRC处于什么位置?
我画了一张图,帮你理清思路:
从图中你可以看到,DRC是流片前的第一道关卡。只有DRC通过了,才能进入LVS(版图与原理图一致性检查),最后才能流片。
DRC的关键作用,我总结为三点:
| 作用 | 说明 | 我的经历 |
|---|---|---|
| 过滤制造风险 | 提前发现工艺无法实现的结构 | 有一次我画了0.5μm的波导,工艺厂只能做0.8μm,DRC直接报错 |
| 保证设计质量 | 避免因疏忽导致的低级错误 | 我曾经漏画了一个接地层,DRC帮我抓出来了 |
| 缩短迭代周期 | 早期发现问题,减少流片次数 | 以前流片要等3个月,DRC帮我省了至少一次流片 |
1.4 常见DRC违例类型
DRC违例的类型很多,但常见的主要就那几种。我整理了一下,你对照着看:
1.4.1 宽度违例
波导、电极等结构的宽度小于工艺允许的最小值。
示例:最小波导宽度 = 0.8μm
你的设计:波导宽度 = 0.6μm
结果:DRC报错 "Width violation"
注意:宽度违例是最常见的错误之一。我见过很多新手设计师,为了追求性能,把波导画得很细,结果DRC全挂。
1.4.2 间距违例
两个结构之间的距离小于工艺允许的最小值。
示例:最小波导间距 = 1.0μm
你的设计:两个波导间距 = 0.7μm
结果:DRC报错 "Spacing violation"
1.4.3 面积违例
某些结构(如焊盘、标记点)的面积小于工艺要求。
示例:最小焊盘面积 = 100μm²
你的设计:焊盘面积 = 80μm²
结果:DRC报错 "Area violation"
1.4.4 密度违例
某个层级的图形密度过高或过低。
这个在光芯片中比较特殊。比如,某些工艺要求波导层的密度在20%~80%之间。如果密度太低,刻蚀时会出现负载效应;如果密度太高,光刻时会出现反射问题。
避坑指南:我曾经设计一个高密度波导阵列,波导间距压得很小。结果DRC报密度违例,我不得不重新调整布局,在阵列中插入一些虚拟波导来平衡密度。
1.4.5 边缘/角违例
结构的边缘或角落不符合工艺要求。比如,某些工艺要求所有角落必须是圆角,不能是直角。
1.4.6 层次违例
不同层级之间的重叠、包含关系不符合规则。比如,金属层必须完全覆盖接触孔层。
1.5 如何解读DRC报告?
DRC跑完后,会生成一份报告。这份报告怎么看?
我一般按这个顺序:
- 看总数:先看违例总数,心里有个底
- 看类型:哪些类型的违例最多?宽度?间距?还是密度?
- 看位置:违例集中在哪个区域?还是分散在整个版图?
- 看严重程度:有些违例是硬伤,必须改;有些是软违例,可以跟工艺厂沟通
我的习惯:我每次跑完DRC,都会把报告导出成文本文件,然后用脚本统计一下各类违例的数量。这样能快速定位问题最严重的区域。
1.6 小结
DRC是光芯片流片前验证的第一步,也是最基础的一步。它不复杂,但很重要。
你想想看,一个芯片从设计到流片,周期至少3个月,成本几十万起步。如果因为一个简单的宽度违例导致流片失败,那损失就大了。
所以,我的建议是:
- 设计过程中,定期跑DRC
- 每次修改版图后,重新跑DRC
- 流片前,至少跑三次DRC,确保万无一失
嗯,DRC基础就讲到这里。下一章我们聊聊DRC规则文件的编写和配置,那才是真正考验功力的时候。