日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OASIS协议标准文档的解读_第一部分

發(fā)布時間:2024/1/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OASIS协议标准文档的解读_第一部分 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

譯者注: 利用2022年圣誕假期,終于解讀完OASIS標(biāo)準(zhǔn)協(xié)議的文檔。本翻譯文檔基于SEMI 草案標(biāo)準(zhǔn) 3626? (2003/04/23).? 因為SEMI的原版標(biāo)準(zhǔn)草案涉及到版權(quán)的一些問題,并不是公開的。因此我并不是原文原樣翻譯,會加入很多我自己的理解和注釋。 所以本文僅作興趣研究,對其中的錯誤概不負(fù)責(zé)。希望能為支持國內(nèi)半導(dǎo)體產(chǎn)業(yè)做點微薄貢獻(xiàn)。為避免版權(quán)的一些問題,本文僅限非盈利場合交流使用,不限制轉(zhuǎn)載,但請注明原文來自CSDN的內(nèi)核中的洋蔥。

1. ?Purpose

1.1 本協(xié)議規(guī)范的目的是為了制定分層集成電路掩膜圖形信息的交互和封裝格式。

1.2 標(biāo)準(zhǔn)背景 – 略過。簡單一句話就是克服GDSII協(xié)議標(biāo)準(zhǔn)的缺點,適應(yīng)更大規(guī)模的集成電路設(shè)計制造。

2. Scope

2.1. 本規(guī)范制定的格式,最重要的目的就是用來封裝分層集成電路掩膜圖形 ,以便在各個EDA工具,掩膜制作,掩膜檢查和修復(fù)工具之間交互。

2.2. 規(guī)范制定的格式,要求是硬件和軟件之間相互獨立,互不依賴。

3. Limitations

3.1 如果oasis文件使用了一些協(xié)議中規(guī)定的擴展記錄(extension records), 比如XNAME, XELEMENT和XGEOMETRY, 可能會影響在不同工具之間的通用性。有些工具可能不支持這些擴展字段。因此推薦這些擴展字段只用在內(nèi)部的原型設(shè)計中,如果需要對外交互,應(yīng)該使用本規(guī)范正式包含的擴展字段。(備注:哪些是正式包含的擴展字段?)

4. Referenced Standards

4.1 IEEE Standards1

IEEE 754-1985 - IEEE Standard for Binary Floating-Point Arithmetic

4.2 ISO Standards2

ISO-646-IRV - “US-ASCII” Character Set ISO-3309 - Information technology—Telecommunications and information exchange between systems—High-level data link control (HDLC) procedures—Frame structure

4.3 IETF Standards3

RFC 1951 - DEFLATE Compressed Data Format Specification? version 1.3

5. Terminology

?(譯者:個人覺得術(shù)語這一部分還是不翻譯的為好。所以這章大部分是原文copy過來了。)

5.1 簡寫詞和首字母縮略詞

5.1.1 BNF—Backus-Naur Form?

5.1.2 EDA—Electronic Design Automation

5.1.3 1OASISTM—Open Artwork System Interchange Standard

5.2 術(shù)語定義

5.2.1 OASIS規(guī)范中大部分的術(shù)語定義都可以在上下文相關(guān)的段落中找到

5.2.2 Cell—a named object in a layout hierarchy, containing native geometric information, annotation information, and/or placements of other cells.? ?一個基本的信息單元。可以是幾何圖形,也可以是注解信息,或者其它單元的位置放置信息,

5.2.3 Placement—a specification by reference that a copy of a cell is to be placed within the coordinate space of another cell at a particular location, orientation, and scale. Cell placement is the fundamental mechanism which makes hierarchy within the OASIS file possible.? 信息單元的位置放置信息。包括了坐標(biāo),方向,縮放等信息。

5.2.4 Geometry—a two-dimensional geometric figure such as a polygon, rectangle, trapezoid, path, circle, etc. with inherent attributes of layer and datatype. ?幾何信息,包括多邊形,長方形,正方形,路徑,圓等圖形的幾何坐標(biāo)信息。

5.2.5 Property—an annotation element consisting of a name plus an optional list of values, supplying descriptive information about the characteristics of the file or one of its components. 屬性信息。比如名字,注釋,描述等信息。

5.2.6 Record—the principal data division in an OASIS file. 記錄塊,OASIS文件中的一個基本的數(shù)據(jù)塊。

5.2.7 Text Element—an annotation element consisting of an (x,y) coordinate point and an associated string. 文本信息。包括注釋信息以及放置的坐標(biāo)位置。

5.3 Symbols

5.3.1 “->” — 用來標(biāo)明一個參數(shù)名稱和它的內(nèi)容。

6. OASIS BASICS

6.1 OASIS文件時流格式的文件格式。分成一個個數(shù)據(jù)塊(record). 每個數(shù)據(jù)塊的長度是可以通過解析它的結(jié)構(gòu)來獲取的,但這個長度不是明確的。就是需要解析它才能獲取這個數(shù)據(jù)塊的長度。(相反的gds2的文件格式,每個數(shù)據(jù)塊的長度是明確的。)

