第二章:版图设计基础——层级、文件与工具
各位同学好,我是你们的老朋友。今天咱们聊聊版图设计最基础的东西——版图层级、GDSII文件格式,还有那两个常用的工具:KLayout和Cadence。
说实话,我刚入行那会儿,觉得这些概念太简单了,根本没当回事。结果有一次,我把某个层的Purpose搞错了,导致整个版图导出后,流片厂那边读不出来。嗯,从那以后,我再也不敢小看这些基础了。
2.1 版图层级概念:Layer & Purpose
先说说版图层级。你想想看,硅光芯片的制造,就像盖房子一样。你需要不同的“图层”来定义不同的结构。比如,硅波导层、氮化硅层、金属电极层、掺杂区等等。每个图层,在版图里都有一个唯一的编号,这就是Layer。
但光有Layer还不够。同一个物理层,可能在不同的工艺步骤中有不同的用途。比如,同样是“硅波导层”,在刻蚀步骤中,我们需要定义“哪些区域要刻蚀掉”;在注入步骤中,我们需要定义“哪些区域要注入杂质”。这时候,就需要Purpose来区分了。
Layer + Purpose,才是一个完整的版图层级定义。我个人的习惯是,在项目一开始,就把所有用到的Layer和Purpose列一个表格,贴在工位上。这样画图的时候,一眼就能看到,不容易出错。
核心要点:
- Layer:物理层编号,如“1”代表硅波导层,“10”代表金属层。
- Purpose:用途标识,如“drawing”表示实际图形,“pin”表示端口标记。
- 组合:一个完整的层级是“Layer/Purpose”,例如“1/0”或“10/0”。
举个例子,在标准的硅光工艺中,你可能会看到这样的层级定义:
| Layer 编号 | Purpose 编号 | 描述 |
|---|---|---|
| 1 | 0 | 硅波导层(实际图形) |
| 1 | 10 | 硅波导层(标记层,用于识别) |
| 2 | 0 | 氮化硅层 |
| 10 | 0 | 金属电极层 |
我曾经遇到过一个项目,同事把“1/0”和“1/10”搞混了,结果版图里波导图形和标记图形重叠在一起,DRC检查时报了一大堆错。所以,层级定义一定要清晰,这是基本功。
2.2 GDSII文件格式
说完了层级,咱们聊聊GDSII。这是版图数据的标准格式,几乎所有EDA工具都支持。说白了,GDSII就是一个二进制文件,里面记录了版图里所有的几何图形、层级信息、以及它们之间的层次关系。
GDSII文件的结构,其实挺简单的。它由一个个“记录”组成,每个记录包含一个“头”和“数据”。头里记录了数据类型(比如是矩形、多边形还是路径),数据里记录了具体的坐标值。
我刚开始学的时候,觉得这玩意儿太抽象了。后来有一次,我需要手动写一个脚本去修改GDSII文件里的某个图形,才真正理解了它的结构。嗯,这里给大家看一个简单的例子:
// 伪代码:GDSII文件中的一条记录
// 记录类型:BOUNDARY(边界)
// 层级:1/0
// 坐标: (0,0), (10,0), (10,5), (0,5)
这个记录,就定义了一个矩形,位于Layer 1,Purpose 0,四个角分别是(0,0)、(10,0)、(10,5)、(0,5)。
小技巧: 如果你需要查看GDSII文件的内容,可以用KLayout的“文本查看”功能,或者用一些开源工具(如gdsii-tool)来解析。我个人习惯用KLayout,因为它直观,还能直接看到图形。
GDSII文件还有一个重要的概念——层次化结构。一个复杂的芯片版图,通常由多个“单元”组成,每个单元可以包含子单元。这种层次化结构,可以大大减小文件体积,也方便团队协作。比如,一个MZI(马赫-曾德尔干涉仪)可以做成一个单元,然后在顶层版图里多次调用。
2.3 版图设计工具:KLayout与Cadence
工具嘛,咱们主要用两个:KLayout和Cadence。KLayout是开源的,轻量级,适合快速查看和简单编辑。Cadence是商业软件,功能强大,适合复杂设计和全流程管理。
2.3.1 KLayout基本操作
KLayout是我最常用的工具之一。它启动快,操作简单,而且支持多种格式。我个人习惯用它来做DRC检查前的快速预览。
- 打开文件:File -> Open,选择你的GDSII文件。
- 缩放与平移:鼠标滚轮缩放,按住中键平移。
- 查看层级:在“Layer”面板里,可以勾选或取消勾选某个层级,方便单独查看。
- 测量距离:点击“Ruler”工具,然后点击两个点,就能看到距离。
- 导出图片:File -> Export -> Image,可以导出为PNG或SVG。
注意: KLayout虽然方便,但它不支持复杂的编辑操作(比如自动布线、参数化单元)。如果你需要做这些,还是得用Cadence。
2.3.2 Cadence基本操作
Cadence是工业界的主流工具。它的界面比KLayout复杂,但功能也强大得多。我记得第一次用Cadence时,光找“画矩形”的按钮就找了半天。后来习惯了,才发现它的设计逻辑其实很清晰。
- 创建新单元:File -> New -> Cell View,选择你的库和单元名。
- 画图形:使用“Create”菜单下的“Rectangle”、“Polygon”、“Path”等工具。
- 编辑图形:选中图形后,可以用“Edit”菜单下的“Move”、“Copy”、“Stretch”等命令。
- 层次化操作:使用“Instance”工具,可以调用其他单元。
- DRC检查:Assura -> Run DRC,选择你的规则文件。
这里有个小坑,我当年踩过。Cadence里,默认的单位是微米,但有些工艺库用的是纳米。如果你不注意单位,画出来的图形尺寸可能差1000倍。所以,每次新建单元时,我都会先检查一下“Layout Editor”窗口右下角的单位显示。
2.4 知识体系结构图
为了让大家更直观地理解本章的知识结构,我画了一张图:
这张图把本章的三个核心模块串起来了。版图层级是基础,GDSII是数据载体,工具是操作手段。三者缺一不可。
2.5 避坑指南
最后,分享几个我亲身踩过的坑,希望能帮大家少走弯路:
- 层级混淆:我曾经把“1/0”和“1/10”搞混,导致DRC报错。解决办法:在项目开始前,把层级定义表打印出来,贴在显示器旁边。
- 单位错误:Cadence默认单位是微米,但工艺库可能是纳米。画图前,一定要确认单位。
- GDSII版本:有些老工具只支持GDSII的旧版本(如GDSII Stream Format 4.0),新版本可能不兼容。导出时,记得检查版本。
- 工具快捷键:KLayout和Cadence的快捷键不同,切换使用时容易按错。我建议,每个工具都花点时间熟悉它的快捷键,能大大提高效率。
总结一下:
版图设计的基础,就是搞清楚“用什么层、画什么图、存在什么格式、用什么工具”。这些看似简单,但每一个细节都可能影响最终流片的成败。希望大家能把这些基础打牢,后面学起来才会更顺畅。