在 Cadence Virtuoso 中,Library Manager 里列出的库(Library)从功能上分为两大类:Technology Library(技术库) 和 Design Library(设计库/项目库)。理解二者的区别与关联,是管理 EDA 工程环境的基础。
核心区分标准:tech.db 文件
判断一个 library 属于哪种类型,规则极为简单:
- 库目录下有
tech.db文件 → Technology Library - 库目录下没有
tech.db文件(或仅有指向其他技术库的引用)→ Design Library
在旧版 CDB 格式(5.1.41 等)中,对应文件是 techfile.cds,OpenAccess 格式(IC6.1.8、ICADVM20.1 及以上)则使用 tech.db。
Technology Library(技术库)
内容与来源
Technology Library 存储的是工艺/制程相关数据,通常由 Foundry(晶圆厂)随 PDK(Process Design Kit)一起提供,不需要用户自行创建或修改。典型内容包括:
- 层定义(Layer Stack):金属层、Via 层的编号、名称、用途
- 显示属性(Display Properties):各层颜色、填充图案
- 设计规则数据:最小线宽、间距等(供 DRC 使用)
- Via 定义(Via Definitions)
- 器件参数(Device Parameters):MOS 管模型相关参数
常见的 Technology Library 名称如 gpdk090、gpdk045、tsmc16nm_tech 等。
关键特征
- 目录下存在
tech.db,Virtuoso 即将其识别为 Technology Library - 在 Library Manager 中,Technology Library 无法被 “attach” 到另一个 Technology Library(会报错
TECH-2000150) - 通常对设计团队只读,不应随意修改
Design Library(设计库/项目库)
内容与来源
Design Library 由用户自行创建,存放设计数据,包括:
- Schematic(原理图)视图
- Layout(版图)视图
- Symbol(符号)视图
- 其他自定义视图(Verilog、Spectre netlist 等)
Design Library 本身不持有工艺数据,必须与一个 Technology Library 关联,才能让 Virtuoso 的各种工具(DRC、LVS、Layout Editor)知道应使用哪套制程规则和层定义。
关联方式:Attach 与 Reference
将 Design Library 与 Technology Library 关联有两种机制。
方式一:Attach(附着)——最常用
Design Library 直接附着到某一个 Technology Library,自身目录下不产生 tech.db。
GUI 操作:CIW → Tools → Technology File Manager → Attach
SKILL 操作:
; 将 myDesignLib 附着到 gpdk090
techSetTechLibName(ddGetObj("myDesignLib") "gpdk090")
; 解除附着
techDeleteTechLibName(ddGetObj("myDesignLib"))
; 或(IC6.1.6 及以上版本):
techUnattachTechFile(ddGetObj("myDesignLib"))
Attach 是一对一关系,设计库只能附着到一个技术库。绝大多数项目采用此方式。
方式二:Reference(引用)——高级场景
Design Library 自己拥有一个 tech.db,但该 tech.db 的 refs 字段指向一个或多个 Technology Library,可以在基础工艺数据之上叠加或覆盖部分数据。
SKILL 操作:
design_lib = ddGetObj("myDesign")
; 在 myDesign 库目录下创建新的 tech.db
newTech = techOpenTechFile("myDesign" "tech.db" "a")
; 获取 gpdk090 的 techfile 对象
gpdk090 = techGetTechFile(ddGetObj("gpdk090"))
; 设置引用关系
newTech~>refs = list(gpdk090)
; 保存
techSaveTechFile(newTech)
Reference 支持一个设计库同时引用多个技术库(多工艺场景),是 ITDB(Incremental Technology Database)等高级特性的基础。
Attach 与 Reference 对比
| 维度 | Attach | Reference |
|---|---|---|
自身有无 tech.db |
无 | 有(但 refs 指向其他 techlib) |
| 支持关联库数量 | 1 个 | 1 个或多个 |
| 适用场景 | 普通单工艺设计(绝大多数项目) | 多工艺、增量工艺数据叠加 |
| 切换方式 | techSetTechLibName |
修改 tech.db 的 refs 属性 |
创建新 Library 时的三个选项
在 Library Manager → File → New Library 时,”Technology File for New Library” 表单提供三个选项:
| 选项 | 效果 | 产生结果 |
|---|---|---|
| Compile a technology file | 从 ASCII tech file 编译 | 新库自带 tech.db,成为 Technology Library |
| Reference existing technology library | 引用已有工艺库 | 新库有 tech.db(含 refs),为 Design Library |
| Attach to an existing technology library | 附着到已有工艺库 | 新库无 tech.db,为 Design Library(最常见) |
常见操作与注意事项
Technology Library 误操作后的恢复
如果某个 Design Library 目录下误生成了 tech.db,它会被 Virtuoso 识别为 Technology Library,此时无法对其执行 Attach 操作(会报 TECH-2000150)。修复方法:
1
2
3
# 在 Linux/Unix 命令行下,进入 library 目录
cd /path/to/myDesignLib
mv tech.db tech.db.old
移除 tech.db 后,该库重新变为 Design Library,即可正常 attach 到所需的工艺库。确认无误后,可删除 tech.db.old。
Attach ↔ Reference 互转(SKILL)
Attach 转 Reference:
design_lib = ddGetObj("myDesign")
; 先把当前 attach 改为默认技术库
techSetTechLibName(design_lib "cdsDefTechLib")
; 创建新的 tech.db 并设置 refs
newTech = techOpenTechFile("myDesign" "tech.db" "a")
gpdk090 = techGetTechFile(ddGetObj("gpdk090"))
newTech~>refs = list(gpdk090)
techSaveTechFile(newTech)
Reference 转 Attach:
lib = ddGetObj("designLib")
tf = techGetTechFile(lib)
reflib = car(tf~>refs)~>libName ; 取得被引用的技术库名
techDeleteTechFile(tf) ; 删除自身的 tech.db
techBindTechFile(lib reflib) ; 重新 attach 到该技术库
关系全景图
1
2
3
4
5
6
7
8
9
10
11
12
13
Technology Library(PDK 提供)
├── tech.db(包含层定义、设计规则等工艺数据)
└── 可选:Cell/View(unified library 形式)
↑
│ attach(最常见)或 reference(高级)
│
Design Library(用户项目库)
├── CellA/
│ ├── schematic/
│ └── layout/
└── CellB/
├── schematic/
└── symbol/
设计库通过 attach/reference 机制”借用”工艺库的制程数据,自身专注于存放设计内容。两者职责分离,是 Cadence Virtuoso 工程管理的核心设计理念。
参考资料
- Cadence Support: Virtuoso Technology Data User Guide, IC25.1 — “Referencing or Attaching a Technology Library”(需登录查看)
- Cadence Support Article 20201104: “How to convert a techlib into a design library? How to attach and detach a technology library from a design library using SKILL?”
- Cadence Support Article 11494172: “How to update a library from being attached to referenced and vice-versa?”
- Cadence Support Article 20451243: “Virtuoso - Incremental Technology Database (ITDB)”
- Cadence Support Article 20497844: “Library Manager: Quick Reference to Basic Concepts and Most Referred Solutions”