在 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 名称如 gpdk090gpdk045tsmc16nm_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.dbrefs 字段指向一个或多个 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.dbrefs 属性

创建新 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”