本文始于2025年4月,主要介绍版图设计中涉及到的一些常见文件,并对各个文件进行讲解。要说的是,在这些文件中,有些文件会有较详细说明,有些只是做基础介绍。文章旨在让读者知道每个文件的基本含义和用途。
该主题将分4篇文章来讲解(每周一上午7点更新),具体分类和要介绍的文件,可以参考如下目录。
1. 设计库与单元相关文件
1.1 .cds.lib(库定义文件)
1.2 HCell(层次单元文件)
1.3 XCell文件
2. 仿真与环境配置相关文件
2.3 .cdsinit(脚本配置文件)
2.4 .simrc(仿真配置文件)
2.6 Setup.loc 与 csfLookConfig(CSF机制文件)
2.7 仿真与环境配置相关文件总结
3. 工艺与显示相关文件
3.1 Techfile (技术文件)
3.2 Layermap(层映射文件)
4. 版图相关文件
4.1 LEF(Library Exchange Format—库交换格式文件)
4.2 DEF(Design Exchange Format—设计交换格式文件)
4.3 LEF和DEF对比
4.4 GDSII 文件
4.5 Layout.oa(OpenAccess 版图数据库文件)
5. 参考
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 允许多种单元名匹配方式,包括:
- 一对一映射(one-to-one correspondence)
- 布局单元和原理图单元名称一致。
- 适用于大部分常见情况。
- 一对多映射(one-to-two correspondence)
- 一个布局单元可以对应多个原理图单元。
- 适用于原理图设计中存在不同版本的同一个单元,而布局只使用一个单元的情况。
- 多对一映射(two-to-one correspondence)
- 多个布局单元映射到同一个原理图单元。
- 适用于优化布局或模块复用的情况。
- 通配符匹配(many-to-one correspondence)
- 允许使用
"*"
进行通配符匹配,以支持多个相似单元的自动映射。 - 适用于标准单元库或命名规则较为一致的情况。
- 允许使用
📋 示例解析:
HCELL alu alu
HCELL buf buffer
alu
在布局中对应alu
,buf
在布局中对应buffer
。- 这属于 一对一映射,即每个布局单元与一个原理图单元完全匹配。
HCELL cellA cellB
HCELL cellA cellC
cellA
在布局中可以匹配cellB
或cellC
。- 这是 一对多映射,意味着 LVS 允许
cellA
既可以与cellB
也可以与cellC
进行匹配。
HCELL cellD cellF
HCELL cellE cellF
cellD
和cellE
在布局中都映射到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时报错。
常见语句方式如下:

-未完待续-