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 |