当前位置:文档之家› 光刻版图oasis格式简介

光刻版图oasis格式简介

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类型说明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表示向东(在正交坐标系中表示x正方向,01表示向北,10表示向西,11表示向南)。

第三个框中的0表示这是这个unsigned-integer数据的最后一个byte。

这个数据的长度是二进制的010,1010, 001, 10(去掉框内的数值,然后前后byte调转位置),这就是十进制的1350。

因此这个数值就是表示向东(就是从当前位置,向x轴正方向)画长度1350的一条线。

3.4.3 3- delta3-delta是一种unsigned-integer的数据结构,其中unsigned-integer中的最低3bits(在oasis文件中最先出现的byte中的最低3bits)用来表示方向了,其他部分表示数值的大小,数值的大小就用来表示x轴和y轴的偏移长度。

我们举个例子。

比如二进制的1100,1101, 0000, 0001。

其中第一个方框中的1和unsinged-integer的含义一样,表示后面还有byte表示同一个unsigned-integer数据。

第二个方框中的101这里就表示方向,101表示西北方向(在正交坐标系中表示135度角的一条线,000表示向东,001向北,010表示向西,011表示向南,100表示东北方向,110表示西南方向,111表示东南方向)。

第三个框中的0表示这是这个unsigned-integer数据的最后一个byte。

这个数据的长度是二进制的000,0001, 100, 1(去掉框内的数值,然后前后byte调转位置),这就是十进制的25。

因此这个数值就是表示向西北方向(就是从当前位置,向135度角方向)画长度为sqrt(25*25+25*25)的一条线(x轴偏移25,y轴偏移25)。

3.4.4 g- deltag-delta有两种形式,一种是用一个单一的unsigned-integer的数据来表示;第二种是用一对unsigned-integer的数据来表示。

如果g-delta数据在文件中第一个出现的字节的最低位(bit0)是0,表示第一种类型的g-delta数据;如果是1,表示第二种类型的g-delta数据。

3.4.4.1 g- delta 第一种类型如果是第一种类型,只用一个unsigned-integer类型表示g-delta的类型。

unsigned-integer的在文件中出现的第一个字节的倒数第2到第4个bit(bit1到bit3)一共3个bits用来表示方向,同3-delta的形式。

举个例子,二进制的1110,1100,0000,0101。

其中第二个方框中的0表示这是第一种类型的g-delta格式,第一个方框中的1和unsinged-integer的含义一样,表示后面还有byte表示同一个unsigned-integer数据。

划下划线的110这里就表示方向,110表示西南方向(在正交坐标系中表示135度角的一条线,000表示向东,001向北,010表示向西,011表示向南,100表示东北方向,101表示西北方向,110表示西南方向,111表示东南方向)。

第三个框中的0表示这是这个unsigned-integer数据的最后一个byte。

这个数据的长度是二进制的000,0101, 110(去掉打框的和加下划线的数值,然后前后byte调转位置),就是十进制的46。

整个数据的含义就是沿西南方向画一条长度为sqrt(46×46+46×46)的线(也是就是将x轴坐标减少46,y坐标减少46,将这个点作为顶点,和原来坐标点相连画一条直线)。

3.4.4.2 g- delta 第二种类型如果是第二种类型,则用两个unsigned-integer的数据来表示。

第一个unsigned-integer在文件中的第一个byte的最低bit(bit0)必须为1,第一个byte的倒数第二个bit(bit1)表示x轴的方向,其它bit表示长度。

第二个unsigned-integer在文件中的第一个byte的最低bit(bit0)表示y轴的方向,其它bit表示长度。

因此,它能够表示任何方向的线段。

只有这种数据能够表示任何方向任何角度的线段,其它delta的类型都只能表示45度或者90度方向的线段。

举个例子,二进制的1011,1011,0000,0001,1011,0111,0000,1111。

其中第二个方框中的1表示这是第二种类型的g-delta格式,第一个方框中的1和unsinged-integer的含义一样,表示后面还有byte表示同一个unsigned-integer数据。

划下划线的1这里就表示方向,1表示向西(x轴负方向,0表示向东)。

第三个框中的0表示这是第一个unsigned-integer数据的最后一个byte。

这个数据的长度是二进制的000,0001, 011,10(去掉打框的和加下划线的数值,然后前后byte调转位置),就是十进制的46。

整个数据的含义就是x轴沿负方向减少长度46,取一条和y轴平行的直线。

后面y轴也取一条和x轴平行直线,两者相交得到一个点。

整个delta就是从当前位置到这个点画一条直线。

第四个方框中的1和unsinged-integer的含义一样,表示后面还有byte表示同一个unsigned-integer数据。

相关主题