6.2 OASIS文件是用BNF語法定義的。下面是它的定義語法。(BNF語法請自行g(shù)oogle學(xué)習(xí).)

<oasis-file> -> <magic-bytes> START { CBLOCK | PAD | PROPERTY | <cell> | <name> }* END

<name> -> { CELLNAME | TEXTSTRING | LAYERNAME | PROPNAME | PROPSTRING | XNAME }

<cell> -> { CELL { CBLOCK | PAD | PROPERTY | XYRELATIVE | XYABSOLUTE | <element> }* }

<element> -> { <geometry> | PLACEMENT | TEXT | XELEMENT }

<geometry> -> { RECTANGLE | POLYGON | PATH | TRAPEZOID | CTRAPEZOID | CIRCLE | XGEOMETRY }

6.3 一個OASIS文件可以表示一個完整的分層線路(layout)圖,或者部分線路圖,或者多個分層線路圖。

這些表示(是一個完整的hierachy layout,還是部分,或者是多個)并不是固定的,它取決于應(yīng)用程序如何管理解讀這些文件。每個OASIS文件必須是語法完整的。它必須用<magic-bytes> 字段開始,并且至少包含一個START END 記錄塊。.

6.4? <magic-bytes> 元素是一個13個 ASCII 字符的字節(jié)流,協(xié)議規(guī)定是: “%SEMI-OASIS<CR><NL>”, 這里的<CR><NL>表示 ASCII 字符里的 0D 0A. ?<magic-bytes>提供了一個可識別的簽名, unix 文件可以根據(jù)這個元素用來識別文件類型。 里面的換行符則可以保證FTP程序是按照binary的模式來操作這個文件, 如果是按照non-binary模式來操作這個文件,程序遇到這個換行符則會corruption. (譯者注:在這個字段,各個廠商可能會有不同,可能廠商會加上自己的log。 )

6.5 異常處理: OASIS 處理程序遇到任何無法解釋的語法錯誤,都應(yīng)該當(dāng)作一個致命錯誤而應(yīng)當(dāng)退出。OASIS處理程序并不需要預(yù)先對整個文件進(jìn)行檢查以保證整個文件有效。如果OASIS處理程序能夠并且只需要讀取部分文件信息,那么只要它能正確解析自己讀取的那部分信息就可以,并不需要對整個文件進(jìn)行檢查。

7. DATA CONSTRUCTS

不同于普通的計算機編程語言的數(shù)據(jù)格式,oasis作為一種流格式文件,有自己的數(shù)據(jù)類型表示方法。這里對其中內(nèi)容進(jìn)行部分說明,以便方便查閱。一共有下面幾種類型的數(shù)據(jù)格式:

Table 1? oasis數(shù)據(jù)格式

類型

長度

其他說明

bytes

8bit

最低位bit放在最右邊

integers

unsigned-integer

不定,N個byte,8個bits中只有7bits表示實際數(shù)據(jù),每個byte最高一個bit表示后面是否還有數(shù)據(jù)。0表示自己是最后一個byte。

最低位byte放在oasis文件的最前面

signed-integer

不定,N個byte,8個bits中只有7bits表示實際數(shù)據(jù),每個byte最高一個bit表示后面是否還有數(shù)據(jù)。0表示自己是最后一個byte。符號位放在最低位byte(文件中最先出現(xiàn)的byte)的最后一位(bit):0表示正,1表示負(fù)。

最低位byte放在oasis文件的最前面

real

不定。有8種表示方式。由一個unsigned-integer的數(shù)據(jù)來表示采用何種表達(dá)方式。

表示數(shù)據(jù)表達(dá)方式的unsigned-integer數(shù)據(jù)出現(xiàn)在文件的最前面。接著它后面才是實際要表達(dá)的數(shù)值。

string

由一個unsigned-integer的數(shù)據(jù)來表示string的長度

unsigned-integer數(shù)據(jù)出現(xiàn)在文件最前面。string可以分成b-string, a-string和n-string三類

deltas

delta是用來表示方向和長度的一種數(shù)據(jù)類型。分成4類。各類長度不一樣。

在oasis文件中,這種數(shù)據(jù)的第一個出現(xiàn)的字節(jié)的最后幾個bit是表示方向。后面具體描述。

repetitions

用來表示重復(fù)出現(xiàn)的各個圖形的位置的一種數(shù)據(jù)類型。也分成多類,各類長度不一。

在后面具體說明

point lists

利用這個數(shù)據(jù)結(jié)構(gòu)就可以畫出圖形。但這個數(shù)據(jù)結(jié)構(gòu)本身不包括畫圖的起始位置信息。而在其他地方確定。是一串delta信息,用來表示各條邊的長度和方向。圖形的頂點越多,長度越長。

在后面具體說明。

property value

由一個unsigned-integer表示類型,加上后面的property value 值構(gòu)成。

各種類型的屬性,value值不一樣,但都比較簡單。可以參看參考文獻(xiàn)的7.8節(jié)table9。

7.1 BYTES

