芯片与集成电路设计数据格式之GDSII

GDSII(Graphic Design System的简称)是电子设计自动化(Electronic Design Automation,EDA)中的集成电路或布局数据交换的数据格式。它是一种二进制文件格式,用于以分层形式表示平面几何形状、文本标签以及布局的相关信息。在过去的30多年中,由于GDSII流格式是一种事实上的标准,几乎所有EDA软件与硬件系统都支持它。

GDSII是在80年代由Calma开发的标准,所有权随着年代的推移从Calma转移到GE,再到Valid,最终到Cadence。版本虽然历经迭代更新,格式和语法没有本质的变化。GDSII一直是集成电路布局的行业标准数据库。尽管OASIS已经获得了很大的发展,但GDSII仍然是常描述用于构建芯片物理布局的主要格式。在某种程度上,GDSII的长生命周期既归因于其优雅的架构,也归因于其简单性。同时,庞大的遗留代码库可能也是导致切换到替代方案(如OASIS)变得缓慢的原因之一。

本文通过示例描述,帮助读者快速了解GDSII格式,以及如何对GDS文件进行读写操作。

文件格式

GDSII文件格式清晰易懂,通过关键字定义文件库,结构,以及各种参数。本文着重介绍其在CAD/CAE/EDA项目开发中可能会遇到的内容。

文件标识

GDSII文件头始终以HEADER标识开头,参数包含了所使用的版本号。之后,BGNLIB记录了最后修改和最后访问文件的日期。LIBNAME记录了文档名称。之后是可选的文件头标识:REFLIBS,FONTS,ATTRTABLE,GENERATIONS,和FORMAT。文件头的最后一个标识必须是UNITS,记录单位与精度。在文件头之后是结构段。当所有信息定义完成后,文件以ENDLIB标识结束。

HEADER600 BGNLIB10/31/2023 14:28:48 10/31/2023 14:28:48 LIBNAMEWelSim_FirstUNITS0.001 1e-09 …ENDLIB

结构标识

每个结构都有两个头标识和一个尾标识,包围一个任意的元素列表。第一个结构头标识是BGNSTR,其中包含创建日期和最后修改日期。随后是STRNAME标识。然后,结构段处于打开状态,可以列出BOUNDARY, PATH, SREF, AREF, TEXT, NODE, BOX七种元素中的一种。结构的最后一个标识是ENDSTR。在它之后必须是另一个结构段或者是整个库的结束,ENDLIB。

BGNSTRSTRNAME...ENDSTR

BOUNDARY元素

边界元素定义了一个填充的多边形(Polygon)。它以BOUNDARY标识开头,包含可选标识ELFLAGS和PLEX,之后必须包含LAYER、DATATYPE和XY标识。LAYER标识用于定义此边界使用的层(从0到63编号)。DATATYPE标识包含不重要的信息,其参数应为零。XY标识包含从四对到200对坐标,用于定义多边形的轮廓。此标识中的点数由标识长度定义。值得注意的是,因为边界必须是闭合的,所以第一个和最后一个坐标值必须相同。

BOUNDARYLAYER0 DATATYPE0 XY0: 00:10002000:10002000:00:0ENDEL

PATH元素

路径是一种具有非零宽度的开放图形,通常用于放置导线。以PATH标识开始,然后是可选的ELFLAGS和PLEX标识。随后必须出现LAYER标识,以识别所需的路径材料。此外,必须出现一个DATATYPE标识和一个XY标识,以定义路径的坐标。路径中可以包含从两个到200个点。在路径规范的XY标识之前,有两个可选的标识PATHTYPE和WIDTH。PATHTYPE标识描述了路径段端点的性质。如果该值为0,段将具有在路径顶点终止的方形端点。值为1表示圆形端点,值为2表示方形端点,其端点宽度为其宽度的一半。路径的宽度由可选的WIDTH标识定义。如果宽度值为负数,那么它将独立于任何结构缩放。

PATHLAYER1 DATATYPE0 PATHTYPE0 WIDTH500 XY0: 00:1000020000:018000:150008000:15000ENDEL

SREF元素

