背景

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 包为例(版本号示例:iPDK_CLN5_v1.2_2P2A_20211227,其中 CLN5 表示 CMOS Logic N5,2P2A 表示对应的 metal stack 选项),解压后的根目录下能看到如下文件:

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 文件 顶层 ASCII / 编译后的 techfile(与目录 Techfile/ 区分)
Techfile/ 目录 不同 metal stack / option 的 techfile 集合
tsmcN5/ 目录 工艺主库(PCell、symbol、layout 等 OA cellview)
library/ 目录 其它附属设计库(IP、参考库)
models/ 目录 Spectre / HSPICE 模型 (.scs.lib.inc)
Calibre/ 目录 Calibre DRC / LVS / xRC 的 rule deck 与 runset
CCI/ 目录 Cadence Custom Compiler Integration 相关文件
QCI/ 目录 Quantus / QRC Integration 相关文件(用于寄生提取)
skill/ 目录 PDK 提供的 SKILL 扩展(菜单、工具栏、callback)
Tcl/ 文件 Tcl 集成脚本(部分 PDK 以单文件形式分发)
eDesigner/ 目录 Virtuoso eDesigner(约束/AMS 设计辅助)扩展
iDeck/ 目录 iPDK Deck,存放跨工具兼容性配置
pdkplus_dir/pdkplus_init.iletsmcPDKPlusAPIInit.ile 目录/文件 TSMC PDK+ API 接口(增强 PCell、自动布线辅助等)
PDK_doc/ 目录 Design Rule Manual、Process Spec、Application Note
Recommended_tool_version_number.txt 文件 TSMC 官方推荐的 EDA 工具版本号清单
ReleaseNote.txtREVISIONreadme 文件 版本说明、更新记录、快速指引
libManager.log 文件 上一次 Library Manager 操作的日志(参考用,可删除)
util/ 目录 安装/检查辅助小工具

关键提示:根目录里同时存在 techfile(小写、文件)和 Techfile(首字母大写、目录)两份。前者通常是顶层默认 techfile,后者按 metal stack 分目录存放具体的 tech.tf / tech.db。在 Linux 大小写敏感的文件系统上互不冲突,但拷贝到 Windows / 不区分大小写的存储上会冲突——这是先进节点 PDK 在跨平台传输时的一个典型坑,建议始终在 Linux 文件系统上落地。

首要查看的两个文件

  1. Recommended_tool_version_number.txt —— 在动手安装前先读这一份,确认本地的 Virtuoso、Calibre、StarRC、HSPICE 是否落在 TSMC 推荐版本范围内。
  2. ReleaseNote.txt —— 列出当前版本相对前一版的差异、已知 issue 与 patch 列表。

2. 执行 pdkInstall.pl 安装

TSMC PDK 自带的 pdkInstall.pl 是一个交互式 Perl 脚本,封装了组件选择、目标路径设置与解压等动作。基本用法如下:

1
2
3
cd <PDK 解压根目录>
chmod +x pdkInstall.pl
./pdkInstall.pl

脚本启动后会依次询问:

  1. 目标安装路径(Target Install Directory)—— 推荐放在共享存储,例如 /eda/pdk/tsmc/N5/<version>,便于多用户访问。
  2. 模块选择(Component Selection)—— 包括 Front-End View、Back-End View、Calibre Decks、StarRC Mapping、SPICE Models 等。
  3. 工艺选项(Process Option)—— 不同的 metal stack 需要按设计目标勾选。
  4. 校验阶段—— 安装结束后脚本会比对文件数量与 checksum,并打印 Installation Completed Successfully 之类的成功信息。

注意:先进节点 PDK 体积大(往往 50–200 GB 起步),建议在 NFS上部署,并保证至少 2× PDK 体积的额外可用空间用于解压和临时文件。


3. 安装完成后的目录验证

pdkInstall.pl 执行成功后,目标安装目录的整体形态应与第 1 节列出的”原始包”基本一致——iPDK 的特点就是大部分文件在分发时已经按工具维度组织好,安装脚本主要做:路径替换、cds.lib 中绝对路径的重写、按所选 metal stack 拷贝对应 Techfile/ 子目录、以及生成 tsmcN5/ 库的 OA 索引。

关键验收点

  • tsmcPdkInstall.log 日志文件会生成。
  • tsmcN5/ 下应包含 cdsinfo.tagdata.dm 与每个 cell 的子目录(<cell>/<view>/master.tag + 二进制 cellview)。1199 个 entry 的目录大小是正常的(FinFET 节点 PCell + Symbol + Layout 数量本身就很多)。
  • Techfile/ 下能找到与所选 metal stack 对应的 tech.tf / tech.db,并在 tsmcN5/ 库的 cdsinfo.tag 中被引用。
  • Calibre/ 子目录下应能看到针对当前 metal stack 的 DRC/LVS/xRC rule deck。
  • models/ 下应至少有一份顶层 Spectre .scs,其中通过 include/section 串联起 corner 文件;HSPICE 风格的 .lib 也按 corner 划分好。
  • Recommended_tool_version_number.txtReleaseNote.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 constructsPCell 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 主界面中:

  1. 在已有的库列表区域空白处 右键 → 选择 Add Library...,弹出 Add Library 对话框。
  2. Library 字段填入要在 cdsLibMgr 中显示的库名(建议与 PDK 提供的库名保持一致,例如 tsmcN5tsmcN5_iotsmcN5_sram 等)。
  3. Path 字段通过 Browse 浏览到 PDK 安装目录下的 tsmcN5/ 目录(或对应的 IO/SRAM/Standard Cell 库,例如 library/ 下的子库)。
  4. 勾选 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_macpch_macnch_lvtpch_lvtnmos_dumpmos_dum 等 PCell)。
  • 右键任意 cell,选择 Opensymbollayout 验证是否能正常打开,没有 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 关联,或 .cdsenvviewerColors 设置干扰
unknown technology library 没有把 tsmcN5 设为 attached tech library

9. 后续配置:Calibre DRC/LVS

PDK 在 Virtuoso 中可见仅是第一步,要完成 DRC/LVS 流程还需要:

  1. ~/.cdsinit 中加载 PDK 提供的 Calibre 集成 SKILL(一般是 calibre.sklmgc_rve.il 等)。
  2. 设置环境变量:
    1
    2
    3
    
    export CALIBRE_HOME=/eda/mentor/calibre/<version>
    export MGC_HOME=$CALIBRE_HOME
    export PATH=$CALIBRE_HOME/bin:$PATH
    
  3. 在 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
    
  4. 在 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(需 TSMC Online 账号)
  • 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