7.1.1 一個Byte是固定長度的8bit數(shù)據(jù)。最低位bit放在最右邊。( least significant bit (bit 0) on the

right.)

7.2 INTEGERS

OASIS文件中的整數(shù)是沒有長度限制的。是長度大于0字節(jié)的一個整數(shù)。

(譯者備注:雖然標(biāo)準(zhǔn)中沒有整數(shù)的長度限制,但具體程序?qū)崿F(xiàn)的時候應(yīng)該使用64bits的長度來表示整數(shù)。32bits明顯在EUV時代是不夠的,但高于64bits也沒必要。首先很多的運算庫不支持長于64bits的整數(shù),這個限制了我們可以使用的的計算精度;其次我們知道硅晶體的單個硅原子立方體長度大概是0.543nm, 如果使用64bits長度來表示坐標(biāo),如果按照硅晶體的原子長度,可以表示的長度大概是10000KM, 這個幾乎是地球的直徑了,所以64bits是足夠使用了; 最后如果高于64bits也帶了性能的影響。在實際計算中,基本都是用64bits的整數(shù)來表示整數(shù),永遠(yuǎn)不要使用沒法用64bits長整型來表示的整型數(shù)據(jù),雖然協(xié)議本身并沒有這樣的限制。)

7.2.1 An unsigned-integer

低byte放在文件前面,高byte放在文件后面。

每個byte最高一個bit表示后面是否還有數(shù)據(jù)。0表示自己是最后一個byte。不定,N個byte,8個bits中只有7bits表示實際數(shù)據(jù),每個byte最高一個bit表示后面是否還有數(shù)據(jù)。0表示自己是最后一個byte。剩下的7bits數(shù)據(jù)串在一起組成二進(jìn)制數(shù)表示實際的數(shù)據(jù)。

譯者注釋:
unsigned-integer的長度不確定,如果數(shù)據(jù)長度有N個byte,每個byte的8個bits中只有7bits表示實際數(shù)據(jù),最高一個bit表示后面是否還有數(shù)據(jù)。0表示自己是最后一個byte。最低位byte放在oasis文件的最前面。

舉個例子就清楚了。

十進(jìn)制的16383:

正常的2進(jìn)制表示是:11,1111,1111,1111,一共14個1。

在oasis文件中,由于只有7位能代表實際的數(shù),所以我們把它寫成x111,1111,y111,1111。還是14個1。但中間插入了一個x和y用來表示是否后面還有數(shù)據(jù)。由于低字節(jié)優(yōu)先,所以我們寫成y111,1111,x111,1111。然后將y變成1,x變成0。所以最后在oasis文件中的表示是1111,1111,0111,1111。

十進(jìn)制的16384:

正常的2進(jìn)制表示是:100,0000,0000,0000,1后面一共14個0。

在oasis文件中,由于只有7位能代表實際的數(shù),所以我們把它寫成x000,0001,y000,0000,z000,0000。1后面還是14個0。但中間插入了一個x、y和z用來表示是否后面還有數(shù)據(jù)。由于低字節(jié)優(yōu)先,所以我們寫成z000,0000,y000,0000, x000,0001。然后將z變成1,y變成1,x變成1,。所以最后在oasis文件中的表示是1000,0000,1000,0000, 0000,0001。

7.2.2 ?signed-integer

N(N>0)個byte,8個bits中只有7bits表示實際數(shù)據(jù),每個byte最高一個bit表示后面是否還有數(shù)據(jù)。0表示自己是最后一個byte。符號位放在最低位byte(文件中最先出現(xiàn)的byte)的最低一位(bit):0表示正,1表示負(fù)。+0和-0在處理的時候需要認(rèn)為是相等的。

譯者注釋:

知道了unsigned-integer以后,再變signed-integer就簡單了。還是舉兩個例子。

十進(jìn)制的8191,

正常的2進(jìn)制表示是: 1,1111,1111,1111,一共13個1。

在oasis文件中,由于第一個byte只有6位能代表實際的數(shù),后面的byte有7位能代表實際的數(shù)。所以我們把它寫成x111,1111,y111,111z。還是13個1。但中間插入了一個x和y用來表示是否后面還有數(shù)據(jù),插入了一個z作為符號位。由于低字節(jié)優(yōu)先,所以我們寫成y111,111z,x111,1111。然后將y變成1,x變成0。由于是正數(shù),所以z為0。所以最后在oasis文件中的表示是1111,1110,0111,1111。

十進(jìn)制的-8192,

先表示十進(jìn)制的8192,正常的2進(jìn)制表示是: 10,0000,0000,0000,1后面一共13個0。

在oasis文件中,由于第一個byte只有6位能代表實際的數(shù),后面的byte有7位能代表實際的數(shù)。所以我們把它寫成m000,0001,x000,0000,y000,000z。1后面還是13個0。但中間插入了一個x和y用來表示是否后面還有數(shù)據(jù),插入了一個z作為符號位,前面補了一個m。由于低字節(jié)優(yōu)先,所以我們寫成y000,000z,x000,0000,m000,0001。然后將y變成1,x變成1,m變成0。由于是負(fù)數(shù),所以z為1。所以最后在oasis文件中的表示是1000,0001,1000,0000,0000,0001。

