magic/doc/html/gds.html

327 lines
16 KiB
HTML

<HTML>
<HEAD>
<STYLE type="text/css">
H1 {color: black }
H2 {color: maroon }
H3 {color: #007090 }
A.head:link {color: #0060a0 }
A.head:visited {color: #3040c0 }
A.head:active {color: white }
A.head:hover {color: yellow }
A.red:link {color: red }
A.red:visited {color: maroon }
A.red:active {color: yellow }
</STYLE>
</HEAD>
<TITLE>Magic-7.3 Command Reference</TITLE>
<BODY BACKGROUND=graphics/blpaper.gif>
<H1> <IMG SRC=graphics/magic_title8_2.png ALT="Magic VLSI Layout Tool Version 8.2">
<IMG SRC=graphics/magic_OGL_sm.gif ALIGN="top" ALT="*"> </H1>
<H2>gds, calma</H2>
<HR>
Read GDSII input or generate GDSII output.
<HR>
<H3>Usage:</H3>
<BLOCKQUOTE>
<B>gds</B> [<I>option</I>] <BR><BR>
<B>calma</B> [<I>option</I>] <BR><BR>
<BLOCKQUOTE>
where <I>option</I> is one of the following: <BR>
Primary options:
<DL>
<DT> <B>help</B>
<DD> Print usage information
<DT> <B>read</B> <I>file</I>
<DD> Read GDSII format from file <I>file</I> into the edit cell.
If <I>file</I> does not have a file extension, then <B>magic</B>
searches for a file named <I>file</I>, <I>file</I>.gds,
<I>file</I>.gds2, or <I>file</I>.strm.
<DT> <B>warning</B> [<I>option</I>]
<DD> Set warning information level. "<I>option</I>" may be one
of the following:
<DL>
<DT><B>default</B>
<DD> The default setting is equivalent to all the other
options (<B>align</B>, <B>limit</B>, <B>redirect</B>,
and <B>none</B>) being disabled.
<DT><B>align</B>
<DD> Generate warnings during a "<B>cif see</B>" command
if the alignment of geometry is on fractional lambda.
Normally, magic allows contacts to be drawn at
half-lambda positions. If this violates DRC requirements
for the minimum output grid, this warning setting can be
used to detect such violations.
<DT><B>limit</B>
<DD> Limit warnings to the first 100 warnings or errors only.
<DT><B>redirect</B> [<I>file</I>]
<DD> Redirect all warnings to an output file named <I>file</I>.
If <I>file</I> is not given, then redirection is disabled.
<DT><B>none</B>
<DD> Do not produce any warning messages on GDS input.
</DL>
<DT> <B>write</B> <I>file</I>
<DD> Output GDSII format to "<I>file</I>" for the window's root cell.
</DL>
Options for <B>gds read</B>:
<DL>
<DT> <B>datestamp</B> [<B>yes</B>|<B>no</B>|<I>value</I>]
<DD> When reading a GDS file, the resulting layout views in magic
will be timestamped according to the declared datestamp
action. If <B>yes</B> (the default), then the creation date
timestamp from the GDS file is transferred to the layout cell.
If <B>no</B>, then the datestamp is set to zero and will be
created when the cell is saved to disk. If <I>value</I>,
then the specified value (in UNIX format of seconds since the
epoch) will be used for the layout timestamp.
<DT> <B>drccheck</B> [<B>yes</B>|<B>no</B>]
<DD> If set to <B>no</B>, then do not mark cells read from GDS as
requiring DRC checks (default <B>yes</B>).
<DT> <B>flatglob</B> [<B>none</B>|<I>string</I>]
<DD> Flatten cells by name pattern on input. This is the more
exacting version of <B>flatten</B>, as it allows specific
cells to be flattened. Each call with an argument <I>string</I>
adds <I>string</I> to the list of name patterns to be checked.
A call with the option <B>none</B> will remove all patterns.
A call with no options will return the list of string patterns
that will be applied to inputs. The strings may use standard
shell-type glob patterns, with <B>*</B> for any length string
match, <B>?</B> for any single character match, <B>\</B> for
special characters, and <B>[]</B> for matching character sets
or ranges (introduced in version 8.3.102).
<DT> <B>flatten</B> [<B>yes</B>|<B>no</B>|<I>number</I>]
<DD> Flatten simple cells (e.g., contacts) on input. This helps
magic to use its contact-area representation of contacts,
and can also avoid situations where contacts are lost or
translated to "generic" types because the arrayed part of
the contacts is missing one or more residue layers. The
default number of shapes in an input to be considered
"simple" is 10, but this can be set with the <I>number</I>
argument. A <I>number</I> of zero implies <B>flatten no</B>,
and a non-zero <I>number</I> implies <B>flatten yes</B>.
Otherwise, the use of <B>yes</B> and <B>no</B> toggles the
flattening behavior without affecting any value previously
set by <B>flatten</B> <I>number</I>.
<DT> <B>maskhints</B> [<B>yes</B>|<B>no</B>|<I>layers</I>]
<DD> When set to <B>yes</B>, then after reading each cell
definition from the GDS file, magic will re-generate the
GDS output data from its internal representation of the
cell. Where the output data does not match the input
data, and where the technology file defines mask hints in
the <B>cifoutput</B> section for a GDS layer, magic will
automatically generate the mask hint property for the cell
such that writing GDS of the cell will produce exactly the
same mask data as was in the original GDS file. Alternatively
to specifying "<B>yes</B>", a comma-separated list <I>layers</I>
of GDS layers to create mask hints for can be specified
(default <B>no</B>).
<DT> <B>noduplicates</B> [<B>yes</B>|<B>no</B>]
<DD> When reading a GDS file, this option forces magic to ignore
cell definitions in the GDS file that are already present in
the database (that is, for which a cell of the same name
already exists). This can be used, for example, to pre-load
an abstract view of a cell before reading a GDS file containing
that cell. This option should be used with extreme caution,
since there is no check as to whether the existing view is
compatible with the one in the GDS file.
<DT> <B>ordering</B> [<B>yes</B>|<B>no</B>]
<DD> Forces post-ordering of subcells read from a GDS file; that
is, if a cell use is encountered before it is defined, magic
will read through the remainder of the file until it finds
the definition, read it, and then return to the original file
position to continue reading. This option is always enabled
when using <B>gds flatten</B>. Otherwise, the default behavior
is <B>ordering no</B> to avoid lengthy searches through the
GDS stream file.
<DT> <B>polygon subcells</B> [<B>yes</B>|<B>no</B>]
<DD> Put non-Manhattan polygons into subcells. Default is "no".
Normally this option is not needed. However, input layout
that defines a number of angled wires, particularly those
that are closely spaced, can cause <B>magic</B> to generate
literally millions of internal tiles. This tends to be
true in particular for corner cells in padframes for deep
submicron feature sizes, where the angled corners are
required to meet the DRC specification. When set to "yes",
each polygon encountered in the GDS input is placed in its
own uniquely-named subcell. This prevents interations with
other polygons on the same plane and so reduces tile splitting.
<DT> <B>readonly</B> [<B>yes</B>|<B>no</B>]
<DD> Set cell as "read-only". This has the effect of marking each
cell definition (using the <B>property</B> method) with the
start and end positions of the cell definition in the input
file. In subsequent output, the cell definition will be
transferred verbatim from the input to the output file. This
is useful for 3rd-party standard cells or pad cells where the
original GDS is trusted and it is desirable to bypass the
boolean operators of <B>magic</B>'s GDS reader and writer to
prevent the layout from being altered. Note that "read-only"
layout can be written to a <TT>.mag</TT> file, but the
contents of this file are representational only. It can
be useful to keep a simplified respresentation in the case
of pad cells or digital standard cells, for example, by
reading them using a GDS input style that defines only metal
layers.
<DT> <B>rescale</B> [<B>yes</B>|<B>no</B>]
<DD> Allow or disallow internal grid subdivision while reading
GDS input. Default is "yes". Normally, one wants to allow
rescaling to ensure that the GDS is displayed exactly as it
is in the input file. Occasionally, however, the GDS input
is on a very fine scale, such as nanometers, and it is
preferable to snap the input to lambda boundaries rather
than to subsplit the internal grid to such a fine value.
The "<B>cif limit</B>" function may also be used to limit
grid subdivision to a minimum value.
<DT> <B>unique</B> [<B>yes</B>|<B>no</B>]
<DD> When reading a GDS file, this option forces magic to rename
cell definitions in the database when a cell of the same name
is encountered in the GDS file. The default behavior is to
overwrite the cell with the new definition. The existing
cell is renamed by adding a suffix with an underscore and a
number. The number is incremented until the name fails to
match any known cell name in the database.
</DL>
Options for <B>gds write</B>:
<DL>
<DT> <B>addendum</B> [<B>yes</B>|<B>no</B>]
<DD> Do not output vendor (readonly) cell definitions. Only the
references will be output. This makes the output file an
addendum to any existing vendor GDS libraries.
<DT> <B>arrays</B> [<B>yes</B>|<B>no</B>]
<DD> Output arrays as individual subuses (like in CIF). Default
is "no". Normally there is no reason to do this.
<DT> <B>compress</B> [<I>value</I>]
<DD> For non-zero <I>value</I>, apply gzip-style compression to the
output stream. Per the gzip compression algorithm, <I>value</I>
represents a level of compression effort, and ranges from 1 to
9. When <I>value</I> is zero, no compression is applied and the
output is standard GDS format, and the output file extension is
".gds". When <I>value</I> is non-zero, compression is applied,
and the output file extension is ".gds.gz". With no argument,
return the current compression setting. The default compression
setting is zero (no compression applied; output is plain GDS).
<DT> <B>contacts</B> [<B>yes</B>|<B>no</B>]
<DD> Causes contacts to be written to the GDS file as subcell
arrays (experimental, introduced in version 7.3.55). This
method can produce very efficient output compared to writing
each contact cut square separately.
<DT> <B>datestamp</B> [<B>yes</B>|<B>no</B>|<I>value</I>]
<DD> When writing a GDS file, each cell definition is given a
header containing two date stamps, one for the creation date,
and one for the modification date. By default, magic writes
the cell's internal timestamp as the creation date, and sets
the modification date stamp to zero. The <B>datestamp</B>
option, if set to <B>no</B>, will also set the creation
date stamp to zero. If set to <I>value</I>, then the specified
stamp value will be output for the creation date. The stamp
value should be an integer in the format used by the UNIX
time() system call, which is the number of seconds since
January 1, 1970, or equivalently the Tcl command
"<B>clock seconds</B>". Note that very few tools make use of
the GDS date stamps. But having a valid date stamp means that
a GDS file cannot be written twice with the exact same contents,
which has implications for repositories like git. When writing
libraries, it is useful to set a date stamp tied to a version
number and apply that date stamp to all files written for the
library.
<DT> <B>labels</B> [<B>yes</B>|<B>no</B>]
<DD> Cause labels to be output when writing GDSII. Default
is "yes". Normally there is no reason not to do this.
<DT> <B>library</B> [<B>yes</B>|<B>no</B>]
<DD> Do not write the top level cell into the output GDS file, but
write only the subcells of the top level cell. Default is "no".
<DT> <B>lower</B> [<B>yes</B>|<B>no</B>]
<DD> Allow both upper and lower case in labels. Default is "yes".
<DT> <B>merge</B> [<B>yes</B>|<B>no</B>]
<DD> Concatenate connected tiles into polygons when generating
output. Depending on the tile geometry, this may make the
output file up to four times smaller, at the cost of speed
in generating the output file. Some programs like the field
equation solver HFSS won't work properly with layout broken
into many tiles; other programs like Calibre will complain
about acute angles when non-Manhattan geometry is broken
into triangles. GDS output limits polygon boundaries to
a maximum of 200 points, which limits the efficiency of the
merge method. The default value if "no"; e.g., all GDS output
is a direct conversion of tiles to rectangle and triangle
boundary records.
<DT> <B>nodatestamp</B> [<B>yes</B>|<B>no</B>]
<DD> Backwardly compatible alternative to the <B>datestamp</B>
option. Setting <B>nodatestamp yes</B> is equivalent to
setting <B>datestamp no</B> (see above).
<DT> <B>undefined</B> [<B>allow</B>|<B>disallow</B>]
<DD> Define the behavior for undefined cells (e.g., cells whose
layout contents could not be found). If allowed, then the
calls to these cells will be written to GDS even if the cell
itself is not defined in the GDS (see the <B>addendum</B>
option, above). If disallowed, the GDS file will not be
written if undefined references exist. The default behavior
is <B>disallow</B>.
</DL>
</BLOCKQUOTE>
</BLOCKQUOTE>
<H3>Summary:</H3>
<BLOCKQUOTE>
The <B>gds</B> command reads or produces GDSII output (also known as
"stream" output, or "calma" output after the name of the company
that invented the format), or sets various parameters affecting
the GDS input and output. In magic, the GDS read and write routines
are a subset of the CIF read and write routines, and so it is
important to note that certain <B>cif</B> command options (q.v.) also
affect GDS input and output. In particular, <B>cif istyle</B> and
<B>cif ostyle</B> set the input and output styles from the technology
file, respectively. <P>
If no option is given, a CALMA GDS-II stream file is produced for the
root cell, with the default name of the root cell definition and the
filename extension ".gds". <P>
<B>gds read</B> will read both (gzip-)compressed and uncompressed GDS
files. <B>gds write</B> will only write compressed files as indicated
by the <B>gds compress</B> setting. <P>
</BLOCKQUOTE>
<H3>Implementation Notes:</H3>
<BLOCKQUOTE>
<B>gds</B> is implemented as a built-in function in <B>magic</B>.
The <B>calma</B> command is an alias for <B>gds</B> and is
exactly equivalent.
</BLOCKQUOTE>
<H3>Bugs:</H3>
<BLOCKQUOTE>
<UL>
<LI> The <B>cif</B> command options that affect GDS input and output
should <I>really</I> be duplicates as options of the GDS command.
<LI> GDS input is "interpreted" through boolean operations in the
technology file definition, and so it is not guaranteed that
all input will be read correctly.
<LI> Not all non-Manhattan geometry is read correctly.
<LI> The input can be fouled up if the magic grid is rescaled during
input. This error can be avoided by scaling the grid prior
to GDS read-in.
<LI> "polygon subcells" in GDS creates a duplicate image of the
layout read into the subcells; this needs to be fixed.
</UL>
</BLOCKQUOTE>
<H3>See Also:</H3>
<BLOCKQUOTE>
<A HREF=cif.html><B>cif</B></A> <BR>
</BLOCKQUOTE>
<P><IMG SRC=graphics/line1.gif><P>
<TABLE BORDER=0>
<TR>
<TD> <A HREF=commands.html>Return to command index</A>
</TR>
</TABLE>
<P><I>Last updated:</I> May 10, 2022 at 9:14am <P>
</BODY>
</HTML>