背景
TSMC N5(5nm)是台积电的先进 FinFET 工艺节点,其 PDK 体积庞大、文件类型繁多,并且对 Cadence Virtuoso 的版本有明确要求。本文整理一份 N5 PDK 的标准安装与 Virtuoso 导入流程,覆盖从解压、运行 pdkInstall.pl、添加库到 Library Manager 验证的完整步骤,便于 EDA/IT 人员在新机房落地一套先进工艺环境时参照执行。
适用范围:TSMC 5/6/7/12/16/22nm 系列 FinFET PDK 在 Cadence Virtuoso 上的部署。Calibre 平台对应的 DRC/LVS/PEX 配置文件随 PDK 一同分发,本文只涉及在 Virtuoso 端的设计库导入。
1. PDK 文件清单与目录结构
以一个典型的 TSMC N5 iPDK 包为例,正式名称为 TSMC 5 NM CMOS LOGIC FINFET (FF) HKMG 0.75/1.2V PDK(版本号:iPDK_CLN5_v1.2_2p2a_20211227,其中 CLN5 表示 CMOS Logic N5,2p2a 表示对应的 metal stack 选项,发布日期 2021/12/27),解压后的根目录下能看到如下文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@eda iPDK_CLN5_v1.2_2p2a_20211227_all]# ll
drwxr-xr-x 15 root tsmcadm 4096 Jun 4 2024 .
drwxr-xr-x 5 root tsmcadm 4096 Apr 13 2022 ..
drwxr-xr-x 5 root tsmcadm 4096 Dec 20 2021 Calibre
drwxr-xr-x 4 root tsmcadm 4096 Dec 20 2021 CCI
-rwxr-xr-x 1 root tsmcadm 223 Jan 10 2022 cds.lib
-rwxr-xr-x 1 root tsmcadm 285430 Jun 4 2024 display.drf
-rwxr-xr-x 1 root tsmcadm 122713924 Jan 9 2022 DOC_iPDK_CLN5_v1.2_2p2a_20211227.tar.gz
drwxr-xr-x 3 root tsmcadm 4096 Dec 20 2021 iDeck
-rwxr-xr-x 1 root tsmcadm 952415917 Dec 25 2021 iPDK_CLN5_v1.2_2p2a_20211227.tar.gz
drwxr-xr-x 12 root tsmcadm 4096 Apr 13 2022 iPDK_Patch_CLN5_v1.2_2p2a1_20220311
-rwxr-xr-x 1 root tsmcadm 137547456 Apr 13 2022 iPDK_Patch_CLN5_v1.2_2p2a1_20220311.tar.gz
drwxr-xr-x 10 root tsmcadm 4096 Dec 29 2022 iPDK_Patch_CLN5_v1.2_2p2a2_20221220
-rwxr-xr-x 1 root tsmcadm 96 Dec 20 2021 lib.defs
drwxr-xr-x 8 root tsmcadm 8192 Dec 29 2022 models
drwxr-xr-x 3 root tsmcadm 4096 Dec 23 2021 PDK_doc
-rwxr-xr-x 1 root tsmcadm 6188 Dec 25 2021 pdkInstall.cfg
-rwxr-xr-x 1 root tsmcadm 92150 Dec 24 2021 pdkInstall.pl
-rw-r--r-- 1 root tsmcadm 12 Dec 29 2022 prjname.rve
drwxr-xr-x 4 root tsmcadm 4096 Dec 20 2021 QCI
-rwxr-xr-x 1 root tsmcadm 21055 Dec 27 2021 readme
-rwxr-xr-x 1 root tsmcadm 1267 Dec 29 2022 Recommended_tool_version_number.txt
-rwxr-xr-x 1 root tsmcadm 94990 Dec 29 2022 ReleaseNote.txt
-rwxr-xr-x 1 root tsmcadm 17242 Dec 29 2022 REVISION
-rwxr-xr-x 1 root tsmcadm 2203 Dec 29 2022 setup.loc
drwxr-xr-x 5 root tsmcadm 4096 Dec 29 2022 skill
drwxr-xr-x 4 root tsmcadm 53248 Aug 30 2022 Tcl
-rwxr-xr-x 1 root root 1529037 Jun 4 2024 techfile
drwxr-xr-x 5 root tsmcadm 4096 Dec 20 2021 Techfile
drwxr-xr-x 1342 root tsmcadm 274432 Jun 4 2024 tsmcN5
主要内容解读
| 名称 | 类型 | 用途 |
|---|---|---|
pdkInstall.pl |
文件 | 顶层 Perl 安装脚本,用于按需展开各子模块 |
pdkInstall.cfg |
文件 | 安装脚本读取的组件清单/默认选项 |
cds.lib |
文件 | 安装后的样例 Cadence 库索引,可作为模板复制到工作目录 |
lib.defs |
文件 | OA 库的层级定义文件(与 cds.lib 配合) |
display.drf |
文件 | Virtuoso 显示资源文件(颜色、stipple 等) |
techfile |
文件 | Virtuoso tech file(与目录 Techfile/ 区分) |
Techfile/ |
目录 | 安装程序所需的临时文件集合(used for install program) |
tsmcN5/ |
目录 | PDK 主库(PCell、symbol、layout 等 OA cellview) |
models/ |
目录 | HSPICE/Spectre 模型 (.lib、.scs、.inc) |
Calibre/ |
目录 | Calibre DRC/LVS/XRC command files |
CCI/ |
目录 | Calibre Star-RCXT CCI flow technology files |
QCI/ |
目录 | Calibre QRC QCI flow technology files |
skill/ |
目录 | PDK 提供的所有 callback 与实用工具(SKILL) |
Tcl/ |
目录 | 包含 iPDK 所使用的 callback 与实用工具的 Tcl 目录 |
iDeck/ |
目录 | iPDK Deck,存放跨工具兼容性配置 |
PDK_doc/ |
目录 | 所有 PDK 文档(使用前务必查阅 ReleaseNote) |
Recommended_tool_version_number.txt |
文件 | TSMC 官方推荐的 EDA 工具版本号清单 |
ReleaseNote.txt、REVISION、readme |
文件 | PDK 详细信息、版本更新记录、快速指引 |
关键提示:根目录里同时存在
techfile(小写、文件)和Techfile(首字母大写、目录)两份。前者是 Virtuoso tech file,后者包含安装程序所需的临时文件。在 Linux 大小写敏感的文件系统上互不冲突,但拷贝到 Windows / 不区分大小写的存储上会冲突——这是先进节点 PDK 在跨平台传输时的一个典型坑,建议始终在 Linux 文件系统上落地。
首要查看的两个文件:
Recommended_tool_version_number.txt—— 在动手安装前先读这一份,确认本地的 Virtuoso、Calibre、StarRC、HSPICE 是否落在 TSMC 推荐版本范围内。ReleaseNote.txt—— 列出当前版本相对前一版的差异、已知 issue 与 patch 列表。
QCI 与 CCI 目录详解
QCI/ 和 CCI/ 分别对应两套寄生参数提取(RC Extraction)流程,二者内部结构相似但工具链不同,Calibre LVS rule 也各自独立。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
QCI
├── online
│ ├── 1P11M_1X1Xb1Xe1Ya1Yb3Y2R
│ ├── 1P12M_1X1Xb1Xe1Ya1Yb2Y2Yy2R
│ ├── 1P12M_1X1Xb1Xe1Ya1Yb4Y2Z
│ ├── 1P13M_1X1Xb1Xe1Ya1Yb5Y2R
│ ├── 1P13M_1X1Xb1Xe1Ya1Yb5Y2Z
│ ├── 1P14M_1X1Xb1Xe1Ya1Yb4Y2Yy2R
│ ├── 1P14M_1X1Xb1Xe1Ya1Yb4Y2Yy2Z
│ ├── 1P15M_1X1Xb1Xe1Ya1Yb5Y2Yy2R
│ ├── 1P15M_1X1Xb1Xe1Ya1Yb5Y2Yy2Z
│ ├── 1P16M_1X1Xb1Xe1Ya1Yb4Y2Yy2Yx2R
│ ├── 1P16M_1X1Xb1Xe1Ya1Yb4Y2Yy4Z
│ ├── 1P16M_1X1Xb1Xe1Ya1Yb6Y2Yy2R
│ ├── 1P17M_1X1Xb1Xe1Ya1Yb5Y2Yy2Yx2R
│ ├── 1P17M_1X1Xb1Xe1Ya1Yb5Y2Yy2Yx2Z
│ └── common_file
└── QCI_decks
├── calibre_qci.lvs
├── capgen.cmd
├── DFM
│ ├── dfm_device
│ ├── dfm_nmos_macro_file.encrypt
│ ├── dfm_pmos_macro_file.encrypt
│ ├── logic_operation2.encrypt
│ ├── logic_operation.encrypt
│ ├── odSpace.encrypt
│ └── variable_file
├── hcell_qci
├── icellmap.yaml
├── layer_setup
├── lpe_confile
├── qci_qrc_cmd.ccl
├── query.cmd
└── source.added
CCI
├── CCI_decks
│ ├── calibre_cci.lvs
│ ├── dfii_layer_map.txt
│ ├── DFM
│ │ ├── dfm_device
│ │ ├── dfm_nmos_macro_file.encrypt
│ │ ├── dfm_pmos_macro_file.encrypt
│ │ ├── logic_operation2.encrypt
│ │ ├── logic_operation.encrypt
│ │ ├── odSpace.encrypt
│ │ └── variable_file
│ ├── icellmap.yaml
│ ├── pin_file.txt
│ ├── query_cmd
│ ├── source.added
│ ├── star_cmd
│ ├── starrcxt_mapping
│ └── xcell
├── online
│ ├── 1P11M_1X1Xb1Xe1Ya1Yb3Y2R
│ ├── 1P12M_1X1Xb1Xe1Ya1Yb2Y2Yy2R
│ ├── 1P12M_1X1Xb1Xe1Ya1Yb4Y2Z
│ ├── 1P13M_1X1Xb1Xe1Ya1Yb5Y2R
│ ├── 1P13M_1X1Xb1Xe1Ya1Yb5Y2Z
│ ├── 1P14M_1X1Xb1Xe1Ya1Yb4Y2Yy2R
│ ├── 1P14M_1X1Xb1Xe1Ya1Yb4Y2Yy2Z
│ ├── 1P15M_1X1Xb1Xe1Ya1Yb5Y2Yy2R
│ ├── 1P15M_1X1Xb1Xe1Ya1Yb5Y2Yy2Z
│ ├── 1P16M_1X1Xb1Xe1Ya1Yb4Y2Yy2Yx2R
│ ├── 1P16M_1X1Xb1Xe1Ya1Yb4Y2Yy4Z
│ ├── 1P16M_1X1Xb1Xe1Ya1Yb6Y2Yy2R
│ ├── 1P17M_1X1Xb1Xe1Ya1Yb5Y2Yy2Yx2R
│ ├── 1P17M_1X1Xb1Xe1Ya1Yb5Y2Yy2Yx2Z
│ └── common_file
└── SNPS_SETTING_CCI
两个目录的核心区别如下:
| 维度 | QCI/(Calibre QRC QCI) |
CCI/(Calibre Star-RCXT CCI) |
|---|---|---|
| 提取工具 | Cadence Quantus(QRC) | Synopsys StarRC / Star-RCXT |
| Calibre LVS rule | QCI_decks/calibre_qci.lvs |
CCI_decks/calibre_cci.lvs |
| 工具命令文件 | qci_qrc_cmd.ccl、capgen.cmd、query.cmd |
star_cmd、query_cmd |
| 单元映射 | icellmap.yaml(QRC 用) |
icellmap.yaml(StarRC 用)、starrcxt_mapping、xcell |
| 层定义 | layer_setup、lpe_confile |
dfii_layer_map.txt |
| Synopsys 设置 | — | SNPS_SETTING_CCI(顶层目录,StarRC 专属) |
online/ 子目录 |
按 metal stack 命名,存放对应的 online 提取文件 | 同左,metal stack 子目录完全对应 |
| 共用文件 | online/common_file(各 metal stack 共享部分) |
同左 |
online/ 命名规则解读:每个子目录名如 1P11M_1X1Xb1Xe1Ya1Yb3Y2R 描述一种 metal stack 组合,1P = 1 层 poly,11M = 11 层金属,后缀字母组合表示各层金属的方向与类型(X/Y/Z/R 等)。使用时需按设计所采用的 metal stack 选取对应子目录。
重要:
QCI_decks/calibre_qci.lvs与CCI_decks/calibre_cci.lvs是两份独立的 Calibre LVS rule deck,分别服务于 QRC 和 StarRC 提取流程,不可互换。在配置 PEX 环境时,务必确认当前流程使用的提取工具,并指向对应*_decks/下的 LVS rule。
2. 执行 pdkInstall.pl 安装
TSMC PDK 自带的 pdkInstall.pl 是一个交互式 Perl 脚本,封装了组件选择、目标路径设置与解压等动作。
重要:使用前必须同时解压以下两个 tar.gz 包,缺少任何一个都无法正常使用 PDK:
1 2 tar -xzf iPDK_CLN5_v1.2_2p2a_20211227.tar.gz tar -xzf DOC_iPDK_CLN5_v1.2_2p2a_20211227.tar.gz
基本用法如下:
1
2
3
cd <PDK 解压根目录>
chmod +x pdkInstall.pl
./pdkInstall.pl
脚本启动后会依次询问:
- 目标安装路径(Target Install Directory)—— 推荐放在共享存储,例如
/eda/pdk/tsmc/N5/<version>,便于多用户访问。 - 模块选择(Component Selection)—— 包括 Front-End View、Back-End View、Calibre Decks、StarRC Mapping、SPICE Models 等。
- 工艺选项(Process Option)—— 不同的 metal stack 需要按设计目标勾选。
- 校验阶段—— 安装结束后脚本会比对文件数量与 checksum,并打印
Installation Completed Successfully之类的成功信息。
注意:先进节点 PDK 体积大(往往 50–200 GB 起步),建议在 NFS上部署,并保证至少 2× PDK 体积的额外可用空间用于解压和临时文件。
3. 安装完成后的目录验证
pdkInstall.pl 执行成功后,目标安装目录的整体形态应与第 1 节列出的”原始包”基本一致——iPDK 的特点就是大部分文件在分发时已经按工具维度组织好,安装脚本主要做:路径替换、cds.lib 中绝对路径的重写、按所选 metal stack 安装对应工艺文件、以及生成 tsmcN5/ 库的 OA 索引。
关键验收点:
- tsmcPdkInstall.log 日志文件会生成。
tsmcN5/下应包含cdsinfo.tag、data.dm与每个 cell 的子目录(<cell>/<view>/master.tag+ 二进制 cellview)。1199 个 entry 的目录大小是正常的(FinFET 节点 PCell + Symbol + Layout 数量本身就很多)。Calibre/子目录下应能看到针对当前 metal stack 的 DRC/LVS/XRC command files。models/下应至少有一份顶层 Spectre.scs,其中通过include/section串联起 corner 文件;HSPICE 风格的.lib也按 corner 划分好。Recommended_tool_version_number.txt与ReleaseNote.txt是否随本次安装更新——iPDK 在补丁版(minor patch)中常常只更新部分目录,但这两个文件一定会刷新。
4. 启动 Virtuoso 并打开 Library Path Editor
版本兼容性提醒:TSMC 5/6/7/12/16/22nm 等先进 FinFET 工艺库只能在以下 Virtuoso 版本中正常工作:
- ICADVM 20.1(Advanced Node Multi-mode 版本)
- IC 23.1
- IC 25.1
标准的 IC 6.1.8(IC618)不支持 这些先进节点的 PDK,原因在于 5nm 引入的 Color/Multi-Patterning、FinFET 器件 PCell、以及 Layout XL 高级特性需要 ICADVM 内核才能解析。在 IC618 中尝试打开 N5 库会出现
unknown techfile constructs、PCell evaluation failed等错误。
启动 Virtuoso 之前先准备一个干净的工作目录(避免与旧 cds.lib 冲突):
1
2
3
mkdir -p ~/work/n5_demo && cd ~/work/n5_demo
module load cadence/ICADVM201 # 或 IC231 / IC251,按本地 module 命名调整
virtuoso &
Virtuoso 启动后,从 CIW(Command Interpreter Window)顶栏选择:
1
Tools → Library Path Editor...
即可打开 Library Path Editor,它的本质是一个对当前工作目录下 cds.lib 进行编辑的 GUI。
5. 通过 Library Path Editor 添加 TSMC N5 库
在 Library Path Editor 主界面中:
- 在已有的库列表区域空白处 右键 → 选择
Add Library...,弹出 Add Library 对话框。 - 在
Library字段填入要在 cdsLibMgr 中显示的库名(建议与 PDK 提供的库名保持一致,例如tsmcN5、tsmcN5_io、tsmcN5_sram等)。 Path字段通过Browse浏览到 PDK 安装目录下的tsmcN5/目录(或对应的 IO/SRAM/Standard Cell 库,例如library/下的子库)。- 勾选
Lib Path区段中需要写入的cds.lib(默认是当前工作目录下的./cds.lib)。
对应到底层 cds.lib 文件,Library Path Editor 实际是在添加这样的一行:
1
DEFINE tsmcN5 /eda/pdk/tsmc/N5/<version>/tsmcN5
6. 选择库所在路径并完成添加
每一个 PDK 子库(数字标准单元、IO、Memory Compiler 输出、模拟参考库)都需要重复一次第 5 步。常见的 N5 子库包含:
tsmcN5—— 工艺主库(PCell、Symbol、tech.db)
为减少手工点击,也可以直接编辑 cds.lib:
1
2
SOFTINCLUDE $CDS_INST_DIR/share/cdssetup/cds.lib
DEFINE tsmcN5 /eda/pdk/tsmc/N5/<version>/tsmcN5
7. 保存库列表
回到 Library Path Editor,选择菜单 File → Save(或 Save As...)将更改写入磁盘。如果工作目录下没有 cds.lib,系统会自动创建一个;如果已有,则会原地更新。
小技巧:保存前可以先
File → Save As...备份原有cds.lib,便于回滚。
保存完成后,可以在 CIW 看到类似下面的提示:
1
Saved cds.lib at /home/<user>/work/n5_demo/cds.lib
8. 在 Library Manager 中验证
执行 Tools → Library Manager...,进入 Library Manager 界面:
- 在左侧库列表里应能看到刚添加的
tsmcN5等库名。 - 选中
tsmcN5,右侧 Cell View 列表会列出该库提供的器件(如nch_mac、pch_mac、nch_lvt、pch_lvt、nmos_dum、pmos_dum等 PCell)。 - 右键任意 cell,选择
Open→symbol或layout验证是否能正常打开,没有Cannot read techfile/PCell evaluation failed等错误提示。 - 双击器件
layout视图后,应看到完整的 FinFET 版图、正确的层颜色(依赖display.drf)和 Color decoration(多重曝光着色)。
如果在 Library Manager 里某个库下面看不到任何 cell,多半是以下原因:
| 现象 | 可能原因 |
|---|---|
| 库可见但无 cell | cds.lib 路径不对 / 缺少 OpenAccess 索引 |
| 库可见,cell 可见但打开报 PCell 错 | 当前 Virtuoso 版本不支持(如误用 IC618) |
| 打开 layout 后颜色全错 | display.drf 未通过 tech.db 关联,或 .cdsenv 中 viewerColors 设置干扰 |
unknown technology library |
没有把 tsmcN5 设为 attached tech library |
9. 后续配置:Calibre DRC/LVS
PDK 在 Virtuoso 中可见仅是第一步,要完成 DRC/LVS 流程还需要:
- 在
~/.cdsinit中加载 PDK 提供的 Calibre 集成 SKILL(一般是calibre.skl、mgc_rve.il等)。 - 设置环境变量:
1 2 3
export CALIBRE_HOME=/eda/mentor/calibre/<version> export MGC_HOME=$CALIBRE_HOME export PATH=$CALIBRE_HOME/bin:$PATH
- 在 Calibre runset 中指向 PDK 自带的 rule deck(具体子目录以本地解压结果为准):
1 2
*drcRulesFile: /eda/pdk/tsmc/N5/<version>/Calibre/<rule_deck>.drc *lvsRulesFile: /eda/pdk/tsmc/N5/<version>/Calibre/<rule_deck>.lvs
- 在 Virtuoso 中通过
Calibre → Run nmDRC / Run nmLVS调起,确认能识别 PDK 的 svrf rule deck 而无unknown rule报错。
10. 经验总结
- 版本是先进节点 PDK 安装的第一道闸:在动手安装前先确认 Virtuoso 是 ICADVM201 / IC231 / IC251;IC618 在 N5/N7 等节点上几乎不可用。
pdkInstall.pl不是一次到位:先进节点 PDK 经常会发布 patch(hotfix、ECO PDK),后续也会通过pdkInstall.pl --update或单独的 patch 脚本叠加,建议把 PDK 主版本与 patch 版本合并到目录命名中(如N5/v1p0_p2),避免覆盖原版导致回归困难。- 库要分级别 attach:标准单元、IO、SRAM 各自有独立的 attached tech,而工艺主库
tsmcN5才是 tech.db 的根。建库时务必把这层关系理清楚。 - 校验落在 Library Manager:能在 Library Manager 里成功打开 layout 并显示正确颜色,是 PDK 安装“能用”的最低门槛;进一步要跑通 DRC/LVS/PEX 才算端到端可用。
参考资料
- TSMC Open Innovation Platform® Design Reference Flow & N5 PDK Release Note
- Cadence Virtuoso ICADVM 20.1 / IC 23.1 / IC 25.1 Advanced Node Support Matrix
- Cadence Virtuoso Library Manager User Guide
- Mentor Calibre Verification User’s Manual