7.2.3 異常處理

如果有些處理器只能支持有限長度的整數(shù),例如只能支持32bits, 如果遇到超過這個長度的整數(shù),應(yīng)該按fatal錯誤處理。也就是程序應(yīng)該退出。

7.3 REALS

7.3.1 實數(shù)可以存放在下面的其中一種或者多種的有理數(shù)格式里面, 或者用單精度(single-precision)4bytes的(IEEE-4)或者雙精度(double precision)的8bytes(IEEE-8)里面。(譯者注:協(xié)議中一共列出了8種表示方法,其中前面六種是有理數(shù)的表示方法,再加上IEEE-4和IEEE-8兩種。)

有理數(shù)的格式比浮點數(shù)的格式具有更高的壓縮率, 而且可以具有比浮點數(shù)更高的精度。采用哪種表示方法,是由一個無符號整型來表示,這個整型在表示具體數(shù)據(jù)的實數(shù)前面。

上表 table 7-3 翻譯成中文大概就是下表的含義。

Table 2? real數(shù)據(jù)類型說明

類型格式

含義

0+unsigned-integer

是一個正的整數(shù),整數(shù)的值就等于后面unsigned-integer

1+unsigned-integer

是一個負(fù)的整數(shù),整數(shù)的絕對值就等于后面unsigned-integer

2+unsigned-integer

是一個正的實數(shù),實數(shù)的值就等于后面unsigned-integer的倒數(shù)。

3+unsigned-integer

是一個負(fù)的實數(shù),實數(shù)的絕對值就等于后面unsigned-integer的倒數(shù)。

4+unsigned-integer1+ unsigned-integer2

是一個正的實數(shù),實數(shù)的值就等于(unsigned-integer1/ unsigned-integer2)。(做除數(shù))

5+unsigned-integer1+ unsigned-integer2

是一個負(fù)的實數(shù),實數(shù)的絕對值等于(unsigned-integer1/ unsigned-integer2)。(做除數(shù))

6+IEEE-4-byte-float

表示后面是IEEE-4-byte-float的數(shù)據(jù)格式

7+IEEE-8-byte-float

表示后面是IEEE-8-byte-float的數(shù)據(jù)格式

7.3.2 對于Type 0和1 , 這個實數(shù)實際是個整數(shù),它的小數(shù)部分是0。 對于type2和type3, 表示是一個倒數(shù)。對于type 4和5表示是一個分?jǐn)?shù)。 Type6和7表示是浮點數(shù),遵循IEEE 754-1985的協(xié)議標(biāo)準(zhǔn), 低端字節(jié)在前。

協(xié)議中給出了幾個例子。見下圖截圖。

7.3.3 異常處理: 對于類型2-5, 如果分母是0, 應(yīng)該當(dāng)作fatal error 處理。 如果類型不在0-7的范圍, 也應(yīng)該當(dāng)作fatal error處理。

譯者注: 從數(shù)學(xué)角度看,這里用分?jǐn)?shù)來表示有理數(shù),確實可以表示任何一個有理數(shù),而且由于OASIS的整數(shù)是不限制長度的,所以可以不損失精度的表示任何有理數(shù)。但從數(shù)值計算的角度考慮,計算機基本都是用浮點數(shù)表示,所以實際上最后還是轉(zhuǎn)化成double型的浮點數(shù)來計算。所以從實用的角度看,用type6和type7就夠了。

7.4 STRINGS

7.4.1 String 類型

string數(shù)據(jù)類型是一個復(fù)合的數(shù)據(jù)類型,它由一個表示字符串長度的unsigned-integer類型數(shù)據(jù)做為開頭,后面加上真正的字符串。用BNF語法表示就是:
string -> length byte*

字符串可以分成三種:b-string(binary string), a-string(ascii string)和 n-string (name string).

b-string后面可以接任何8bits的字符編碼。 a-string包括可打印的ascii字符(字符ascii的16進(jìn)制編碼范圍0x21-0x7E)和空字符(0x20)。 n-string只包含可打印字符(ascii編碼0x21-0x7E)并且長度大于0.

7.4.2 ascii編碼0x21 -0x7E包含的字符有以下這些

!"#$%&’()*+,-./0123456789:;<=>?@ [21-40]

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_‘ [41-60]

abcdefghijklmnopqrstuvwxyz{|}~ [61-7E]

這些是不包括空格和tab字符以及一些控制字符。

7..4.3 異常處理:如果在a-string和n-string中出現(xiàn)了非法的字符(譯者注:不在范圍之內(nèi)的字符), 應(yīng)該認(rèn)為是fatal error。 如果n-string長度是0也認(rèn)為是fatal error。

7.5 DELTAS

7.5.1 delta數(shù)據(jù)類型表示的是幾何數(shù)據(jù)。表示坐標(biāo),方向和偏移等信息。其中分成4種:1-delta, 2-delta, 3-delta和g-delta。分別進(jìn)行說明。

