一、工艺概述与PDK安装:SMIC 28nm工艺节点特点
大家好,我是老李。做数字后端有些年头了,今天咱们聊聊SMIC 28nm这个工艺节点。
说实话,28nm在业界是个「黄金节点」。为什么这么说?因为它在性能和成本之间找到了一个很好的平衡点。我2015年第一次接触这个工艺时,就被它的HKMG工艺吸引了——嗯,这个后面细说。
1.1 SMIC 28nm工艺节点特点
SMIC 28nm工艺,全称是SMIC 28nm Poly/SiON 和 28nm HKMG 两种技术路线。我个人习惯把28nm分成三类:
- 28LP(Low Power):低功耗版本,适合IoT、可穿戴设备
- 28HP(High Performance):高性能版本,适合手机AP、网络芯片
- 28HPC/HPC+:性能与功耗的折中,我项目中用得最多的就是它
你想想看,同样是28nm,不同变体的Vt(阈值电压)选项、金属层数、IO电压都不一样。我在一个AI加速器项目中,就吃过这个亏——选了28LP,结果性能死活上不去,后来换到28HPC+才搞定。
| 参数 | 28LP | 28HP | 28HPC+ |
|---|---|---|---|
| Vdd (核心) | 1.0V | 0.9V | 0.85V |
| 漏电流 | 低 | 中 | 中低 |
| 最高频率 | ~1.5GHz | ~2.5GHz | ~2.0GHz |
| 金属层数 | 6-8层 | 8-10层 | 7-9层 |
核心要点:SMIC 28nm的poly间距是90nm,最小金属间距是64nm(BEOL)。这些数字你最好记在脑子里,因为做floorplan时天天要用到。
1.2 HKMG工艺优势
HKMG,全称High-K Metal Gate。说白了,就是把传统的SiO2栅氧化层换成了高介电常数材料(比如HfO2),同时把多晶硅栅换成了金属栅极。
为什么会这样?传统工艺到了28nm以下,栅氧化层薄到只有几个原子层,漏电流大得吓人。HKMG一来,等效氧化层厚度(EOT)可以做到更薄,但漏电流反而小了。
我记得第一次用HKMG工艺做时序分析时,发现同样的频率下,动态功耗比上一代40nm低了将近40%。当时我就觉得——这技术靠谱。
HKMG的几个实打实的好处:
- 栅漏电流降低:比传统Poly/SiON低2-3个数量级
- 驱动能力提升:同样的尺寸,电流驱动能力提高约20%
- 阈值电压可调:通过金属功函数调节,不像传统工艺那样受掺杂限制
避坑指南:我曾经在HKMG工艺中遇到过「负偏置温度不稳定性」(NBTI)问题。PMOS管在长期负偏压下,阈值电压会漂移。做STA时一定要留够余量,我一般会多留5%-10%的时序裕度。
1.3 PDK文件结构解析
PDK,Process Design Kit。没有它,你连个反相器都画不出来。SMIC 28nm的PDK,我拿到手第一件事就是看目录结构。
典型的PDK目录长这样:
smic28_pdk/
├── doc/ # 文档,必读!
├── lib/ # 时序库 (.lib)
├── lef/ # 物理库 (.lef)
├── gds/ # GDS版图
├── cdl/ # 网表
├── tech/ # 工艺文件 (.tf, .itf)
├── qrc/ # 寄生参数文件
├── drc/ # DRC规则
├── lvs/ # LVS规则
└── pdk_install/ # 安装脚本
我个人习惯先看doc/目录下的PDK_Release_Notes.pdf。为什么?因为里面会写清楚这个版本修复了哪些bug,新增了哪些cell。有一次我忽略了release notes,结果用了一个有问题的D触发器的LEF,跑完LVS才发现——白白浪费了两天。
几个关键文件你得认识:
- .lib文件:时序库,分ss、tt、ff三种corner。SMIC 28nm的.lib文件命名规则一般是
smic28_<corner>_<voltage>_<temp>.lib - .lef文件:物理库,包含cell的尺寸、pin位置、阻塞层信息。注意看
MACRO和PIN的定义 - .tf文件:工艺技术文件,定义了金属层、通孔、设计规则。做floorplan时,
minWidth和minSpacing参数要反复核对
注意:SMIC 28nm的PDK有多个版本,比如v1.0、v2.0、v3.0。不同版本之间,cell的尺寸和pin位置可能不一样。如果你从v1.0迁移到v2.0,一定要重新做一遍LVS和DRC。我见过有人偷懒没做,结果流片回来短路了。
1.4 PDK安装与验证
安装PDK,说简单也简单,说复杂也复杂。SMIC 28nm的PDK通常提供两种安装方式:
- 图形化安装:运行
./install.sh,跟着向导走 - 命令行安装:适合批量部署,用
./install.sh -batch
我建议用命令行方式,因为可以写脚本自动化。下面是我常用的安装脚本:
#!/bin/bash
# SMIC 28nm PDK 安装脚本
# 作者:老李
PDK_DIR=/home/designer/smic28_pdk
INSTALL_DIR=/home/designer/pdk
cd $PDK_DIR
./install.sh -batch \
-target_dir $INSTALL_DIR \
-tech smic28 \
-corner ss tt ff \
-metal 9 \
-option hkmp
# 验证安装
echo "验证PDK安装..."
ls -la $INSTALL_DIR/smic28/lib/
ls -la $INSTALL_DIR/smic28/lef/
安装完成后,一定要做验证。我一般分三步走:
- 第一步:检查文件完整性。用
md5sum对比官方提供的checksum - 第二步:加载一个简单的testcase。比如用Innovus或ICC2读入一个反相器的LEF和LIB,看看能不能正常place
- 第三步:跑一遍DRC和LVS。这是最保险的,能发现PDK中隐藏的问题
个人经验:我曾经在安装PDK时,发现qrc/目录下的寄生参数文件缺失。后来一查,是安装脚本的一个bug。从那以后,我每次装完PDK都会手动检查qrc/目录下有没有.qrcTechFile和.itf文件。少了它们,后仿真的寄生参数提取就废了。
嗯,关于SMIC 28nm的工艺概述和PDK安装,今天就聊到这儿。下一章咱们聊聊标准单元库和IO库的选择,那也是个坑不少的地方。
公众号:蓝海资料掘金营,微信deep3321