semi合集-English.pdf - 第5901页
SEMI P39-0304 E2 © SEMI 2004 4 Table 1 Unsigned-Inte ger Examples Unsigned-Integer Value Binary Representation 0 00000000 127 01111111 128 10000000 00000001 16,383 11111111 01111111 16,384 10000000 10000000 00000001 7.2.…

SEMI P39-0304
E2
© SEMI 2004 3
6 OASIS Basics
6.1 An OASIS file is a sequence of bytes divided into records. The length of a record is discernible from its
structure and is not explicit (in contrast to GDSII Stream, where all record lengths are explicit).
6.2 An OASIS file has the following overall syntax (using the modified BNF notation described in Section 36 on
page 27). Individual record types appear in bold uppercase and are described in more detail in following sections.
<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 An OASIS file may represent a complete layout hierarchy, a portion of a layout hierarchy, or multiple layout
hierarchies. These interpretations are not intrinsic to the format and are governed by application semantics only.
Each OASIS file must be syntactically complete—it must begin with <magic-bytes> and contain at least a START
and END record.
6.4 The <magic-bytes> element is a sequence of 13 ASCII characters: “%SEMI-OASIS<CR><NL>” where
<CR><NL> represents the ASCII hexadecimal sequence 0D 0A. It is provided as a recognition signature to make
OASIS files easily identifiable to the UNIX file utility. (The intent of the carriage return and newline is to help
detect corruption by FTP programs operating in non-binary mode.)
6.5 EXCEPTION HANDLING
— OASIS processors should treat any deviation from the syntax presented in this
document as a fatal error. OASIS readers are not required to implement syntax-check preprocessing in order to be
considered compliant with this specification. The sequence in which exceptions are detected and reported is entirely
application-dependent. In addition, for access requests which do not require the interpretation of the entire file (such
as retrieval of a single cell or a subset of the cells within the file), this specification does not require OASIS readers
to exhaustively check the validity of the entire file.
7 Data Constructs
7.1 Bytes
7.1.1 A byte is a fixed-length 8-bit value. Bit patterns for bytes are shown with the least significant bit (bit 0) on the
right.
7.2 Integers
7.2.1 An unsigned-integer is an N-byte (N > 0) integer value. The low-order byte appears first
in the OASIS
format. Integer byte length is variable and integers are represented as byte-continuations where the most significant
bit of each byte except the last in the chain is a 1; the remaining seven bits in each byte are concatenated to form the
actual integer value itself. There are no restrictions on integer byte length (and hence, magnitude).
Figure 1
Unsigned-Integer Representation

SEMI P39-0304
E2
© SEMI 2004 4
Table 1 Unsigned-Integer Examples
Unsigned-Integer Value Binary Representation
0 00000000
127 01111111
128 10000000 00000001
16,383 11111111 01111111
16,384 10000000 10000000 00000001
7.2.2 A signed-integer follows the same byte-continuation scheme as an unsigned-integer, and is stored in signed-
magnitude form, with the significand left-shifted one bit and the sign bit stored in the least significant bit of the low-
order (first) byte. A sign bit of 0 indicates a positive number, and a sign bit of 1 indicates a negative number. Both
representations of zero (+0 and -0) should be treated as numerically equivalent for the purposes of comparison.
Figure 2
Signed-Integer Representation
Table 2 Signed Integer Examples
Signed Integer Value Binary Representation
0 00000000
+1 00000010
1 00000011
+63 01111110
64 10000001 00000001
+8,191 11111110 01111111
8,192 10000001 10000000 00000001
7.2.3 EXCEPTION HANDLING
— OASIS processors which only support integer data in a restricted space (e.g.,
32-bit space) should treat any magnitude outside of this space as a fatal error.
7.3 Reals
7.3.1 A real number may be stored in one of several rational forms, or as a single-precision 4-byte (ieee-4) or
double-precision 8-byte (ieee-8) floating point value. The rational forms are usually more compact than the floating-
point forms, and have the advantage of being able to precisely represent many values which can only be
approximated by the binary floating point representation. The type of representation is stored in an unsigned-integer
which precedes the significant portion of the real:

SEMI P39-0304
E2
© SEMI 2004 5
Table 3 Real Number Types
Format Meaning
‘0’ unsigned-integer Positive whole number
‘1’ unsigned-integer Negative whole number
‘2’ unsigned-integer Positive reciprocal
‘3’ unsigned-integer Negative reciprocal
‘4’ unsigned-integer unsigned-integer Positive ratio
‘5’ unsigned-integer unsigned-integer Negative ratio
‘6’ IEEE-4-byte-float Single-precision floating point
‘7’ IEEE-8-byte-float Double-precision floating point
7.3.2 In types 0 and 1, the real is a whole number—its fractional portion is zero. In types 2 and 3, the unsigned-
integer represents the denominator of a reciprocal, with an implicit numerator of 1. Types 4 and 5 are ratios, with the
numerator listed first, followed by the denominator. Types 6 and 7 are binary floating point numbers in IEEE 754-
1985 format, with the least significant byte of the fraction (byte 0) stored first
.
Figure 3
IEEE Floating Point Formats
Table 4 Real Number Examples
Value Rational Form IEEE-4 Form
0.0 00000000 00000000 00000110 00000000 00000000 00000000 00000000
1.0 00000000 00000001 00000110 00000000 00000000 10000000 00111111
0.5 00000011 00000010 00000110 00000000 00000000 00000000 10111111
0.3125 00000100 00000101 00010000 00000110 00000000 00000000 10100000 00111110
1/3 00000010 00000011 00000110 10101011 10101010 10101010 00111110
2/13 00000101 00000010 00001101 00000110 11011001 10001001 00011101 10111110
7.3.3 EXCEPTION HANDLING
— For types 2–5, a denominator of 0 should be treated as a fatal error. A type
outside the range of 0–7 should be treated as a fatal error.
7.4 Strings
7.4.1 A string is a sequence of zero or more bytes (“characters”) preceded by an unsigned-integer representing the
number of characters in the string:
string -> length byte*
Strings in OASIS are further sub-typed by semantic. A b-string (“binary string”) is a string which may contain any
combination of 8-bit character codes in any sequence. An a-string (“ASCII string”) may contain only printable
ASCII character codes (hexadecimal 21-7E) plus the SP (space) character (hexadecimal 20), in any sequence. An
n-string (“name string”) may contain only printable ASCII character codes (hexadecimal 21-7E), and must have a
length greater than zero.