7.5.2? 1- delta

1-delta是一種signed-integer的數(shù)據(jù)結(jié)構(gòu),用來表示水平或者垂直方向的位置(displacement)。其中signed-integer中的符號位就用來表示方向了;singed-integer中的表示數(shù)值的部分就用來表示長度。最低一個byte的最低bit位: 0表示東或者北方向; 1表示西或者南方向。水平還是垂直對齊要根據(jù)具體場景來確定。

我們舉個例子。比如二進(jìn)制的1111,1001, 0010, 0011。其中第一個方框中的1和singed-integer的含義一樣,表示后面還有數(shù)據(jù)。第二個方框中的1在signed-integer中表示正負(fù)符號,這里就表示方向,1表示向西或者向南(在正交坐標(biāo)系中表示x和y軸的負(fù)方向,具體是x軸還是y軸由這個值出現(xiàn)的當(dāng)前的場景來確定)。第三個框中的0表示這是這個signed-integer數(shù)據(jù)的最后一個byte。這個數(shù)據(jù)的長度是二進(jìn)制的010,0011, 111, 100(去掉框內(nèi)的數(shù)值,然后前后byte調(diào)轉(zhuǎn)位置),這就是十進(jìn)制的2300。因此這個數(shù)值就是表示向西(或者向南)畫2300長度的一條線。

? 2- delta

2-delta是一種unsigned-integer的數(shù)據(jù)結(jié)構(gòu),跟1delta一樣,用來表示水平或者垂直方向的位置(displacement)。 其中unsigned-integer中的最低2bits(在oasis文件中最先出現(xiàn)的byte中的最低2bits)用來表示方向了,其他部分表示數(shù)值的大小,數(shù)值的大小就用來表示長度。

我們舉個例子。比如二進(jìn)制的1001,1000, 0010, 1010。其中第一個方框中的1和unsinged-integer的含義一樣,表示后面還有byte表示同一個unsigned-integer數(shù)據(jù)。第二個方框中的00這里就表示方向,00表示向東(在正交坐標(biāo)系中表示x正方向,01表示向北,10表示向西,11表示向南)。第三個框中的0表示這是這個unsigned-integer數(shù)據(jù)的最后一個byte。這個數(shù)據(jù)的長度是二進(jìn)制的010,1010, 001, 10(去掉框內(nèi)的數(shù)值,然后前后byte調(diào)轉(zhuǎn)位置),這就是十進(jìn)制的1350。因此這個數(shù)值就是表示向東(就是從當(dāng)前位置,向x軸正方向)畫長度1350的一條線。

? 3- delta

3-delta是一種unsigned-integer的數(shù)據(jù)結(jié)構(gòu),用來表示水平、垂直或者45°方向的位置(displacement)。其中unsigned-integer中的最低3bits(在oasis文件中最先出現(xiàn)的byte中的最低3bits)用來表示方向了,其他部分表示數(shù)值的大小,數(shù)值的大小就用來表示x軸和y軸的偏移長度。

我們舉個例子。比如二進(jìn)制的1100,1101, 0000, 0001。其中第一個方框中的1和unsinged-integer的含義一樣,表示后面還有byte表示同一個unsigned-integer數(shù)據(jù)。第二個方框中的101這里就表示方向,101表示西北方向(在正交坐標(biāo)系中表示135度角的一條線,000表示向東,001向北,010表示向西,011表示向南,100表示東北方向,110表示西南方向,111表示東南方向)。第三個框中的0表示這是這個unsigned-integer數(shù)據(jù)的最后一個byte。這個數(shù)據(jù)的長度是二進(jìn)制的000,0001, 100, 1(去掉框內(nèi)的數(shù)值,然后前后byte調(diào)轉(zhuǎn)位置),這就是十進(jìn)制的25。因此這個數(shù)值就是表示向西北方向(就是從當(dāng)前位置,向135度角方向)畫長度為sqrt(25*25+25*25)的一條線(x軸偏移25,y軸偏移25)。

? g- delta

g-delta有兩種形式,一種是用一個單一的unsigned-integer的數(shù)據(jù)來表示;第二種是用一對unsigned-integer的數(shù)據(jù)來表示。如果g-delta數(shù)據(jù)在文件中第一個出現(xiàn)的字節(jié)的最低位(bit0)是0,表示第一種類型的g-delta數(shù)據(jù);如果是1,表示第二種類型的g-delta數(shù)據(jù)。

? g- delta 第一種類型

如果是第一種類型,只用一個unsigned-integer類型表示g-delta的類型。unsigned-integer的在文件中出現(xiàn)的第一個字節(jié)的倒數(shù)第2到第4個bit(bit1到bit3)一共3個bits用來表示方向,同3-delta的形式。