SREF标识表示结构体引用,通过允许结构引用出现在其他结构中,从而实现层次。随后是可选的ELFLAGS和PLEX标识。之后SNAME记录命名所需的结构,XY标识包含单个坐标以放置此结构。在XY标识之前,可能存在可选的变换标识。如果需要结构变换,必须首先出现STRANS标识。

BGNSTR10/31/2023 14:28:48 10/31/2023 14:28:48 STRNAMESquareSREFSNAMECircleXY-10000: 5000ENDELBOUNDARYLAYER0 DATATYPE0 XY-15000: 0-15000:10000-5000:10000-5000:0-15000:0ENDELENDSTR

AREF元素

除了用于单个结构的SREF,GDSII还有AREF(阵列引用)元素,它可以放置一维或二维结构阵列。这对许多包括存储器的集成电路布局非常有用。在可选的ELFLAGS和PLEX标识之后,接着是SNAME标识,用于标识被排列的结构。接下来,可选的变换标识STRANS、MAG和ANGLE标识提供了实例的方向。必须随后出现COLROW标识,以指定数组中的列数和行数。最后一条标识是一个XY标识,包含三个点:角实例的坐标、列方向上最后一个实例的坐标、以及行方向上最后一个实例的坐标。

BGNSTR10/31/2023 11:56:33 10/31/2023 11:56:34 STRNAMEARRAY_EXAREFSNAMEWELSIM_RECTANGLE10COLROW5 3 XY0: 020000:00:-10000ENDELENDSTR

TEXT元素

消息可以通过TEXT标识包含在电路中。以关键字TEXT开头,之后是可选的ELFLAGS和PLEX标识,接着是必需的LAYER标识。然后必须出现一个具有零参数的TEXTTYPE标识。可选的PRESENTATION标识指定字体。可选的PATHTYPE、WIDTH、STRANS、MAG和ANGLE标识可以调整文本。最后两个标识是必需的:一个XY标识,带有单个坐标以定位文本。一个STRING标识,用于表达实际文本。

TEXT LAYER0 TEXTTYPE2 PRESENTATION0 XY5000: 3000STRINGWelSim labelENDEL

NODE元素

NODE标识可以指定电路信息。这个元素中的信息不是图形信息,不会影响制造的电路。而是为了供其他使用拓扑信息的CAD系统使用。这里就不赘述了。

NODELAYER21NODETYPE1XY123000: 124500123000:103500126000:103500126000:124500123000:124500ENDEL

BOX元素

GDSII文件的最后一个元素是BOX。在BOX标识之后是可选的ELFLAGS和PLEX标识,接着是必需的LAYER标识,一个带有零参数的BOXTYPE标识,以及一个XY标识。XY标识必须包含五个点,描述一个封闭的矩形。与边界不同,这不是一个填充的图形。因此,它不用于描述集成电路的几何形状。

BOX43 292000-7000106000-700010600019000920001900092000-7000ENDEL

GDS文件的读写操作

除了商业软件供应商外,还有许多免费的GDSII工具。这些免费工具包括编辑器、查看器、将2D布局数据转换为通用3D格式的实用程序、将二进制格式转换为可读的ASCII格式的实用程序,以及程序库。笔者经过一些测试和使用,发现

1. KLayout是一款开源的GDS文件可视化浏览与编辑器,简单好用,适合初学者。开源的代码也适合深入学习。支持将二进制的GDS文件转换为ASCII格式的可读文本。

2. gdstk是一款基于C++语言的开源GDS读写包,协议非常友好,可以直接用于GDS相关的商业项目。同时拓展有Python版本。

3. 自行编写与GDSII相关的应用程序并不复杂,还可以与其他CAD内核模块与2D/3D显示模块结合,实现更为丰富的功能。

总结

GDSII是一种语法简单的二维CAD文件格式,常用于集成电路和芯片的设计。GDS生态丰富,有大量的商业和开源软件支持,对于应用者和开发者都极为友好。如果研发一款EDA/CAE软件,对GDSII文件的支持可能是必要的。

WelSim与作者不隶属于GDSII,OASIS,Cadence,KLayout,gdstk。和GDSII,OASIS,Cadence,KLayout,gdstk的开发团队与机构没有直接关系。这里的引用仅用作技术博客文章与软件使用的参考。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容