资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
Chapter 1 oasis 文件简介oasis 是用来表示光刻版图的一种文件格式,上面记录了光刻图案。作为gdsii 文件的替代格式,和 gdsii 类似是一种流格式的文件。一般性的介绍可以google 到。这里就不再累述。这篇文档,是对参考文献【1】的注释和部分翻译。第一为了方便阅读,对文献【1】中的一些概念和例子进行了解读说明;第二对文献【1】中容易忽略和混淆的地方进行了强调,对没有明确的但可以从其他地方推断出来的一些内容进行了明确。Chapter 2 oasis 文件格式是一种二进制流的文件格式。它采用变形的 BNF 语法来描述文件格式,BNF 语法见参考文献【1 】中 36.1 节,oasis 文件格式的描述见参考文献【1】中 36.2 节。这里不对那些内容进行重复叙述,只对文件进行部分说明强调。1. 按照标准是%SEMI-OASIS,但是各个厂商可能会有不同,可能厂商会加上自己的 log。程序中出现了 BROA作为 oasis 文件格式的开头字段。2. 特别注意 、 和 字段中的大括号中的域是不能重复出现的,而 和中的大括号中的字段是可以重复出现的。在解析的时候要特别注意这点。3. 注意到 中,除了自己的关键字 START、CBLOCK、PAD 和PROPERTY 以外,还有两个内嵌的结构,就是 和。其中中,第一个出现的字段是 CELL,每一个中 CELL 会且仅会出现一次。因此可以把 CELL 作为第二层解析的入口。而中,由于这些关键字跟其他部分都不重复,而且在一个中仅都只能出现一次,所以可以直接放在第一层解析。具体可以参见第五章。Chapter 3 oasis 数据类型不同于普通的计算机编程语言的数据格式,oasis 作为一种流格式文件,有自己的数据类型表示方法。这些在参考文献【1】中的第七章进行了说明。这里对其中内容进行部分说明,以便方便查阅。一共有下面几种类型的数据格式:Table 1 oasis 数据格式类型 长度 其他说明bytes 8bit 最低位 bit 放在最右边integers unsigned-integer不定,N 个 byte,8 个 bits 中只有 7bits表示实际数据,每个 byte 最高一个 bit表示后面是否还有数据。0 表示自己是最后一个 byte。最低位 byte 放在 oasis文件的最前面signed-integer不定,N 个 byte,8 个 bits 中只有 7bits表示实际数据,每个 byte 最高一个 bit表示后面是否还有数据。0 表示自己是最后一个 byte。符号位放在最低位byte(文件中最先出现的 byte)的最后一位(bit):0 表示正,1 表示负。最低位 byte 放在 oasis文件的最前面real 不定。有 8 种表示方式。由一个unsigned-integer 的数据来表示采用何种表达方式。表示数据表达方式的unsigned-integer 数据出现在文件的最前面。接着它后面才是实际要表达的数值。string 由一个 unsigned-integer 的数据来表示string 的长度unsigned-integer 数据出现在文件最前面。string 可以分成 b-string, a-string 和 n-string 三类deltas delta 是用来表示方向和长度的一种数据类型。分成 4 类。各类长度不一样。在 oasis 文件中,这种数据的第一个出现的字节的最后几个 bit是表示方向。后面具体描述。repetitions 用来表示重复出现的各个图形的位置的一种数据类型。也分成多类,各类长度不一。在后面具体说明point lists 利用这个数据结构就可以画出图形。但这个数据结构本身不包括画图的起始位置信息。而在其他地方确定。是一串delta 信息,用来表示各条边的长度和方向。图形的顶点越多,长度越长。在后面具体说明。property value 由一个 unsigned-integer 表示类型,加上后面的 property value 值构成。各种类型的属性,value 值不一样,但都比较简单。可以参看参考文献的 7.8 节table9。3.1 integers 类型说明3.1.1 unsigned-integerunsigned-integer 的长度不确定,是由自己的值来确定的,如果数据长度有N 个 byte,每个 byte 的 8 个 bits 中只有 7bits 表示实际数据,最高一个 bit 表示后面是否还有数据。0 表示自己是最后一个 byte。最低位 byte 放在 oasis 文件的最前面。举个例子就清楚了。十进制的 16383:正常的 2 进制表示是:11,1111,1111,1111,一共 14 个 1。在 oasis 文件中,由于只有 7 位能代表实际的数,所以我们把它写成x111,1111,y111,1111。还是 14 个 1。但中间插入了一个 x 和 y 用来表示是否后面还有数据。由于低字节优先,所以我们写成 y111,1111,x111,1111。然后将 y变成 1,x 变成 0。所以最后在 oasis 文件中的表示是1111,1111,0111,1111。十进制的 16384:正常的 2 进制表示是:100,0000,0000,0000,1 后面一共 14 个 0。在 oasis 文件中,由于只有 7 位能代表实际的数,所以我们把它写成x000,0001,y000,0000,z000,0000。1 后面还是 14 个 0。但中间插入了一个 x、y和 z 用来表示是否后面还有数据。由于低字节优先,所以我们写成z000,0000,y000,0000, x000,0001。然后将 z 变成 1, y 变成 1,x 变成 1,。所以最后在 oasis 文件中的表示是 1000,0000,1000,0000, 0000,0001。3.1.2 signed-integer知道了 unsigned-integer 以后,再变 signed-integer 就简单了。还是举两个例子。十进制的 8191,正常的 2 进制表示是: 1,1111,1111,1111,一共 13 个 1。在 oasis 文件中,由于第一个 byte 只有 6 位能代表实际的数,后面的 byte有 7 位能代表实际的数。所以我们把它写成 x111,1111,y111,111z。还是 13 个1。但中间插入了一个 x 和 y 用来表示是否后面还有数据,插入了一个 z 作为符号位。由于低字节优先,所以我们写成 y111,111z,x111,1111。然后将 y 变成1,x 变成 0。由于是正数,所以 z 为 0。所以最后在 oasis 文件中的表示是1111,1110,0111,1111。十进制的-8192,先表示十进制的 8192,正常的 2 进制表示是: 10,0000,0000,0000,1 后面一共 13 个 0。在 oasis 文件中,由于第一个 byte 只有 6 位能代表实际的数,后面的 byte有 7 位能代表实际的数。所以我们把它写成 m000,0001,x000,0000,y000,000z。1后面还是 13 个 0。但中间插入了一个 x 和 y 用来表示是否后面还有数据,插入了一个 z 作为符号位,前面补了一个 m。由于低字节优先,所以我们写成y000,000z,x000,0000,m000,0001。然后将 y 变成 1,x 变成 1,m 变成 0。由于是负数,所以 z 为 1。所以最后在 oasis 文件中的表示是1000,0001,1000,0000,0000,0001。3.2 real 类型说明real 的数据类型是一个复合的数据类型,它由一个 unsigned-integer 的类型做为开头,后面加上若干个 unsigned-integer 或者 1 个 ieee4 float 或者 1 个 ieee8 float 的数据类型来组成。目前,它只定义了 8 种类型格式,从 0 到 7。Table 2 real 数据类型说明类型格式 含义0+unsigned-integer 是一个正的实数,实数的值就等于后面 unsigned-integer1+unsigned-integer 是一个负的实数,实数的绝对值就等于后面unsigned-integer2+unsigned-integer 是一个正的实数,实数的值就等于后面 unsigned-integer 的倒数。3+unsigned-integer 是一个负的实数,实数的绝对值就等于后面unsigned-integer 的倒数。4+unsigned-integer1+ unsigned-integer2是一个正的实数,实数的值就等于(unsigned-integer1/ unsigned-integer2)。(做除数)5+unsigned-integer1+ unsigned-integer2是一个负的实数,实数的绝对值等于(unsigned-integer1/ unsigned-integer2)。(做除数)6+IEEE-4-byte-float 表示后面是 IEEE-4-byte-float 的数据格式7+IEEE-8-byte-float 表示后面是 IEEE-8-byte-float 的数据格式在参考文献【1】中的第 7.3.2 节的 table 4 中,各个数值的计算就可以根据上表中的说明计算出来。3.3 string 类型说明string 数据类型是一个复合的数据类型,它由一个表示字符串长度的unsigned-integer 类型数据做为开头,后面加上真正的字符串。字符串可以分成三种:b-string(binary string), a-string(ascii string)和 n-string (name string).3.4 delta 类型说明delta 是代表几何数据。简单来说就是 delta 类型的数据中存放有长度和方向的信息。其中分成 4 种:1-delta, 2-delta, 3-delta 和 g-delta。分别进行说明3.4.1 1- delta1-delta 是一种 signed-integer 的数据结构,其中 signed-integer 中的符号位就用来表示方向了;singed-integer 中的表示数值的部分就用来表示长度。我们举个例子。比如二进制的 1111,1001, 0010, 0011。其中第一个方框中的1 和 singed-integer 的含义一样,表示后面还有数据。第二个方框中的 1 在signed-integer 中表示正负符号,这里就表示方向,1 表示向西或者向南(在正交坐标系中表示 x 和 y 轴的负方向,具体是 x 轴还是 y 轴由这个值出现的当前的场景来确定)。第三个框中的 0 表示这是这个 signed-integer 数据的最后一个byte。这个数据的长度是二进制的 010,0011, 111, 100(去掉框内的数值,然后前后 byte 调转位置),这就是十进制的 2300。因此这个数值就是表示向西(或者向南)画 2300 长度的一条线。3.4.2 2- delta2-delta 是一种 unsigned-integer 的数据结构,其中 unsigned-integer 中的最低2bits(在 oasis 文件中最先出现的 byte 中的最低 2bits)用来表示方向了,其他部分表示数值的大小,数值的大小就用来表示长度。我们举个例子。比如二进制的 1001,1000, 0010, 1010。其中第一个方框中的1 和 unsinged-integer 的含义一样,表示后面还有 byte 表示同一个 unsigned-integer 数据。第二个方框中的 00 这里就表示方向, 00
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号