第二章 工艺与器件基础:CMOS工艺简介、模拟器件与数字标准单元库
各位同学,咱们今天聊聊布局布线的基础——工艺与器件。说实话,很多新手一上来就急着画版图,结果连管子怎么工作的都没搞明白。我当年也犯过这毛病,后来被老大训了一顿:「你连工艺都不懂,画出来的东西能流片吗?」嗯,从那以后,我老老实实把工艺书啃了一遍。
2.1 CMOS工艺简介
CMOS工艺,说白了就是「互补对称」的意思。一个NMOS配一个PMOS,俩管子一拉一推,静态功耗极低。为什么数字电路都用CMOS?你想想看,一个反相器,输入高电平,NMOS导通,PMOS关断,输出拉到地;输入低电平,PMOS导通,NMOS关断,输出拉到VDD。这中间几乎没有直流通路,只有开关瞬间才有点电流。
我个人习惯把CMOS工艺分成几个关键层次:
- 衬底:通常是P型硅,电阻率在10-20 Ω·cm左右
- 阱:N阱用来放PMOS,P阱放NMOS(双阱工艺更灵活)
- 多晶硅栅:现在主流是金属栅,但传统工艺还是多晶硅
- 源漏注入:重掺杂,形成欧姆接触
- 金属互连:从铝到铜,层数越来越多
关键参数:最小沟道长度(比如180nm、65nm、28nm)决定了你能做多快的电路。我做过一个项目,从0.18μm迁移到65nm,同样的电路面积缩小了4倍,速度提升了3倍——但寄生效应也复杂多了。
我记得有一次,一个同事问我:「为什么我的LDO输出纹波那么大?」我一看版图,NMOS和PMOS的匹配做得一塌糊涂。这就是不懂工艺的后果——你画出来的管子,实际制造出来可能完全不是你想的那样。
2.2 模拟器件:电阻、电容、电感
模拟电路离不开无源器件。咱们一个一个说。
2.2.1 电阻
CMOS工艺里常见的电阻类型有:
| 类型 | 方块电阻 | 温度系数 | 精度 | 我常用的场景 |
|---|---|---|---|---|
| 多晶硅电阻 | 50-500 Ω/□ | 中等 | ±20% | 上拉/下拉、分压 |
| 扩散电阻 | 50-200 Ω/□ | 高 | ±30% | ESD保护 |
| 阱电阻 | 1-10 kΩ/□ | 很高 | ±40% | 高阻值场合 |
| 金属电阻 | 0.05-0.1 Ω/□ | 低 | ±5% | 电流检测 |
这里有个坑:多晶硅电阻的阻值会随电压变化。我曾经设计一个10-bit DAC,用了多晶硅电阻做分压网络,结果积分非线性(INL)怎么都调不好。后来发现是电阻的电压系数在作怪——电压从0到VDD,阻值能漂5%!从那以后,高精度场合我宁愿用金属电阻或者匹配好的扩散电阻。
我的经验:做匹配电阻时,尽量用「共质心」布局。把两个电阻交叉摆放,工艺梯度的影响就能互相抵消。我习惯画成「ABBA」或者「ABAB」的排列方式。
2.2.2 电容
CMOS电容主要有三种:
- MIM电容(金属-绝缘体-金属):精度高,线性好,但单位面积电容小(1-2 fF/μm²)
- MOM电容(金属-氧化物-金属):利用金属层间的侧壁电容,密度高(3-5 fF/μm²)
- MOS电容(栅氧化层电容):单位电容最大(10-20 fF/μm²),但非线性严重
你可能会问:「那我该用哪种?」嗯,看需求。做开关电容滤波器,我首选MIM电容,因为线性度好。做去耦电容,我直接用MOS电容,反正不在乎非线性,密度高就行。
我记得有个项目,客户要求芯片面积控制在1mm²以内。我算了一下,如果用MIM电容做环路滤波器,面积根本不够。后来换成MOM电容,密度翻了一倍,才勉强塞进去。所以啊,器件选型不只是性能问题,更是面积问题。
2.2.3 电感
电感在射频电路里用得最多。CMOS工艺里的电感都是平面螺旋电感,用顶层金属绕制。
设计电感要注意几点:
- Q值:一般10-20,受金属电阻和衬底损耗限制
- 自谐振频率:超过这个频率,电感就变成电容了
- 衬底屏蔽:用底层金属做接地屏蔽,可以减少衬底损耗
警告:电感周围不要放其他金属!我曾经在电感旁边走了一条电源线,结果VCO的相位噪声恶化了10dB。后来把电源线绕开,问题才解决。电感会耦合磁场到周围所有导体,这个效应在版图阶段就要考虑。
2.3 数字标准单元库
数字电路设计离不开标准单元库。说白了,就是把基本逻辑门(反相器、与非门、或非门、触发器)预先设计好,放在库里,布局布线时直接调用。
一个标准单元库通常包含:
- 版图视图:GDSII文件,包含物理掩模层
- 时序模型:.lib文件,描述每个单元的延迟、功耗、转换时间
- 逻辑模型:Verilog/VHDL模型,用于功能仿真
- 物理抽象:LEF文件,描述单元的尺寸、引脚位置、布线阻挡层
我见过很多新手,拿到库就直接用,结果时序收敛不了。为什么?因为标准单元库的驱动能力是有限的。一个最小尺寸的反相器,只能驱动几个负载。如果你用它驱动一个大扇出网络,延迟会爆炸。
关键概念:标准单元的「驱动强度」用倍数表示,比如X1、X2、X4、X8。X1是最小尺寸,X8是8倍尺寸。我习惯在关键路径上用X4以上的单元,在非关键路径上用X1省面积。
还有一个容易忽略的点:标准单元的引脚位置。LEF文件里定义了每个引脚的金属层和坐标。如果你在布线时把电源线走在了引脚正上方,那这个引脚就废了——没法打孔连接。我建议拿到库后,先打开LEF文件看一眼,心里有个数。
最后说一句:不要迷信标准单元库。库是死的,人是活的。有时候为了性能,我会自己画一些定制单元,比如大驱动能力的时钟缓冲器,或者低功耗的保持触发器。但前提是——你得懂工艺,懂器件,懂版图。否则画出来的东西还不如库里的。
好了,这一章就到这里。下一章咱们聊聊布局布线的具体流程,到时候我会拿一个实际的混合信号电路做例子,手把手带大家走一遍。