GDS II Stream Format Manual 6.0 Feb87
GDS II Stream Format Manual 6.0 Feb87
Release 6.0
February 1981
• calma
Calma Company (Calma) has prepared .this document for use by Calma employees and cus-
tomers only. The only undertakings of Calma respecting information in this document are
contained in contracts between Calma and its customers, and nothing contained in this doc-
ument shall be construed as changing said contracts. The use of this information except as
defined by said contracts, or for any purpose other than that for which it is intended, is not
authorized and, with respect to any such unauthorized use, neither Calma nor any of the con-
tributors to this document makes any representation or warranty, nor shall any warranty be
implied, as to the completene88, accuracy, or usefulness of the information contained in this
document or that such use of such information may not infringe privately owned rights, nor do
they a88ume any responsibility for liability or damage of any kind which may result from such
use of such information. This publication contains proprietary information of Calma and is
for use by Calma personnel and Calma customers only. Duplication in whole or in part by any
means (including xerographic photocopying and/or computerized magnetic tape/disk informa-
tion storage/retrieval systems) for any purpose without the publisher's express written permis-
sion is prohibited. This document may contain portions reproduced with permission/license of
the copyright owner.
Contents
Figures
Tables
Stream format is the standard output format for GDSII data. Stream format
is the format written by OUTFORM and STREAMOUT and read by INFORM.
Libraries preserved in this format can be easily transferred to other sys-
tems for processing. Stream format is upward compatible between releases.
Libraries archived under an old release will always be readable by newer re-
leases. For this reason, libraries preserved in Stream format can be archived.
The Stream format output file is composed of variable length records. The
minimum record length is four bytes. Records can be infinitely long. The
first four bytes of a record are the header. The first two bytes of the header
contain a count (in eight-bit bytes) of the total record length. The count
tells you where one record ends and another begins. The next record begins
immediately after the last byte included in the count.
The third byte of the header is the record type. The fourth byte of the header
describes the type of data contained within the record. The fifth through last
bytes of a record are data. Figure 2-1 shows a typical record header.
111 111
Bit # o 1 234 5 6 7 8 901 2 3 4 5
If the output file is a magnetic tape, then the records of the library are
written out in 2048-byte physical blocks. Records may overlap physical block
boundaries; a record is not required to be wholly contained in a single physical
block.
• the last record of a library and the end of its physical block, or
• the last record of a tape in a multi-reel Stream file and the end of
its physical block.
Sections 3 and 4 describe data and record types. Section 5 shows how the
Stream records must be arranged.
Table 3-1 lists the possible data types and their values. You can find the
type value in the fourth byte of the record.
The following paragraphs describe the data types listed in Table 3-1.
SMMMMMMM MMMMMMM
00000000 00000001 = 1
00000000 00000010 = 2
00000000 10001001 = 137
11111111 11111111 = -1
11111111 11111110 = -2
11111111 01110111 = -137
In the eight-byte real representation, the first four bytes are exactly
the same as in the four-byte real representation. The last four bytes
contain additional binary places for more resolution.
4-byte real:
8-byte real:
Note: In the first six lines of the following example, the 7-bit
exponent field = 65. The actual exponent is 65-64=1.
Following are records and a brief description of each, where the first two
numbers in brackets are the record type and the last two numbers in brackets
are the data type. All record numbers are expressed in hexidecimal.
1 1 1 1 1 1
Bit # 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
Word 4 month
Word 5 day
Word 6 hour
Word 7 minute
Word 8 second
Word 10 month
Word 11 day
Word 12 hour
Word 13 minute
Word 14 second
• A through Z
• a through z
• 0 through 9
• Underscore (_)
(X1• Y1)
1 1 1 1 1 1
Bit # 0 1 234 5 6 789 0 1 2 3 4 5
Word 3 unused
font number i 1t
vertical presentation
I
horizontal presentation
24 SPACING Discontinued
1 1 1 111
Bit # o 1 2 3 4 5 6 7 890 1 2 3 4 5
Pathtype 0
Pathtype 0
Pathtype 1
Path type 1
bU Pathtype 2
Pathtype 1 produces a round-ended path.
The two ends are semicircular with center at
the digitized endpoints. Path type 1 is a view
feature only;
LU
Pathtype 2
1 1 1, 1 1 1
Bit # o 1 234 5 6 7 8 901 2 345
Word 3 unused
EXTERNAL data
TEMPLATE data
t1
Figure 4-6. An ELFLAGS Record
1 5-7 10 : 0-63
• A group number
• A user number
• Access rights
You can put Stream format onto multiple reels of tape. The first tape Inust
end with the records TAPENUM, TAPECODE, and LIBNAME, in that order. Each
subsequent tape must begin with the same records, in the same order, and
must end with the record TAPENUM. Stream tapes must contain only complete
Stream records, i.e., no Stream record should begin on one tape and continue
on the next tape.
Note: Use TAPENUM and TAPECODE only as described. These records can-
not appear anywhere else in the Stream file.
The records TAPENUM, TAPECODE, and LIBNAME, used in this manner, are used
only for identification of the tapes and are not incorporated into the library
in any way. LIBNAME occurs normally as the third record of a Stream file.
Tapes may end after any record in Stream format.
Tape 1:
I I I I
HEADER , Several Complete , TAPENUM I TAPECODE I LlBNAME
I Stream records' (1) I <code> I < library name>
I I I I
, I I I
TAPENUM , TAPECODE, LlBNAME I More Complete TAPENUM
( i) I <code> I <library name>' Stream records I (i)
I I I I
I I I J
TAPENUM I TAPECODE I LlBNAME , More complete I ENDLIB
(n) I <code> 1<library name>' Stream records I
I
I I : I
The entire concatenation of Stream records, without the tape-id groups and
TAPENUMs, should conform to the Stream syntax described in Section 5.0.
? FPRINT
Source File Name: EXAMPLE.SF
Format (Octal): HEX
Output File: $TTO
000 0006 0002 0258 001C 0102 0055 0009 0003 ........... U... .
008 0000 0000 0000 0055 0009 0003 OOOA 0010 ....... U....... .
010 0000 0006 3902 0028 OOOA 3B02 0003 0005 .... 9 .. ( .. : .... ~
018 0007 OOOE 0206 4558 414D 504C 452E 4442 ...... EXAMPLE.DB
020 005C 1F06 4744 5349 493A 5245 4631 2E44 ... GDSII:REF1.D
028 4200 0000 0000 0000 0000 0000 0000 0000 B .............. .
030 0000 0000 0000 0000 0000 00000000 0000 ............... .
****
048 0000 0000 0000 0000 0000 0000 00B4 2006
050 4744 5349 493A 4341 4C4D 4146 4F4E 542E GDSII:CALMAFONT.
058 5458 0000 0000 0000 0000 0000 0000 0000 TX ............. .
060 0000 0000 0000 0000 0000 0000 4744 5349 ............ GDSI
068 493A 5445 5854 2E54 5800 0000 0000 0000 I:TEXT.TX ...... .
070 0000 0000 0000 0000 0000 0000 0000 0000 ............... .
078 0000 0000 0000 0000 4744 5349 493A 464F ........ GDSII:FO
080 4E54 2E54 5800 0000 0000 0000 0000 0000 NT.TX .......... .
088 0000 0000 0000 00000000 0000 0000 0000 ............... .
090 0000 0000 4744 5349 493A 5047 464F 4E54 .... GDSII:PGFONT
098 2E54 5800 0000 0000 0000 0000 0000 0000 .TX ............ .
OAO 0000 0000 0000 0000 0000 0000 0000 0000
OA8 0012 2306 4744 5349 493A 4154 5452 532E .. #.GDSII:ATTRS.
OBO 4154 0006 2202 0003 0014 0305 3E41 8931 AT .. " ....... >A.1
OB8 4BC6 A1EF 3944 B82F A09B 5A51 ootc 0502 K... 90./ .. ZQ ... .
OCO 0055 0001 OOOC 0011 0010 OOOA 0055 0001 .U ........... U..
OC8 0011 0011 003A 0014 OOOC 0606 4558 4140 ..... : ...... EXAM
000 604C 4532 0004 OBOO OOOC 1206 4558 4140 PLE2 ........ EXAM
008 604C 4531 0006 lAOl 8000 OOOC lC05 425A PLE1 .......... BZ
OEO 0000 0000 0000 0008 1302 0002 0002 001C
OE8 1003 0000 4E20 0000 4E20 0000 4E20 0001 .... N .. N .. N ..
OFO 4FFO 0001 3880 0000 4E20 0004 ·1100 0004 0 ... 8 ... N ..... .
OF8 0100 001C 0502 0055 0001 OOOC OOOB 001C ....... U....... .
100 0009 0055 0008 001C OOOF 0039 OOaA OOOC ... U....... 9.: ..
108 0606 4558 414D 504C 4531 0004 OCOO 0006 .. EXAMPLE1 ..... .
110 OD02 0000 0006 1602 0000 0006 1101 0005
118 0006 lA01 8006 OOOC lB05 4120 0000 0000 .......... A ... .
120 0000 OOOC 1003 0000 4E20 0000 4E20 OOOE ........ N .. N ..
128 1906 4920 4140 2048 4552 4500 0004 1100 .. 1 AM HERE .... .
130 0004 0800 0006 2601 0001 0006 OD02 0002 ...... k . ....... .
138 0006 OE02 0003 0024 1003 0000 1388 0000 ....... $ ....... .
140 6D60 0000 2EEO 0000 6060 0000 1F40 0000 m· ...... m· ... C ..
148 84DO 0000 1388 0000 6D60 0004 1100 0004 ........ m· ..... .
160 0900 0006 OD02 0004 0006 OE02 003F 0006 ............. ?.
158 2102 0001 0008 OF03 0000 03E8 0024 1003 ! ............ $ ..
160 0000 3A98 0000 36BO 0000 6590 0000 36BO .. : ... 6 ... e ... 6.
168 0000 84DO 0000 2328 0000 55FO 0000 1110 ...... #( .. U.... p
170 0006 2B02 0002 OOOA 2C06 4D45 5441 4COO .. + .....•. METAL.
178 0006 2B02 OOOA OOOC 2C06 5052 4F50 4552 .. + . . . . . • . PROPER
180 6459 0004 1100 0004 0100 0004 0400 TY ........... .
The database that produced this stream format output had only two struc-
tures. They were called EXAMPLEl and EXAMPLE2. EXAMPLE2 con-
tained only one element, a 2 x 2 AREF of EXAMPLEl. EXAMPLEl con-
tained a boundary that was template data, a path with two properties, and
a middle-center justified text element containing the string I AM HERE.
The first word says that this record is 6 bytes long. The second word says
that this is the HEADER record (00 hex), and that it contains data of type 2-
byte signed integer (02 hex). The information in the third word is the GDSII
version number, which in this case is version 600 (258 hex).
001C 0102 0055 0009 0003 0000 0000 0000 0055 0009 0003 OOOA 0010
0000
This record is 28 (lC hex) bytes long. It is the BGNLIB (01 hex) record and it
contains data of type 2-byte signed integer (02). The 24 bytes of information
following the first two header words contain the modification and last access
date and time. The last 6 words of information, for example, contain: the
year - 85 (55 hex), the month - September (9 hex), the day - 3 (3 hex), the
hour - 10 a.m. (A hex), the minute - 16 (10 hex) and the seconds - o. All
together this record says that this library was last modified on September 3,
1985 at 10:16:00 a.m.
This record is 6 bytes long. It is the LIBDIRSIZE (39 hex) record, and it con-
tains data of type 2-byte signed integer (02). In this example, the directory
size is 40 (28 hex) pages.
This record is 10 (A hex) bytes long. It is the LIBSECUR (3B hex) record and
it contains data of type 2-byte signed integer (02). In this example, there is
only 1 ACL entry. The entry has a group number of 3, a user number of 5,
and access rights of 7. This means that the only one with any access rights
to this library is user number 5 in group number 3. The access code (0007)
means this user has read and write access and is also the owner of the library.
This record is 14 (E hex) bytes long. It is the LIBNAME (02 hex) record and it
contains data of type ASCII string (06). The 5 words of information contain
the library name EXAMPLE. DB.
006C 1F06 4744 6349 493A 6246 4631 2E44 4200 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000
This record is 92 (5C hex) bytes long. It is the REFLIBS (1F hex) record and
it contains data of type ASCII string (06). All 92 bytes of this record must
be present if there are any reference libraries bound to the working library.
In this example, the library GOSII: REF 1. DB is the bound reference library.
The library name is padded with nulls to equal 44 bytes. There is no second
reference library, so the last 44 bytes are filled with nulls.
00B4 2006 4744 6349 493A 4341 4C40 4146 4F4E 642E 6468 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4744 6349
493A 6446 6854 2E54 6800 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 eooo 0000 4744 5349 493A 464F 4E54 2E54
5800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 4144 6349 493A 5047 464F 4E54 2E54 5800 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
This record is 180 (B4 hex) bytes long. It is the FONTS (20 hex) record and
it contains data of type ASCII string (06). All 180 bytes of this record must
be present if there are any textfont definition files bound to this library.
In this example, there are four (the maximum possible) textfont definition
files bound to this library. They are GOSII: CALMAFONT . TX, GOSII: TEXT. TX,
GDSII : FONT. TX, and GOSII : PGFONT . TX. Each string is padded with nulls out
to 44 bytes.
This record is 18 (12 hex) bytes long. It is the ATTRTABLE (23 hex) record
and it contains data of type ASCII string (06). This record is only present if
an attribute table is bound to the library. The name of the attribute table
is GDSII :ATTRS .AT.
This record is 6 bytes long. It is the GENERAT! ONS (22 hex) record and it con-
tains data of type 2-byte signed integer (02). In this example, 3 generations
of a structure are retained in the library.
0014 0305 3E41 8937 4BC6 A7EF 3944 B82F A09B 5A51
This record is 20 (14 hex) bytes long. It is the UNITS (03 hex) record and
it contains data of type 8-byte real (05). In this example, 3E41 8937 4BC6
A7EF is 1E-3. This implies that a database unit is 1 thousandth of a user unit.
The record 3944 B82F A09B 5A51 is 1E-9. This implies that a database unit
is 1E-9 meters (lE-3 microns).
001C 0502 0055 0007 OOOC 0011 001D OOOA 0055 0007 0011 0011 003A
0014
This record is 28 (1 C hex) bytes l.ong. It is the BGNSTR (05 hex) record and
it contains data of type 2-byte signed integer (02). The information in this
record is the creation time and last modification time of the structure and is
in the same format as in the BGNLIB record. This structure was created July
12, 1985 at 5:29:10 p.m. and last modified July 12, 1985 at 5:48:20 p.m.
This record is 12 (C hex) bytes long. It is the STRNAME, (06 hex) record and
it contains data of type ASCII string (06). The structure name is EXAMPLE2.
0004 OBOO
This record is 4 bytes long. It is the AREF (DB hex) record and it contains no
data (00). It marks the start of an AREF.
This record is 12 (C hex) bytes long. It is the SNAME (12 hex) record and it
contains data of type ASCII string (06). This element contains an SNAME
of structure EXAMPLE1.
This record is 6 bytes long. It is the STRANS (lA hex) record and it contains
bit array data (01). In this example, only hit 0 is set, which implies that
this AREF is reflected. Since bits 13 and 14 are not set, this structure's
magnification and angle, respectively, are not absolute.
This record is 12 (C hex) bytes long. It is the ANGLE (1C hex) record and
it contains 8-byte real data (05). The data 425A 0000 0000 0000 represents
90.0, which implies that this AREF was placed at an angle of 90 degrees.
This record is 8 bytes long. It is the COLROW (13 hex) record and it contains
2-byte signed integer data (02). In this example, we have a 2 x 2 AREF.
001C 1003 0000 4E20 0000 4E20 0000 4E20 0001 4FFO 0001 3880 0000
4E20
This record is 28 (1C hex) bytes long. It is the XY (10 hex) record and it
contains data of type 4-byte signed integer (03). The data, taken 2 words at
a time, can be translated to decimal as: 20000, 20000, 20000, 86000, 80000,
20000. Multiply these numbers by 1 thousandth (because a data base unit is
1 thousandth of a user unit) and we get the coordinates: (20, 20), (20, 86),
and (80, 20). The first coordinate is the array reference point. The second
coordinate is a point which is displaced from the array reference point in the
Y-direction by the number of columns times the inter-column spacing. In this
example, the second point was displaced 66 (86 - 20) units from the array
reference point. Since there are 2 columns, this implies that the inter-column
spacing was 33 units. A similar calculation could be carried out to verify
that the inter-row spacing was 30 units.
0004 1100
This record is 4 bytes long. It is the ENDEL (11 hex) record and it contains
no data (00). It marks the end of an element.
0004 0100
This record is 4 bytes long. It is the ENDSTR (07 hex) record and it contains
no data (00). It marks the end of a structure.
001C 0502 0055 0007 OOOC OOOB 001C 0009 0055 0008 001C OOOF 0039
003A
This is another BGNSTR record. This structure was created July 12, 1985 at
11:28:09 a.m. and last modified August 28, 1985 at 3:57:58 p.m.
0004 OCOO
This record is 4 bytes long. It is the TEXT (~C hex) record and it contains no
data (00). It marks the start of a text element.
This record is 6 bytes long. It is the LAYER (OD hex) record and it contains
data of type 2-byte signed integer (02). This text element is on layer O.
This record is 6 bytes long. It is the TEXTTYPE (16 hex) record and it contains
data of type 2-byte signed integer (02). This text element is of text type O.
This record is 6 bytes long. It is the PRESENTATION (17 hex) record and it
contains bit array data (01). The hex number 0005 in binary has all bits
set to zero except bits 13 and 15. Since bits 10 and 11 are 00, the text
element used font O. Since bits 12 and 13 are 01, the text has a middle
vertical presentation. And since bits 14 and 15 are 01, the text has a center
horizontal presentation.
This is another STRANS record. This text is reflected and has an absolute
magnification and absolute angle.
This record is 12 (C hex) bytes long. It is the MAG (IB hex) record and it
contains data of type 8-byte real (05). The data in this record represents 2.0,
therefore, this text is magnified 2 times.
This record is 14 (E hex) bytes long. It is the STRING (19 hex) record and it
contains data of type ASCII string (06). The text string is I AM HERE.
0004 1100
0004 0800
This record is 4 bytes long. It is the BOUNDARY (08 hex) record and it contains
no data (00). It marks the start of a boundary element.
This record is 6 bytes long. It is the ELFLAGS (17 hex) record and it con-
tains bit array data (01). Since bit 15 is set, this element is template data.
However, since bit 14 is not set, it is not external data.
This record is 6 bytes long. It is the DATATYPE (DE hex) record and it contains
data of type 2-byte signed integer (02). This boundary is of data type 3.
0024 1003 0000 1388 0000 6D60 0000 2EEO 0000 6D60 0000 lF40 0000
84DO 0000 1388 0000 6D60
This is another XY record. The coordinates are (S, 28), (12, 28), (8, 34), S(S,
28).
0004 1100
0004 0900
This record is 4 bytes long. It is the PATH (09 hex) record and it contains no
data (00). It marks the start of a path element.
This is another DATATYPE record. The path is data type 63 (3F hex).
This record is 6 bytes long. It is the PATHTYPE (21 hex) reco~d and it contains
data of type 2-byte signed integer (02). This path is of path type 1.
This record is 8 bytes long. It is the WIDTH (OF hex) record and it contains
data of type 4-byte signed integer (03). The number 03E8 hex is 1000 in
decimal. Multiply this by 1 thousandth (because a data base unit is 1 thou-
sandth of a user unit) and the result is 1. Therefore, the width of this path
is 1.
0024 1003 0000 3A98 0000 36BO 0000 6690 0000 36BO 0000 84DO 0000
2328 0000 66FO 0000 1770
This is another XY record. This path's coordinates are (IS, 14), (26, 14), (34,
9), (22, 6).
This record is 6 bytes long. It is the PROPATTR (2B hex) record and it con-
tains data of type 2-byte signed integer (02). This path has a property with
attribute number 2.
This record is 10 (A hex) bytes long. It is the PROPVALUE (2C hex) record
and it contains data of type ASCII string (06). The property value for the
property attribute described in the PROPATTR record is METAL. Note that this
odd length string is padded with a null.
This is another PROPATTR record. This path has another property associated
with it and it has attribute number 10 (A hex).
0004 1100
0004 0700
0004 0400
This record is 4 bytes long. This record is the ENDLIB (04 hex) record and it
contains no data (00). ENDLIB marks the end of a stream format file.