第三章 版图设计基础:图层定义、设计规则检查(DRC)与版图层次结构

各位同学,今天咱们聊聊版图设计最基础的东西。说实话,很多新手一上来就急着画版图,结果画出来的东西要么通不过DRC,要么流片回来直接报废。我当年就吃过这个亏,所以这一章,咱们把地基打牢。

3.1 图层定义——版图的“语言”

版图是什么?说白了,就是一张“地图”。这张地图上,不同的颜色和形状代表不同的物理层。比如,有源区、多晶硅、金属层、接触孔……每一层都有自己专属的名字和颜色。

我习惯把图层定义比作“乐高积木的说明书”。你想想看,如果没有说明书,你怎么知道哪块积木该放哪儿?同样,没有清晰的图层定义,代工厂根本不知道你要做什么。

核心要点:每个图层对应一道光刻掩模版。你画了多少层,代工厂就要做多少张掩模版。这直接决定了你的流片成本。

常见的图层包括:

  • NW (N阱):用于制作PMOS管的衬底
  • AA (有源区):晶体管的沟道区域
  • PO (多晶硅):栅极材料
  • M1/M2/... (金属层):互连线
  • CO (接触孔):连接有源区与金属1
  • VIA (通孔):连接上下两层金属

嗯,这里要注意:不同代工厂对图层的命名可能不一样。比如台积电叫“M1”,中芯国际可能叫“MET1”。你在做项目前,一定要先拿到代工厂的PDK(工艺设计套件),里面会明确告诉你每个图层的名字和用途。

我的小技巧:刚开始接触新工艺时,我会先画一个简单的反相器,把所有图层都走一遍。这样既能熟悉图层定义,又能验证PDK是否安装正确。我曾经用这个方法,在项目启动前就发现了PDK里一个图层颜色设置错误,避免了后续的大麻烦。

3.2 设计规则检查(DRC)——版图的“交通规则”

DRC,全称Design Rule Check。你画完版图,不能直接拿去流片。你得先检查一下,你的版图有没有违反代工厂制定的规则。

为什么会这样?因为物理制造有极限。比如,两条金属线靠得太近,光刻时可能会连在一起,造成短路。再比如,接触孔太小,刻蚀时可能刻不透,造成断路。

DRC规则大致分为几类:

规则类型 含义 举例
最小宽度 图形不能太细 M1宽度 ≥ 0.1μm
最小间距 图形不能太近 M1间距 ≥ 0.12μm
最小包围 一层要包住另一层 CO被M1包围 ≥ 0.02μm
最小面积 图形不能太小 AA面积 ≥ 0.2μm²

我记得刚入行时,画了一个挺复杂的模拟版图,DRC跑了整整一天,结果报了几百个错误。我当时头都大了。后来才发现,是我把“最小间距”和“最小宽度”搞混了。从那以后,我每次画版图前,都会把DRC规则文档打印出来,贴在显示器旁边。

避坑指南:我曾经见过一个同事,为了省面积,把两条金属线的间距压到刚好等于规则值。结果流片回来,良率只有30%。为什么?因为工艺有波动,规则值是在理想条件下算出来的。你最好留一点余量,比如规则要求0.1μm,你画0.12μm。这叫“设计余量”,是经验丰富的工程师才会注意的细节。

DRC跑完后,你会得到一个报告。里面会告诉你:

  • 错误类型(比如“M1间距违规”)
  • 错误坐标(在版图上的位置)
  • 违反的规则编号(比如“Rule M1.3”)

你需要在版图编辑器里,一个一个地修改。嗯,这个过程很枯燥,但必须做。我建议你按区域修改,不要跳来跳去,否则容易漏掉。

3.3 版图层次结构——从“砖块”到“大楼”

一个芯片有几亿个晶体管,你不可能一个一个地画。所以,我们需要层次化设计。

什么叫层次化?说白了,就是先画小模块,再把小模块拼成大模块,最后拼成整个芯片。就像盖大楼,先烧砖,再砌墙,最后搭楼板。

版图的层次结构通常是这样:

  1. 底层单元:比如反相器、与非门、锁存器。这些是最基本的“砖块”。
  2. 功能模块:比如加法器、乘法器、寄存器堆。这些是“墙”。
  3. 子系统:比如CPU核、内存控制器、I/O接口。这些是“楼层”。
  4. 顶层芯片:整个芯片。这就是“大楼”。

我习惯在画版图前,先画一个层次结构图。这样能帮你理清思路,知道哪些模块可以复用,哪些需要单独优化。

核心要点:层次化设计的好处是:
1. 复用性强——标准单元库里的单元,可以反复使用。
2. 便于分工——不同工程师可以同时画不同模块。
3. 易于调试——如果某个功能出错,可以快速定位到具体模块。

下面这张图,展示了版图层次结构的基本逻辑:

版图层次结构示意图 顶层芯片 (Top Chip) 子系统 (Subsystem) CPU核 | 内存控制器 | I/O接口 功能模块 (Function Block) 加法器 | 乘法器 | 寄存器堆 | 状态机 底层单元 (Standard Cell) 反相器 | 与非门 | 锁存器 | 传输门

你想想看,如果没有这种层次结构,你直接画一个几亿晶体管的芯片,那得画到猴年马月去?而且一旦出错,你根本找不到问题出在哪儿。

我的经验:在画底层单元时,我会特别注意版图的“对称性”和“一致性”。比如,所有反相器的PMOS和NMOS尺寸比例保持一致。这样在拼成大模块时,电流驱动能力才能匹配。我曾经因为一个底层单元的尺寸没对齐,导致整个加法器的时序出了问题,查了整整两天才找到原因。

3.4 图层、DRC与层次结构的协同

这三个东西不是孤立的。图层定义是基础,DRC是检查工具,层次结构是组织方法。它们共同构成了版图设计的核心框架。

我建议你养成一个习惯:每画完一个底层单元,就立刻跑一次DRC。不要等到所有模块都画完了再跑。否则,几百个错误堆在一起,你根本不知道从哪儿改起。

嗯,这里再强调一点:DRC通过,不代表你的版图就能正常工作。DRC只检查物理规则,不检查电路功能。功能正确性要靠LVS(版图与原理图一致性检查)来保证。这个咱们后面会讲。

避坑指南:我曾经遇到过一个案例,DRC全部通过,LVS也通过,但流片回来的芯片就是不能正常工作。后来发现,是版图里有一条金属线走得太长,导致电阻过大,信号衰减了。DRC不会检查这种问题,因为它只关心“能不能造出来”,不关心“造出来好不好用”。所以,你还需要做“版图后仿真”,把寄生参数提取出来,再仿真一次。

好了,这一章的内容就到这里。图层定义、DRC、层次结构,这三个概念是版图设计的基石。你把这章吃透了,后面的内容学起来就会轻松很多。

可可精品资料库