版图中GDS2文件格式详解
目录
什么是GDS2文件?
GDS2(Graphic Data System II)是一种用于集成电路(IC)设计和版图数据的二进制文件格式。它是GDS格式的第二个版本,由Calma公司在20世纪70年代开发,现已成为半导体行业中最广泛使用的版图数据交换标准之一。
GDS2文件主要用于描述芯片的物理布局信息,包括几何图形、层次结构、文本标注等。
GDS2文件的历史与发展
- 1970年代:GDS格式由Calma公司开发,用于其版图设计系统。
- 1980年代:GDS2成为行业标准,广泛应用于IC设计和制造。
- 2000年代:OASIS格式出现,试图替代GDS2,但GDS2因其成熟性和广泛支持仍占据主导地位。
- 至今:GDS2仍然是半导体行业中最常用的版图数据格式之一。
GDS2文件的结构解析
GDS2文件是一种二进制文件,由一系列记录(Records)组成。每个记录包含以下部分:
- 记录头:2字节,表示记录类型。
- 记录长度:2字节,表示记录的总长度。
- 记录内容:可变长度,包含具体数据。
主要记录类型
- HEADER:文件头,包含版本信息。
- BGNLIB:库开始标记,包含创建和修改时间。
- LIBNAME:库名称。
- UNITS:定义用户单位与数据库单位的比例。
- STRUCT:结构定义开始。
- SNAME:结构名称。
- BOUNDARY:几何图形(多边形)定义。
- PATH:路径定义。
- TEXT:文本标注。
- ENDLIB:库结束标记。
以下为test.gds案例 ,详细解释每个字段含义
hexdump -C test.gds
00000000 00 06 00 02 00 05 |00 1c 01 02 00 7d 00 02 00 06 |...........}....|
00000010 00 0e 00 09 00 2d 00 7d 00 02 00 06 00 0e 00 09 |.....-.}........|
00000020 00 33 |00 08 02 06 74 65 73 74 |00 14 03 05 3e 41 |.3....test....>A|
00000030 89 37 4b c6 a7 f0 39 44 b8 2f a0 9b 5a 54| 00 1c |.7K...9D./..ZT..|
00000040 05 02 00 7d 00 02 00 06 00 0d 00 36 00 00 00 7d |...}.......6...}|
00000050 00 02 00 06 00 0e 00 09 00 2d | 00 08 06 06 74 65 |.........-....te|
00000060 73 74 |00 04 08 00 |00 06 0d 02 00 00 |00 06 0e 02 |st..............|
00000070 00 00 | 00 2c 10 03 ff ff ff b0 ff ff ff c7 00 00 |...,............|
00000080 00 52 ff ff ff c7 00 00 00 52 00 00 00 3a ff ff |.R.......R...:..|
00000090 ff b0 00 00 00 3a ff ff ff b0 ff ff ff c7 |00 04 |.....:..........|
000000a0 11 00 |00 04 07 00| 00 04 04 00 |00 00 00 00 00 00 |................|
000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000800
(1)00 06 00 02 00 05:据前两个字节00 06得到此模块共六个字符,根据00 02得知此模块为文件头,00 05为版本号;
(2)00 1c 01 02 00 7d 00 02 00 06 00 0e 00 09 00 2d 00 7d 00 02 00 06 00 0e 00 09
00 33 :
前两个字节00 1C得到此模块共28个字节,01 02可知为BGNLIB库文件头,00 7d 00 02 00 06 00 0e 00 09 00 2d和00 7d 00 02 00 06 00 0e 00 09
00 33定义了GDSII文件最后一次修改的时间2025年2月6日14点09分45秒和读取时间2025年2月6日14点33秒.
(3)00 08 02 06 74 65 73 74表示LIBNAME,它定义了文件库名,即test
(4)00 14 03 05 3e 41 89 37 4b c6 a7 f0 39 44 b8 2f a0 9b 5a 54 20个字节,为UNITS,后面跟了两个8字节的浮点数,UNITS 记录定义了两个浮点数,分别表示 用户单位 和 数据库单位。这两个浮点数用于坐标的缩放和转换。
前 4 字节:00 14 03 05 → 记录头和类型(UNITS)。
后 16 字节:两个 8 字节的浮点数(大端格式)。
(5)00 1c 05 02 00 7d 00 02 00 06 00 0d 00 36 00 00 00 7d 00 02 00 06 00 0e 00 09 00 2d:
05 02 表示BGNSTR模块结构头,后跟2个12字节记录创建时间以及修改时间。后面跟着若干cell即instance。
(6)00 08 06 06 74 65 73 74:STRNAME 模块结构名,cellname名为test;
(7) 00 04 08 004个字节,BOUNDARY多边形
(8) 00 06 0d 02 00 00 :6个字节,LAYER层,0层
(9) 00 06 0e 02 00 00: 6个字节,DATATYPE,0
(10) 00 2c 10 03 ff ff ff b0 ff ff ff c7 00 00 00 52 ff ff ff c7 00 00 00 52 00 00 00 3a ff ff ff b0 00 00 00 3a ff ff ff b0 ff ff ff c7 44个字节,XY,5对int32型的XY坐标: 5对有符号整数分别为(-80,-57),(82,-57),(82,58),(-80,58),(-80,-57);
(11) 00 04 11 00 4个字节,结束插入
(12) 00 04 07 00 4个字节,ENDSTR结束模块。
(13) 00 04 04 004个字节,ENDLIB结束库文件。
GDS2文件的核心元素
1. 层次结构(Hierarchy)
- GDS2文件支持层次化设计,允许定义和复用结构(STRUCT)。
- 每个结构可以包含几何图形、路径、文本等元素。
2. 几何图形(Geometry)
- 使用
BOUNDARY
记录定义多边形,描述版图中的金属层、扩散层等。 - 每个多边形由一系列顶点坐标组成。
3. 路径(Path)
- 使用
PATH
记录定义线宽和路径形状,常用于描述导线。
4. 文本标注(Text)
- 使用
TEXT
记录添加文本信息,如标签、注释等。
5. 单位定义(Units)
- 使用
UNITS
记录定义用户单位与数据库单位的比例,确保数据的精确性。
GDS2 vs. OASIS: 核心差异
特性 | GDS2 | OASIS |
---|---|---|
文件格式 | 二进制 | 二进制 |
文件体积 | 较大 | 较小(压缩率更高) |
兼容性 | 广泛支持 | 较新,支持较少 |
层次结构 | 支持 | 支持 |
扩展性 | 有限 | 更强(支持更多数据类型) |
如何生成与查看GDS2文件?
生成GDS2文件
-
EDA工具导出
- 使用Cadence Virtuoso、Synopsys IC Compiler等工具导出GDS2文件。
- 示例:在Cadence Virtuoso中,选择
File > Export > Stream
,设置输出格式为GDSII。
-
脚本生成
- 使用Python库(如
gdspy
)编写脚本生成GDS2文件。
- 使用Python库(如
查看GDS2文件
-
专用查看器
- 使用KLayout、GDSII Viewer等工具查看GDS2文件。
-
EDA工具导入
- 将GDS2文件导入EDA工具(如Cadence Virtuoso)进行查看和编辑。
GDS2文件的局限性
-
文件体积较大
- GDS2文件是二进制格式,且未压缩,导致文件体积较大。
-
功能有限
- 不支持现代设计中的一些高级特性(如参数化单元)。
-
版本老旧
- GDS2格式自1980年代以来未进行重大更新,逐渐被OASIS取代。
应用场景
-
IC设计与制造
- GDS2文件用于描述芯片的物理布局,是流片(Tape-out)的关键数据。
-
版图验证
- 使用DRC(设计规则检查)和LVS(版图与电路图一致性检查)工具验证GDS2文件。
-
IP核交换
- GDS2文件常用于IP核(Intellectual Property Core)的交付。
总结
GDS2文件作为半导体行业中最经典的版图数据格式,至今仍在IC设计和制造中发挥着重要作用。尽管其存在文件体积大、功能有限等局限性,但其广泛的兼容性和成熟性使其难以被完全取代。对于IC设计工程师而言,掌握GDS2文件的结构和使用方法是必备技能。