舉個例子,二進(jìn)制的1110,11000000,0101。其中第二個方框中的0表示這是第一種類型的g-delta格式,第一個方框中的1和unsinged-integer的含義一樣,表示后面還有byte表示同一個unsigned-integer數(shù)據(jù)。劃下劃線的110這里就表示方向,110表示西南方向(在正交坐標(biāo)系中表示135度角的一條線,000表示向東,001向北,010表示向西,011表示向南,100表示東北方向,101表示西北方向,110表示西南方向,111表示東南方向)。第三個框中的0表示這是這個unsigned-integer數(shù)據(jù)的最后一個byte。這個數(shù)據(jù)的長度是二進(jìn)制的000,0101, 110(去掉打框的和加下劃線的數(shù)值,然后前后byte調(diào)轉(zhuǎn)位置),就是十進(jìn)制的46。整個數(shù)據(jù)的含義就是沿西南方向畫一條長度為sqrt(46×46+46×46)的線(也是就是將x軸坐標(biāo)減少46,y坐標(biāo)減少46,將這個點作為頂點,和原來坐標(biāo)點相連畫一條直線)。

? g- delta 第二種類型

如果是第二種類型,則用兩個unsigned-integer的數(shù)據(jù)來表示。第一個unsigned-integer在文件中的第一個byte的最低bit(bit0)必須為1,第一個byte的倒數(shù)第二個bit(bit1)表示x軸的方向,其它bit表示長度。第二個unsigned-integer在文件中的第一個byte的最低bit(bit0)表示y軸的方向,其它bit表示長度。因此,它能夠表示任何方向的線段。只有這種數(shù)據(jù)能夠表示任何方向任何角度的線段,其它delta的類型都只能表示45度或者90度方向的線段。

舉個例子,二進(jìn)制的1011,1011,0000,0001,1011,0111,0000,1111。

其中第二個方框中的1表示這是第二種類型的g-delta格式,第一個方框中的1和unsinged-integer的含義一樣,表示后面還有byte表示同一個unsigned-integer數(shù)據(jù)。劃下劃線的1這里就表示方向,1表示向西(x軸負(fù)方向,0表示向東)。第三個框中的0表示這是第一個unsigned-integer數(shù)據(jù)的最后一個byte。這個數(shù)據(jù)的長度是二進(jìn)制的000,0001, 011,10(去掉打框的和加下劃線的數(shù)值,然后前后byte調(diào)轉(zhuǎn)位置),就是十進(jìn)制的46。整個數(shù)據(jù)的含義就是x軸沿負(fù)方向減少長度46,取一條和y軸平行的直線。后面y軸也取一條和x軸平行直線,兩者相交得到一個點。整個delta就是從當(dāng)前位置到這個點畫一條直線。

第四個方框中的1和unsinged-integer的含義一樣,表示后面還有byte表示同一個unsigned-integer數(shù)據(jù)。第六個框中的0表示這是第二個unsigned-integer數(shù)據(jù)的最后一個byte。第五個框中的 1就表示方向,1表示向南(y軸負(fù)方向,0表示向北)。整個數(shù)據(jù)的含義就是y軸沿負(fù)方向減少長度46,取一條和x軸平行的直線。

原協(xié)議給出了一些delta的數(shù)據(jù)的例子,放在下圖中。

7.6 REPETITIONS

7.6.1? repetition 用來表示一個cell, 一個幾何圖形或者一串文本的重復(fù)排列方式。Repetition

PLACEMENT, <geometry>, 或者TEXT record 本身的一部分。 Repetition 由一個表示repetition類型的無符號整數(shù),后面跟著跟repetition相關(guān)的參數(shù)組成。

譯者備注:

在光刻版圖中,一個相同的圖形常常在多個位置重復(fù)出現(xiàn)。repetition就用來表示圖形重復(fù)出現(xiàn)的位置。repetitions其本質(zhì)是分成三部分,第一部分表示類型,用一個unsigned-integer的數(shù)據(jù)來表示,一共有12種類型,就是table 7-6中的type。 第二部分表示維數(shù),就是7.6節(jié)中table 7-6中的dimension,它表示了這個圖形重復(fù)出現(xiàn)的次數(shù);第三部分是表示位置,就是各個重復(fù)出現(xiàn)的圖形應(yīng)該出現(xiàn)在版圖中的哪個位置,中7.6節(jié)中table 7-6中的space和displacement。

Repetition的各種類型的說明。原協(xié)議的描述見下圖。

下面這張表是譯者對各種repetition進(jìn)行一些注釋說明。

Table 3? repetitions類型說明

類型

format

位置坐標(biāo)

0

參見上面Table 7-6

重復(fù)上一次repetition的數(shù)據(jù)。根據(jù)上一次repetition的類型和數(shù)據(jù)來重復(fù)本圖形的計算。比如上次是類型1的repetition,那么現(xiàn)在也是類型1的repetition,并且dimension和space參數(shù)也相同

1

參見上面Table 7-6

x-dimension=N-2,? y-dimension=M-2.

生成一個N列M行的矩陣,矩陣中每個元素表示一個重復(fù)的圖案。元素element(i , j )(i=0 , ... , N-1, j= 0, ..., M-1)的位置為(i*x-space,? j*y-space)。

用來生成x軸和y軸平行的重復(fù)圖案。

2

