Virtuoso中常见文件解析

本文始于2025年4月,主要介绍版图设计中涉及到的一些常见文件,并对各个文件进行讲解。要说的是,在这些文件中,有些文件会有较详细说明,有些只是做基础介绍。文章旨在让读者知道每个文件的基本含义和用途。

该主题将分4篇文章来讲解(每周一上午7点更新),具体分类和要介绍的文件,可以参考如下目录。


1. 设计库与单元相关文件

1.1 .cds.lib(库定义文件)

用途:指定各种设计库(library)的路径,使 Virtuoso 知道库的位置。

语法:

INCLUDE myLibrary /home/user/cadence/test.lib
DEFINE myLibrary /home/user/cadence/myLibrary

DEFINE 语句用于指定库路径,INCLUDE 语句用于引用其他 cds.lib 文件。

🚀 本站和cdslib相关的文章:点这里

1.2 HCell(层次单元文件)

用途:HCELL 语句用于在 LVS(Layout vs. Schematic)比对时指定布局单元(layout cell) 与 原理图单元(schematic cell) 之间的对应关系。在 LVS 过程中,版图(layout)和原理图(schematic)可能使用了不同的单元名称,因此需要 HCELL 语句明确它们的匹配规则,以便正确识别对应的单元。提高设计的匹配度和calibre的验证效率。

语法:

HCELL layout_name source_name

其中:

layout_name:在布局中的单元名称。

source_name:在schematic中的单元名称。

📌 常见使用规则:

HCELL 允许多种单元名匹配方式,包括:

  1. 一对一映射(one-to-one correspondence)
    • 布局单元和原理图单元名称一致。
    • 适用于大部分常见情况。
  2. 一对多映射(one-to-two correspondence)
    • 一个布局单元可以对应多个原理图单元。
    • 适用于原理图设计中存在不同版本的同一个单元,而布局只使用一个单元的情况。
  3. 多对一映射(two-to-one correspondence)
    • 多个布局单元映射到同一个原理图单元。
    • 适用于优化布局或模块复用的情况。
  4. 通配符匹配(many-to-one correspondence)
    • 允许使用 "*" 进行通配符匹配,以支持多个相似单元的自动映射。
    • 适用于标准单元库或命名规则较为一致的情况。

📋 示例解析

HCELL alu alu
HCELL buf buffer
  • alu 在布局中对应 alubuf 在布局中对应 buffer
  • 这属于 一对一映射,即每个布局单元与一个原理图单元完全匹配。
HCELL cellA cellB
HCELL cellA cellC
  • cellA 在布局中可以匹配 cellBcellC
  • 这是 一对多映射,意味着 LVS 允许 cellA 既可以与 cellB 也可以与 cellC 进行匹配。
HCELL cellD cellF
HCELL cellE cellF
  • cellDcellE 在布局中都映射到 cellF
  • 这属于 多对一映射,表示多个布局单元可以匹配同一个原理图单元。
HCELL "cellG*" cellJ
HCELL cellH "cellI*"
  • "cellG*" 代表所有名称以 cellG 开头的布局单元,都可以映射到 cellJ
  • cellH 对应所有名称以 cellI 开头的原理图单元。
  • 这种匹配方式适用于 通配符映射,可简化 HCELL 规则,适用于大规模单元匹配。

总结:

HCELL 语句它用于定义布局单元和原理图单元之间的映射关系。通过 一对一、一对多、多对一、通配符匹配 等方式,可以灵活适应不同的设计情况,确保 LVS 验证能够正确地进行单元比对,提高设计的匹配度和验证效率。

1.3 XCell文件

用途:用于后防寄生参数提取忽略对应cell内部寄生参数的提取文件。

语法及使用详解:Xcell 列表用于指定特定单元(cell)的提取方式。它可以采用两种格式:

Hcell 格式

layout_name source_name

特定格式

layout_name [source_name]
-C layout_path 
-PCDEF [-INTRINSIC]
-P [-GDS file.gds] |
-FILL file.gds cellname 
-I  [//Comment]

参数解释:

参数说明
-C layout_path用于in-context提取,但在门级提取时会被忽略。具体请参考calibre手册。
-PCDEF指定该 cell 为 PCell(参数化单元),其内部内容不会被提取,仅提取外部寄生参数。
-INTRINSIC仅用于 -PCDEF,表示忽略单元内的设备层寄生效应。
-P指定该 cell 为 原始单元(Primitive),内容不会被提取。
-GDS file.gds仅适用于 LEF/DEF 设计,标识该 cell 是 GDS 宏,必须与 -P 结合使用。
-FILL file.gds cellname仅适用于 LEF/DEF 设计,指定填充金属位于 file.gds 中的 cellname 单元。
-I该 cell 被视为 理想单元(Ideal Xcell),不会被提取,但会记录到 netlist。

语法示例

// layout_name source_name flag
NOR   NOR   -I      // 作为理想单元处理
NAND  NAND  -P      // 作为原始单元处理
NMOS  NMOS  -PCDEF  // 作为 PCell 处理

1.4 Source.add(端口定义文件)

用途:定义调用cell的端口,该文件是一个空器件的端口定义,为满足网表语法要求。如缺少则在抽取netlist时报错。

常见语句方式如下:

-未完待续-

发表评论