|
ACS Output Syntax
----------------------------------------------------
Symbol Meaning
----------------------------------------------------
:: "Is composed of"
[] An element that can be absent
or occur one time.
{} One of the elements within the
braces can occur.
{}* The elements within the braces
can be absent or occur one or
more times.
{}+ The elements within braces
must occur one or more times.
() A primitive data type , shown
with a descriptor, e.g. (int layer).
<> These elements are further
defined in the syntax list.
| "Or"
// Comment
Note: Any words not enclosed in ( ) or < > are to be typed exactly as they appear. Also, newlines must be used where specified. The GDSII HeaderThe GDSII file must always begin with a library header section. The most important part of the header section is the UNITS directive which defines the so called "user unit" and resolution.
<library> ::=
HEADER
BGNLIB
<fonts>
<units>
{
Note: (grain) is the number of user units in a database unit (should be a negative-power of 10, and (precision) is the size of a database unit. User units, found by dividing (precision) by (grain) should be one of: 2.54e-08 = microinch 1.00e-06 = micron 2.54e-05 = mil 1.00e-03 = mm 2.54e-02 = inch 1.00e-02 = cm Example of Header SectionIn the example below, the designer wishes his database to be in microns with 0.001 micron resolution. HEADER BGNLIB UNITS 1.00e-03 user units 1.00-e09 meters ENDLIB Structure DefinitionEach GDSII file must have at least one structure definition. A structure will "hold" entities such as boundaries, paths, text and references to other structures. You should limit all structure names to 31 characters and avoid the use of special characters such as . , - * ? / \ . We also recommend that all structure names use upper case characters -- some target systems may choke on GDSII files with lower case or mixed case names. Note that a design may have hundreds or thousands of structure definitions. Such definitions are never nested. Order is not important.
<structure> ::=
BGNSTR
STRNAME (string name)
{<element>}*
ENDSTR
ExampleSuppose your top level structure is called TOP then immediately after the header you would have: BGNSTR STRNAME TOP . . . . ENDSTR GDSII ElementsThe basic elements found within a structure are:
<element> ::=
{<boundary> | <path> | <sref> | <aref> | <text> | <node> | <box>}
Boundary
<boundary> ::=
BOUNDARY
LAYER (int layer)
DATATYPE (int datatype)
<xy>
ENDEL
<xy> ::=
XY
{(int x) (int y)
}+
Note: (x) and (y) are in database units. PATH
<path> ::=
PATH
LAYER (int layer)
DATATYPE (int datatype)
[PATHTYPE {Flush | Round | Extended | Custom Plus: (int pathtype)}]
[WIDTH (int width)]
<xy>
ENDEL
SREF
<sref> ::=
SREF
SNAME (string structname)
[<strans>]
<xy>
ENDEL
<strans> ::=
STRANS {0x8000 | 0x0000}
[MAG
(float magnification)]
[ANGLE
(float angle)]
Note: To reflect the element over the X-axis, use STRANS 0x8000; otherwise, use STRANS 0x0000. AREF<aref> ::= AREF SNAME (string structname) [<strans>] COLROW (int columns) (int rows) <xy> ENDEL TEXT
<text> ::=
TEXT
LAYER (int layer)
TEXTTYPE (int texttype)
[PRESENTATION FONT(int fontnumber) <justification>]
[PATHTYPE {Flush | Round | Extended | Custom Plus: (int pathtype)}]
[WIDTH (int width)]
[<strans>]
<xy>
STRING (string text)
ENDEL
<justification> ::=
{TOP | MIDDLE | BOTTOM} {LEFT | CENTER | RIGHT}
NODE<node> ::= NODE LAYER (int layer) NODETYPE (int nodetype) <xy> ENDEL <box> ::= BOX LAYER (int layer) BOXTYPE (int boxtype) <xy> ENDEL |
| Data Sheet | Price | Download | Rev. History |