參見上面Table 7-6

x-dimension=N-2,生成一個N列1行的矩陣。矩陣中每個元素表示一個重復(fù)的圖案。元素element(i)(i=0 , ... , N-1)的位置為(i*x-space, 0)。

用來生成和x軸平行的重復(fù)圖案。

3

參見上面Table 7-6

y-dimension=M-2,生成一個1列M行的矩陣。矩陣中每個元素表示一個重復(fù)的圖案。元素element(j)(j=0 , ... , M-1)的位置為(0, j*y-space)。

用來生成和y軸平行的重復(fù)圖案。

4

參見上面Table 7-6

x-dimension=N-2,生成一個N列1行的矩陣。矩陣中每個元素表示一個重復(fù)的圖案。元素element(i)(i=0 , ... , N-1)的位置為(x-space0+ x-space1+...+ x-spacei, 0),其中x-space0=0。

用來生成和x軸平行的重復(fù)圖案。

5

參見上面Table 7-6

跟類型4類似,x-dimension=N-2,生成一個N列1行的矩陣。矩陣中每個元素表示一個重復(fù)的圖案。元素element(i)(i=0 , ... , N-1)的位置為(grid*(x-space0+ x-space1+...+ x-spacei), 0),其中x-space0=0。

用來生成和x軸平行的重復(fù)圖案。

6

參見上面Table 7-6

y-dimension=M-2,生成一個1列M行的矩陣。矩陣中每個元素表示一個重復(fù)的圖案。元素element(j )(j=0 , ... , M-1)的位置為(0, y-space0+ y-space1+...+ y-spacej),其中y-space0=0。

用來生成和y軸平行的重復(fù)圖案。

7

參見上面Table 7-6

跟類型6類似,y-dimension=M-2,生成一個1列M行的矩陣。矩陣中每個元素表示一個重復(fù)的圖案。元素element(j )(j=0 , ... , M-1)的位置為(0, gird*(y-space0+ y-space1+...+ y-spacej) ),其中y-space0=0。

用來生成和y軸平行的重復(fù)圖案。

8

參見上面Table 7-6

n-dimension=N-2,? m-dimension=M-2.

n-displacement(m-displacement類似這樣處理)是g-delta類型的數(shù)據(jù),含有長度和方向信息,可以把g-delta數(shù)據(jù)分成兩部分nx-space和ny-space,分表表示x軸方向的偏移和y軸方向的偏移。g-delta可以表示任意角度的方向。

整個數(shù)據(jù)生成一個N列M行的矩陣,矩陣中每個元素表示一個重復(fù)的圖案。元素element(i , j )(i=0 , ... , N-1, j= 0, ..., M-1)的位置為(i*nx-space+j*mx-space,? i*ny-space+j*my-space)。

用來生成沿對角方向(不一定是45度角)的重復(fù)圖案。

9

參見上面Table 7-6

dimension=P-2,生成一個P維的向量。向量中每個元素表示一個重復(fù)的圖案。元素element(k)(k=0 , ... , P-1)的位置為(k*x-space, k*y-space),

用來生成沿對角方向的P維重復(fù)圖形的圖案。

10

參見上面Table 7-6

dimension=P-2,生成一個P維的向量。向量中每個元素表示一個重復(fù)的圖案。元素element(k)(k=0 , ... , P-1)的位置為(x-space0+x-space1+...+x-spacek,? y-space0+y-space1+...+y-spacek),

它可以用來生成沿任何方向任何位置的P維重復(fù)圖形的圖案。

11

參見上面Table 7-6

跟類型10類似,dimension=P-2,生成一個P維的向量。向量中每個元素表示一個重復(fù)的圖案。元素element(k)(k=0 , ... , P-1)的位置為

(grid*(x-space0+x-space1+...+x-spacek),

? grid*( y-space0+y-space1+...+y-spacek)),

它可以用來生成沿任何方向任何位置的P維重復(fù)圖形的圖案。

下面是各種repetition的例子說明。

7.6.14 異常處理: 如果repetition的類型不在0-11范圍之內(nèi),那么因為認(rèn)為是一個fatal error。 Type 為0的repetition 不應(yīng)該是一個cell里面的第一個repetition類型。

7.7 POINT LISTS

7.7.1 point-list 數(shù)據(jù)類型是用來表示多邊形(polygons)或者paths的幾何坐標(biāo)。 它有五種類型的表示方式, 由一個無符號整數(shù)來表示它的類型。它的結(jié)構(gòu)是首先由一個無符號整數(shù)表示它的類型,然后接著一系列的delta數(shù)據(jù)。 一個polygon或者path的初始頂點坐標(biāo)(x,y) 是在POLYGON 或者PATH record 里面指定它并不是point-list數(shù)據(jù)結(jié)構(gòu)中的一部分。頂點的個數(shù) vertex-count是一個unsigned-integer, 表示的是points的個數(shù)或者deltas的個數(shù), 這個vertex-count并不包括初始頂點,也不包括隱藏并沒有明確說明的頂點。

這里列出了五種point-list的結(jié)構(gòu)。

