一种寄生参数提取工具专用的版图数据格式
技术领域
一种寄生参数提取工具专用的版图数据库格式属于集成电路计算机辅助设计(IC-CAD)中的芯片内互连线寄生参数提取技术领域。
背景技术
集成电路中广泛存在宽度仅为深亚微米量级且多层分布的金属互连线,这些互连线已不能近似为一种等电势连接,而需要考虑在电路正常工作情况下它们之间的电磁耦合寄生效应(parasitic effect)。并且,与晶体管等设备不同,金属线互连线间的这种寄生效应随着集成电路特征尺寸的缩小和工作频率的增大而日益显著。
当前成熟的制造工艺已经达到90nm以下,电路工作频率越来越高,电路中互连线的高宽比的增长和线间距的不断减小,互连线的寄生电磁场效应已成为影响诸如时延、功耗、电源完整性和信号完整性等电路性能的主要因素。因此,在集成电路的设计流程中,必须考虑互连线寄生效应对电路的影响。
一个典型的集成电路设计流程中,在版图设计和电路模拟之间有一个被称为“寄生参数提取(parasiticextraction)”的步骤。该步骤的任务就是用寄生参数提取工具提取出布线后线网的等效电路元件模型(电阻,电容和电感等寄生参数),然后将他们反标回电路。从而进一步对带寄生参数的电路进行精确的仿真或可靠性分析,使设计者提高芯片性能和投片良品率。
使用普通版图数据库(如GDS文件)作为输入时,寄生参数提取工具工作的基本流程是:首先从普通版图数据库提取出同一线网在不同导体层图形间的连接关系信息和器件的信息(包括属性,模型名,管脚位置等);然后从版图数据库中读出所需的线网图形的几何信息,结合制造工艺信息输入到寄生参数提取引擎;寄生参数提取引擎提取寄生参数;寄生参数反标到电路网表中。
寄生参数提取工具使用普通版图数据库存在以下问题:
普通版图数据库中直接存储形体的坐标值,没有将坐标值进行合理的压缩存储。由于在版图数据库中几何坐标的数据量很大,占用的数据库空间较多。寄生参数提取工具从普通版图数据库中读取形体几何信息的时间较长。
当用户选择性的提取几根线网的寄生参数时,仅需要获取少数几根线网的形体的几何信息。普通版图数据库中同一个线网的各形体在外存中未建立索引结构。寄生参数提取工具为从中获取少数线网的形体几何信息仍需要遍历整个数据库来查找。数据查找的效率很低。
普通版图数据库中同一个线网的各形体在外存中存储在非连续的区域,寄生参数提取工具读入一个线网的所有形体需要在外存的不同地址进行多次I/O操作,数据读入的速度较慢。
寄生参数提取工具提取线网等效电路元件模型的功能,要求输入数据中必须包含版图中同一线网分布在不同导体层的图形间连接关系信息和各图形的几何坐标。普通版图数据库中仅存储各图形的坐标,没有存储不同导体层图形间连接关系信息的数据结构,上述信息没有被普通版图数据库保存到计算机外存。为获取输入数据,寄生参数提取工具必须实时调用线网连接关系提取程序分析版图,组织出上述信息。很多情况下,上述信息是可以重复利用的信息,寄生参数提取工具没有必要在每次运行时调用程序组织上述信息。
寄生参数提取工具反标线网等效电路元件模型到电路的功能,要求输入数据中必须包括器件属性,器件模型,器件管脚位置等信息。普通版图数据库中仅存储器件的形体几何坐标,没有存储上述器件相关的信息的数据结构,上述信息没有被普通版图数据库保存到计算机外存。为获取输入数据,寄生参数提取工具必须实时调用器件识别程序分析版图,组织出上述信息。很多情况下,上述信息是可以重复利用的信息,寄生参数提取工具没有必要在每次运行时调用程序组织上述信息。
普通版图数据库中存储着器件的形体信息,是器件识别程序提取版图器件信息的原始输入数据,但对于寄生参数提取引擎则是冗余输入信息。
由此可见,使用普通版图数据库进行寄生参数提取时,寄生参数提取工具需要花费较多的时间查找,读入和组织输入数据,降低了寄生参数提取工具整体的运行效率。
发明内容
鉴于上述寄生参数提取工具使用普通版图数据库时存在的问题,本发明的目标是最大限度的提高寄生参数提取工具查找,读入和组织输入数据的能力,从整体上提高寄生参数提取工具的运行效率。
为了达到本发明的上述目标,本发明提供了一种寄生参数提取工具专用的版图数据库格式——ZPD格式数据库。上述专用版图数据库建立快速的多边形数据索引以集总线网分散在各层的形体,定义保存线网连接关系和器件信息的元数据类型以减少不必要的数据重组,压缩版图坐标数据的存储空间、在连续空间存储相关元数据和去除冗余信息以提高读入数据的速度。
本发明解决其技术问题所采用的技术方案是:
ZPD格式数据库由多个被称为段文件的二进制文件组成。段文件中存储着版图数据库的各种元数据,这些元数据描述了版图中和寄生参数提取工具相关的单元信息,单元内的instance信息,器件信息和线网信息。寄生参数提取工具专用版图数据库中元数据类型的格式如下:
元数据类型Lib
记录和库相关的全局信息,包括库格式的版本号,库的名称,库中1单位长度对应的实际长度,单位为米。
专用版图数据库格式ZPD版本号 |
库名称 |
数据库单位大小 |
元数据类型String
记录一组字符组成的字符串。
字符串的第一个字符 |
字符串的其他字符 |
字符串的最后一个字符 |
结束标记,“\0”字符 |
元数据类型DeviceType
记录版图中出现的器件类型信息。基本器件类型编号和名称的对应关系是:1:电阻;2:电容;3:MOS;4:二极管;5:三级管;6:自定义。器件的管脚从0开始升序编号,按照编号升序依次存储管脚名称。器件的属性从0开始升序编号,按照编号升序依次存储属性名称。
元数据类型LayerConnect
记录版图中与导体层连接的通孔层号。如无连接的通孔层,层号设为-1。
导体层层号 |
与该导体层连接的第一个通孔层号 |
与该导体层连接的第二个通孔层号 |
元数据类型Cell
记录版图中单元的相关信息。单元名称、单元边框大小、端口总数、Text总数、器件总数、线网总数和直接下层Instance总数直接存储在元类型Cell中。单元的端口信息保存在子元类型Port中。单元的所有端口从0开始升序编号,按照编号升序依次存储各端口元数据。单元的Text信息保存在子元类型Label中,单元的所有Text从0开始升序编号,按照编号升序依次存储各Text元数据。单元的直接下层Instance信息保存在子元类型Instance中,单元的所有直接下层Instance从0开始升序编号,按照编号升序依次存储各Instance元数据。单元直接包含的器件信息保存在子元类型Device中,单元直接包含的器件从0开始升序编号,按照编号升序依次存储各器件元数据。单元直接包含的线网信息保存在子元类型Net中。单元直接包含的线网从0开始升序编号,按照编号升序依次存储各线网元数据。
元数据类型Coordinate
记录X和Y坐标,单位在Lib元类型定义。
元数据类型Port
记录版图单元的端口信息。包括端口的名称、单元内与端口相连的线网号、端口的输入输出类型,端口的标记信息。端口标记的层号与端口几何形体的层号相同,端口标记的坐标取端口几何形体最左下角顶点的坐标。坐标值记录在元子类型Coordinate中。
端口的名称 |
相连的线网号 |
标志位,表示Port的输入/输出类型 |
端口的标记总数 |
第一个标记所在的层号 |
第一个标记的几何坐标 |
其他标记所在的层号和几何坐标 |
元数据类型Label
记录版图Text的信息。
LabelTEXT名称 |
Attach的线网号 |
Label所在的层号 |
Label的坐标 |
元数据类型Device
记录器件的相关信息。根据器件类型号可在DeviceType元类型数据中得到该器件的所有管脚名称和属性名称。器件的属性信息保存在子元类型String中。器件的属性从0开始升序编号,按照编号升序依次存储各属性元数据。器件的管脚信息保存在子元类型Pin中。器件管脚从0开始升序编号,按照编号升序依次存储各管脚元数据。
元数据类型Pin
记录器件管脚的信息。记录的信息包括管脚相连的线网号、管脚所在的层号和管脚的几何坐标。管脚的几何坐标存储在子元类型Coordinate中。
元数据类型Instance
记录单元的Instance信息。记录的信息包括Instance的左下角顶点在父亲单元内的相对坐标、Instance的反射和旋转角度和Instance的管脚信息。Instance的管脚信息保存在子元类型Pin中。Instance的管脚从0开始升序编号,按照编号升序依次存储各管脚元数据。
元数据类型Net
记录了线网由哪些导体层组成,各导体层上该线网的所有多边形的几何信息。各导体层上该线网的多边形几何信息并不直接存储在Net元类型的数据中,而是存储在Polygon元类型的一组连续的元数据中。在Net元类型中仅存储该组多边形元数据在数据库空间的首地址,线网多边形数据按层号分别存储在连续的数据库空间中。
元数据类型Polygon
记录多边形的顶点总数和坐标。如果多边形为长方形,则顶点总数为“-4”,非长方形多边形的顶点总数为大于零的整数。如果多边形是长方形,仅记录长方形左下角和右上角的顶点坐标。如果多边形不是长方形,首先记录多边形左下角的顶点坐标,多边形其他顶点的坐标以压缩的方式记录在子元类型CompactPoints中。
多边形的顶点总数 |
Polygon的左下角的顶点坐标 |
长方形的右上角顶点坐标或非长方形多边形的第一组压缩顶点坐标 |
多边形的其他组压缩顶点坐标 |
多边形的最后一组压缩顶点坐标 |
元数据类型CompactPoints
ZPD格式数据库中多边形的各顶点按照逆时针方向从0开始编号,根据编号升序存储。在元数据类型CompactPoints中沿逆时针方向依次记录0到3个相邻顶点的坐标之间差值。
2bytebit array |
压缩存储顶点组的标志位flag,记录本组的顶点总数,各顶点坐标差值的长度 |
由标志位决定的数据长度 |
依次存储各顶点坐标与上个相邻顶点坐标的差值 |
压缩存储顶点组的标志位flag定义如下:
元数据类型BegSeg
记录该段文件在数据库地址空间的首地址,段文件编号和段文件总数。
元数据类型EndSeg
记录该段文件的段尾标记。
ZPD格式数据库中每个段文件的起始位置都记录一个BegSeg元类型的元数据。BegSeg元类型记录该段文件在数据库地址空间的首地址,段文件编号和段文件总数。在元类型BegSeg的元数据后记录其他各种描述版图信息的元数据。在段文件的段尾记录一个EndSeg元类型的元数据,标记段的结束。每个段文件的最大尺寸相同,为Unix类文件系统设定的上限。段文件的命名规则为“段文件编号.dat”。段文件编号的规则:从0开始编号,依次加1。
ZPD格式数据库中的全部段文件一起构成了数据库能够存取的整个外存区域。ZPD格式数据库在可以存取的整个外存区域定义了一个逻辑上连续的数据库地址空间。元数据的段文件作为数据库地址空间的一个段,段文件内的元数据在数据库空间的地址以“段首地址+段内偏移量”的形式来描述。每个段文件的段内寻址空间大小为:
文件大小上限-BegSeg的长度-EndSeg的长度
段编号和段首地址的关系为:段首地址=段编号×段文件的寻址空间
版图器件提取程序和线网连接提取程序负责创建ZPD格式版图数据库。版图器件提取程序和线网连接提取程序存储元数据的规则如下:在逻辑上连续的外存空间中,首先存储Lib元类型的数据,然后按器件类型编号升序依次存储DeviceType元类型的数据,接着按导体层号升序依次存储LayerConnect元类型的所有数据,然后按单元编号升序依次存储Cell元类型的所有数据,最后记录所有Polygon元类型的数据。Polygon元类型数据的存储方式规则如下:同一个单元的多边形数据连续存储,不同单元的多边形数据按照单元编号升序依次存储;一个单元内同一层的多边形数据连续存储,不同层的多边形数据按照层号升序依次存储;一层内同一个线网的多边形数据连续存储,不同线网的多边形数据按照线网号升序依次存储。ZPD格式版图数据库中没有存储元类型数据的空间全部置0。如果需要存储的数据量超过一个段文件的地址范围,将元数据的数据库地址拆分为对应的段首地址和段内偏移,根据段首地址算出段编号,依次在段编号对应的段文件中存储元数据。
寄生参数提取工具读取ZPD格式版图数据库的规则如下:从第一个段文件开始,读入Lib元类型的数据到内存,然后读入DeviceType元类型和LayerConnect元类型的数据到内存,接着读入Cell元类型中除去Instance子元类型,Device子元类型和Net子元类型以外的数据。此时单元内各线网的多边形数据的首地址已驻留内存。如果内存还有空闲,可以将Instance子元类型,Device子元类型和Net子元类型的数据驻留内存以提高工具的运行效率。由内存中驻留的线网多边形首地址可根据需要从地址对应的段文件中读出任一线网的多边形数据或各导体层上全部多边形的数据。
综合以上所述,ZPD格式数据库建立快速的多边形数据索引以集总线网分散在各层的形体;定义保存线网连接关系和器件信息的元数据类型以减少不必要的数据重组;压缩版图坐标数据的存储空间、在连续空间存储相关元数据和去除冗余信息以提高读入数据的速度,克服了普通版图数据库在寄生参数提取方面的缺点,最大限度的提高了寄生参数提取工具查找,读入和组织输入数据的能力。
具体实施方式
本发明的具体实施方式如下:
ZPD格式数据库基于Unix类文件系统,由多个被称为段文件的二进制文件组成。段文件中存储着版图数据库的16种元类型的数据。寄生参数提取工具专用版图数据库格式中元数据类型的格式如下:
元数据类型Lib
记录和库相关的全局信息,包括库格式的版本号,库的名称,库中1单位长度对应的实际长度,单位为米。
2byte unsigned integer |
专用版图数据库格式ZPD版本号 |
String元类型 |
库名称 |
元数据类型String
记录一组字符组成的字符串。
1 byte char |
字符串的第一个字符 |
... |
字符串的其他字符 |
1 byte char |
字符串的最后一个字符 |
1 byte char |
结束标记,“\0”字符 |
元数据类型DeviceType
记录版图中出现的器件类型信息。基本器件类型编号和名称的对应关系是:1:电阻;2:电容;3:MOS;4:二极管;5:三级管;6:自定义。器件的管脚从0开始升序编号,按照编号升序依次存储管脚名称。器件的属性从0开始升序编号,按照编号升序依次存储属性名称。
元数据类型LayerConnect
记录版图中与导体层连接的通孔层号。如无连接的通孔层,层号设为-1。LayerConnect元类型的长度为6个字节。元数据类型LayerConnect使得寄生参数提取工具可以快速找到线网上和通孔接触的端口。
2 byte unsigned integer |
导体层层号 |
2 byte signed integer |
与该导体层连接的第一个通孔层号 |
2 byte signed integer |
与该导体层连接的第二个通孔层号 |
元数据类型Cell
记录版图中单元的相关信息。单元名称、单元边框大小、端口总数、Text总数、器件总数、线网总数和直接下层Instance总数直接存储在元类型Cell中。单元的端口信息保存在子元类型Port中。单元的所有端口从0开始升序编号,按照编号升序依次存储各端口元数据。单元的Text信息保存在子元类型Label中,单元的所有Text从0开始升序编号,按照编号升序依次存储各Text元数据。单元的直接下层Instance信息保存在子元类型Instance中,单元的所有直接下层Instance从0开始升序编号,按照编号升序依次存储各Instance元数据。单元直接包含的器件信息保存在子元类型Device中,单元直接包含的器件从0开始升序编号,按照编号升序依次存储各器件元数据。单元直接包含的线网信息保存在子元类型Net中。单元直接包含的线网从0开始升序编号,按照编号升序依次存储各线网元数据。
元数据类型Coordinate
记录X和Y坐标,单位在Lib元类型定义。
4byte signed integer |
X坐标 |
4byte signed integer |
Y坐标 |
元数据类型Port
记录版图单元的端口信息。包括端口的名称、单元内与端口相连的线网号、端口的输入输出类型,端口的标记信息。端口标记的层号与端口几何形体的层号相同,端口标记的坐标取端口几何形体最左下角顶点的坐标。坐标值记录在元子类型Coordinate中。
元数据类型Label
记录版图Text的信息。
String元类型 |
Label TEXT名称 |
4byte unsigned integer |
Attach的线网号 |
2byte unsigned integer |
Label所在的层号 |
Coordinate元类型 |
Label的坐标 |
元数据类型Device
记录器件的相关信息。根据器件类型号可在DeviceType元类型数据中得到该器件的所有管脚名称和属性名称。器件的属性信息保存在子元类型String中。器件的属性从0开始升序编号,按照编号升序依次存储各属性元数据。器件的管脚信息保存在子元类型Pin中。器件管脚从0开始升序编号,按照编号升序依次存储各管脚元数据。在ZPD格式数据库中存储的器件属性信息可以被寄生参数提取工具重复利用,减少不必要的器件提取程序调用。
元数据类型Pin
记录器件管脚的信息。记录的信息包括管脚相连的线网号、管脚所在的层号和管脚的几何坐标。管脚的几何坐标存储在子元类型Coordinate中。ZPD格式数据库中保存的器件管脚坐标使得寄生电阻提取程序能直接找到线网的端口。
4byte unsigned integer |
相连的线网号 |
2byte unsigned integer |
Pin所在的层号 |
Coordinate元类型 |
Pin的几何坐标 |
元数据类型Instance
记录单元的Instance信息。记录的信息包括Instance的左下角顶点在父亲单元内的相对坐标、Instance的反射和旋转角度和Instance的管脚信息。Instance的管脚信息保存在子元类型Pin中。Instance的管脚从0开始升序编号,按照编号升序依次存储各管脚元数据。
元数据类型Net
记录了线网由哪些导体层组成,各导体层上该线网的所有多边形的几何信息。各导体层上该线网的多边形几何信息并不直接存储在Net元类型的数据中,而是存储在Polygon元类型的一组连续的元数据中。在Net元类型中仅存储该组多边形元数据在数据库空间的首地址,线网多边形数据按层号分别存储在连续的数据库空间中。元数据类型Net使得寄生参数提取工具可以快速索引到各线网的几何形体信息。
元数据类型Polygon
记录多边形的顶点总数和坐标。如果多边形为长方形,则顶点总数为“-4”,非长方形多边形的顶点总数为大于零的整数。如果多边形为长方形,仅记录长方形左下角和右上角的顶点坐标。如果多边形不是长方形,首先记录多边形左下角的顶点坐标,多边形其他顶点的坐标以压缩的方式记录在子元类型CompactPoints中,节约了数据库的存储空间,提高了寄生参数提取工具读入坐标数据的速度。
4byte signed integer |
多边形的顶点总数 |
Coordinate元类型 |
Polygon的左下角的顶点坐标 |
Coordinate元类型长方形的右上角顶点坐标 |
或CompactPoints类型非长方形多边形的第一组压缩顶点坐标 |
... |
多边形的其他组压缩顶点坐标 |
CompactPoints类型 |
多边形的最后一组压缩顶点坐标 |
元数据类型CompactPoints
ZPD格式数据库中多边形的各顶点按照逆时针方向从0开始编号,根据编号升序存储。在元数据类型CompactPoints中沿逆时针方向依次记录0到3个相邻顶点的坐标之间差值。
2bytebit array |
压缩存储顶点组的标志位flag,记录本组的顶点总数,各顶点坐标差值的长度 |
由标志位决定的数据长度 |
依次存储各顶点坐标与上个相邻顶点坐标的差值 |
压缩存储顶点组的标志位flag定义如下:
元数据类型BegSeg
记录该段文件在数据库地址空间的首地址,段文件编号和段文件总数。元数据类型BegSeg的长度为8个字节。
2byte unsigned integer |
固定值0xBEBE,作为本元数据类型的标记 |
2byte unsigned integer |
段文件号 |
2byte unsigned integer |
段文件总数 |
4byte unsigned integer |
段文件的首地址 |
元数据类型EndSeg
记录该段文件的段尾标记。元数据类型EndSeg的长度为2个字节。
2byte unsigned integer |
固定值0xEDED,作为段尾标记 |
ZPD格式数据库中每个段文件的起始位置都记录一个BegSeg元类型的元数据。BegSeg元类型记录该段文件在数据库地址空间的首地址,段文件编号和段文件总数。在元类型BegSeg的元数据后记录其他各种类型的元数据以描述版图的信息。在段文件的段尾记录一个EndSeg元类型的元数据,标记段的结束。每个段文件的最大尺寸相同,为Unix类文件系统设定的上限。段文件的命名规则为“段文件编号.dat”。段文件编号的规则:从0开始编号,依次加1。
ZPD格式数据库中的全部段文件一起构成了数据库能够存取的整个外存区域。ZPD格式数据库在可以存取的整个外存区域定义了一个逻辑上连续的数据库地址空间。ZPD格式数据库中存储的每个元数据都拥有一个绝对数据库地址。每个存放元数据的段文件作为数据库地址空间的一个段,段文件内的元数据的数据库空间的绝对地址以“段首地址+段内偏移量”的形式来描述。元数据的数据库地址被ZPD格式数据库用来索引数据库中的任一元数据。
以最大文件尺寸为2G的系统为例,每个段文件的段内寻址空间大小为:
文件大小上限-BegSeg的长度-EndSeg的长度=文件大小上限-10个字节
每个段文件所能存储的元数据的数据库地址范围为:
段号*段文件的寻址空间-(段号+1)*段文件的寻址空间
段编号和段首地址的关系为:段首地址=段编号×段文件的寻址空间
版图器件提取程序和线网连接提取程序负责创建ZPD格式版图数据库。版图器件提取程序和线网连接提取程序存储元数据的规则如下:在逻辑上连续的外存空间中,首先存储Lib元类型的数据,然后按器件类型编号升序依次存储DeviceType元类型的数据,接着按导体层号升序依次存储LayerConnect元类型的所有数据,然后按单元编号升序依次存储Cell元类型的所有数据,最后记录所有Polygon元类型的数据。Polygon元类型数据的存储方式规则如下:同一个单元的多边形数据连续存储,不同单元的多边形数据按照单元编号升序依次存储;一个单元内同一层的多边形数据连续存储,不同层的多边形数据按照层号升序依次存储;一层内同一个线网的多边形数据连续存储,不同线网的多边形数据按照线网号升序依次存储。在记录Cell元类型的数据时,线网的多边形数据还没有写入数据库,线网多边形的起始地址还没有确定,暂时不记录地址域的内容。当依据单元号,层号,线网号依次记录多边形数据时,将各线网的多边形起始地址回填到Cell元类型的数据中。ZPD格式版图数据库中没有存储元类型数据的空间全部置0。如果需要存储的数据量超过一个段文件的地址范围,将元数据的数据库地址拆分为对应的段首地址和段内偏移,根据段首地址算出段编号,依次在段编号对应的段文件中存储元数据。
寄生参数提取工具读取ZPD格式版图数据库的规则如下:从第一个段文件开始,读入Lib元类型的数据到内存,然后读入DeviceType元类型和LayerConnect元类型的数据到内存,接着读入Cell元类型中除去Instance子元类型,Device子元类型和Net子元类型以外的数据。此时单元内各线网的多边形数据的首地址已驻留在内存中。如果内存还有空闲,可以将Instance子元类型,Device子元类型和Net子元类型的数据驻留内存以提高工具的运行效率。寄生参数提取过程中,可以根据内存中的线网多边形首地址读出各线网的多边形数据。按照ZPD格式数据库存储元数据的规则,单元在第n层的0号线网多边形地址和在第n+1层的0号线网多边形地址之间的区域存储了第n层的所有线网的多边形数据。寄生参数提取工具可以根据内存中0号线网多边形的首地址读出各导体层上全部多边形的数据。