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 Header

The 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>
	{}*
	ENDLIB

<fonts> ::=
	FONTS (string fontfile)

<units> ::=
	UNITS (float grain) user units  (float precision) meters

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 Section

In 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 Definition

Each 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

Example

Suppose your top level structure is called TOP then immediately after the header you would have:


BGNSTR
STRNAME TOP
.
.
.
.
ENDSTR

GDSII Elements

The basic elements found within a structure are:
  • BOUNDARY - an area enclosed by edges. The interior is "dark."


  • PATH - a line with width. There are three different end caps for a path.


  • SREF - a reference to place a structure.


  • AREF - a reference to place an array of structures.


  • TEXT - a text entity used often to annotate a design. (Note that the font for the text is not part of the GDSII file so such text is generally not used for actual marking on the mask.


  • NODE - a symbolic element (often used to define electrical nodes for parasitic or other electrical modeling.)


<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


ARTWORK CONVERSION SOFTWARE, INC.       Company Profile
417 Ingalls St., Santa Cruz, CA 95060    Tel (831) 426-6163     Fax 426-2824    email: info@artwork.com