譯者解讀:
?

point list數(shù)據(jù)類型是用來畫圖形的,他可以畫出邊為直線的任意多邊形的圖形。point lists有五種類型。其結(jié)構(gòu)可以分成三部分:第一部分表示類型,就是point list 類型;第二部分表示頂點的個數(shù),用一個unsigned-integer類型表示;第三部分用delta表示多邊形的邊長度以及方向,由一串delta構(gòu)成,每一個delta表示了多邊形的一條邊。

圖形的起始位置并不包含在point lists數(shù)據(jù)結(jié)構(gòu)中,圖形的起始位置由POLYGON記錄和PATH記錄中的相關(guān)信息給出。

這里不對point list五種類型的數(shù)據(jù)格式進(jìn)行具體說明,可以參考上面的table7-7 以及7.7.2到7.7.7節(jié)的說明。這里只對表中特別容易混淆或者不清楚的地方進(jìn)行一些說明。

  • 表中的vertex-count并不是表示頂點的個數(shù),而是表示后面delta類型的數(shù)據(jù)的個數(shù)。有些多邊形的邊并不需要用delta來表示,比如最后一條邊,總可以將起始頂點和最后頂點直接相連來得到。
  • 表中所謂manhattan 就是指多邊形圖形的邊只平行x軸或者y軸方向,而不會沿其他方向。
  • 所謂octangular是指多邊形的邊只平行x軸或者y軸方向,或者與他們形成45度角方向,而不會沿其他方向。如果不是沿45度角認(rèn)為出錯。
  • all-angle則表示多邊形的邊可能沿任何角度任何方向。
  • 我們可以看幾個例子,就拿上面的table 7-8和figure7-6為例子。Figure7-6和table7-8是對應(yīng)的, figure7-6是根據(jù)table7-8中的數(shù)據(jù)畫出來的。我們拿type 3為例,其他類似就不重復(fù)了。在Figure7- 6 中,(x,y)是表示畫圖的起始位置,虛線表示缺省暗示的線(這里的頂點不會統(tǒng)計在point-list 的vertex-count里面),不會在delta數(shù)據(jù)中體現(xiàn)出來。。

    type3中,對應(yīng)table7-8中的bit pattern為00000011,00000100,00010101,00100001,00110000, 00010011。首先第一個byte為00000011值為3表示類型3,對應(yīng)table 7-7,可以看到后面是3-delta類型的數(shù)據(jù)。第二個byte為00000100值為4,表示后面有4個3-delta的數(shù)據(jù)。第三個byte為00010101,對照3-delta的數(shù)據(jù)格式,可以看到這是一個沿西北方向的線,長度為二進(jìn)制的1010,也就是十進(jìn)制的10。第三個byte為00010101,對照3-delta的數(shù)據(jù)格式,可以看到這是一個沿西北方向的線,這個3-delta數(shù)值大小為二進(jìn)制的10,也就是十進(jìn)制的2,所以線的長度為sqrt(2×2+2×2)。第四個byte為00100001,對照3-delta的數(shù)據(jù)格式,可以看到這是一個向北方向的線,這個3-delta數(shù)值大小為二進(jìn)制的100,也就是十進(jìn)制的4,所以線的長度為sqrt(4×4+4×4)。以此類推,最后一條線是缺省暗示的,將最后的一個點和起始點相連即可得到最后的一條直線(圖上的虛線)。

    7.7.8 異常處理:如果point-list的類型不在[0-5]之間,認(rèn)為是fatal error. ?For point-list types 0-1, successive coincident points and/or adjacent colinear edges are not permitted. A non-manhattan

    implicit closing vector for a polygon using point-list type 2, or a non-octangular implicit closing vector for a polygon? using point-list type 3 should be treated as a fatal error. For polygons using point-list types 0-1, a vertex count which? is odd or less than 2 should be treated as a fatal error.

    7.8 PROPERTY VALUES

    7.8.1 屬性值( property-value) 存放的是一個元素的屬性值列表。它首先也是由一個表示類型的無符號整型開頭,后面接著屬性值本身或者一個引用號(reference number)。 屬性值的表示有8中類型,用 Types 0-7 表示。

    7.8.2 異常處理: 如果屬性值不在[0-15]之間,認(rèn)為是fatal error。 如果用propstring-reference-number 表示屬性值,但是在同一個OASIS文件中在 PROPSTRING record中里面,并沒有找到對應(yīng)的引用號,那么認(rèn)為是fatal error。

    譯者備注: 其實引用可以用引用號,也可以用element的名字來引用。但在實際中請嚴(yán)格使用引用號來做引用,而不要使用名稱。

    譯者備注:

    到這里,終于把OASIS標(biāo)準(zhǔn)中的數(shù)據(jù)結(jié)構(gòu)講完了。后面就講6.2節(jié)里提到的BNF語法中提到的各個組成單元的定義了。開始之前最好重溫一下6.2節(jié)的內(nèi)容。

    總結(jié)

    以上是生活随笔為你收集整理的OASIS协议标准文档的解读_第一部分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。