版图中GDS2文件格式详解
目录
什么是GDS2文件?GDS2文件的历史与发展GDS2文件的结构解析GDS2文件的核心元素GDS2 vs. OASIS: 核心差异如何生成与查看GDS2文件?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: 核心差异
特性GDS2OASIS文件格式二进制二进制文件体积较大较小(压缩率更高)兼容性广泛支持较新,支持较少层次结构支持支持扩展性有限更强(支持更多数据类型)
如何生成与查看GDS2文件?
生成GDS2文件
EDA工具导出
使用Cadence Virtuoso、Synopsys IC Compiler等工具导出GDS2文件。示例:在Cadence Virtuoso中,选择File > Export > Stream,设置输出格式为GDSII。 脚本生成
使用Python库(如gdspy)编写脚本生成GDS2文件。
查看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文件的结构和使用方法是必备技能。
参考资料
GDSII Format SpecificationKLayout GDSII ViewerCadence Virtuoso User GuideOASIS vs. GDSII Comparison