2017-04-25 14:41:48 +02:00
|
|
|
<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>
|
2024-01-09 22:37:00 +01:00
|
|
|
<TITLE>Magic-8.3 Command Reference</TITLE>
|
2017-04-25 14:41:48 +02:00
|
|
|
<BODY BACKGROUND=graphics/blpaper.gif>
|
2024-01-09 22:37:00 +01:00
|
|
|
<H1> <IMG SRC=graphics/magic_title8_3.png ALT="Magic VLSI Layout Tool Version 8.3">
|
2017-04-25 14:41:48 +02:00
|
|
|
<IMG SRC=graphics/magic_OGL_sm.gif ALIGN="top" ALT="*"> </H1>
|
|
|
|
|
|
|
|
|
|
<H2>ext2spice, exttospice</H2>
|
|
|
|
|
<HR>
|
|
|
|
|
Convert extracted file(s) to a SPICE format file.
|
|
|
|
|
<HR>
|
|
|
|
|
|
|
|
|
|
<H3>Usage:</H3>
|
|
|
|
|
<BLOCKQUOTE>
|
2022-01-21 16:44:13 +01:00
|
|
|
<B>ext2spice</B> [<I>option</I>] [<I>cellname</I>] <BR><BR>
|
2017-04-25 14:41:48 +02:00
|
|
|
<BLOCKQUOTE>
|
|
|
|
|
where <I>option</I> is one of the following:
|
|
|
|
|
<DL>
|
|
|
|
|
<DT> [<B>run</B>] [<I>runtime_options</I>]
|
|
|
|
|
<DD> Run <B>ext2spice</B> on current cell, with command-line options
|
|
|
|
|
(see Summary, below).
|
|
|
|
|
<DT> <B>default</B>
|
|
|
|
|
<DD> Reset to default values
|
2025-10-06 17:50:38 +02:00
|
|
|
<DT> <B>format hspice</B>|<B>spice2</B>|<B>spice3</B>|<B>ngspice</B>|<B>cdl</B>
|
2017-04-25 14:41:48 +02:00
|
|
|
<DD> Set output format. <B>spice3</B> is the default,
|
|
|
|
|
for compatibility with <B>tclspice</B>. This is a
|
|
|
|
|
change from previous versions of magic, where the
|
2025-10-06 17:50:38 +02:00
|
|
|
default was <B>hspice</B>. <B>ngspice</B> is set as
|
|
|
|
|
default by the <B>ext2spice lvs</B> option. <B>cdl</B>
|
|
|
|
|
format incorporates some common syntax used by CDL format
|
|
|
|
|
files, including placing a slash between a subcircuit's
|
|
|
|
|
pins and the subcircuit name.
|
2017-04-25 14:41:48 +02:00
|
|
|
<DT> <B>rthresh</B> [<I>value</I>]
|
|
|
|
|
<DD> Set resistance threshold value. Lumped resistances
|
|
|
|
|
below this value will not be written to the output. The
|
|
|
|
|
value is in ohms, or may be the keyword <B>infinite</B>
|
|
|
|
|
to prohibit writing any lumped resistances to the output.
|
|
|
|
|
<DT> <B>cthresh</B> [<I>value</I>]
|
|
|
|
|
<DD> Set capacitance threshold value. The value is in femtofarads,
|
|
|
|
|
any parasitic capacitances to the output.
|
|
|
|
|
<DT> <B>merge</B> [<I>merge_option</I>]
|
|
|
|
|
<DD> Merge parallel devices/transistors. The valid merge options are:
|
|
|
|
|
<BLOCKQUOTE>
|
|
|
|
|
<DL>
|
|
|
|
|
<DT><B>conservative</B>
|
|
|
|
|
<DD> Merge transistors and capacitors having the same device
|
|
|
|
|
type and node connections and having the same width and
|
2022-01-21 16:44:13 +01:00
|
|
|
length. Device multipliers ("M=") are output for each
|
|
|
|
|
set of merged devices.
|
2017-04-25 14:41:48 +02:00
|
|
|
<DT><B>aggressive</B>
|
|
|
|
|
<DD> Merge transistors having the same node
|
|
|
|
|
connections and having the same length. Widths
|
|
|
|
|
are summed in the final output. Merge any capacitors
|
|
|
|
|
having the same device type and node connections.
|
|
|
|
|
Capacitance is summed in the final output.
|
|
|
|
|
<DT><B>none</B>
|
|
|
|
|
<DD> Do not merge any devices.
|
|
|
|
|
</DL>
|
|
|
|
|
</BLOCKQUOTE>
|
|
|
|
|
<DT> <B>extresist on</B>|<B>off</B>
|
|
|
|
|
<DD> Incorporate output from the command <B>extresist</B> into
|
|
|
|
|
the final SPICE file.
|
|
|
|
|
<DT> <B>resistor tee</B> [<B>on</B>|<B>off</B>]
|
|
|
|
|
<DD> Model resistor capacitance as a T-network. Each resistor
|
|
|
|
|
device is split into two, with all substrate and overlap
|
|
|
|
|
capacitance placed on the node between the two half-length
|
|
|
|
|
devices. Without this option, resistor devices lose all
|
|
|
|
|
parasitic capacitance information, and <B>ext2spice</B>
|
|
|
|
|
may produce warnings about unknown nodes. However, use of
|
|
|
|
|
this option may conflict with LVS (layout-vs.-schematic),
|
|
|
|
|
when only one resistor is expected per drawn device.
|
2022-01-21 16:44:13 +01:00
|
|
|
<DT> <B>subcircuit</B> [<B>on</B>|<B>off</B>]
|
|
|
|
|
<DD> When set to <B>on</B> (the default), and if the cell selected
|
|
|
|
|
for SPICE output has defined ports on the top level, then
|
|
|
|
|
the cell becomes a subcircuit definition in the output, and
|
|
|
|
|
the output has no top-level calls to any devices. This
|
|
|
|
|
format is appropriate for including in a testbench netlist,
|
|
|
|
|
for example. If the top-level cell does not have defined
|
|
|
|
|
ports, then there is no way for magic to determine what
|
|
|
|
|
the ports might be, or what order they may be in, making
|
|
|
|
|
it impossible to generate a consistent subcircuit, so in
|
|
|
|
|
the absence of ports, this option has no function.
|
|
|
|
|
Ports are defined by the use of the <B>port</B> method for
|
|
|
|
|
labeling input and output ports. When option
|
|
|
|
|
<B>subcircuit</B> is set to <B>off</B>, the top-level
|
|
|
|
|
circuit will be the top level of the netlist, and it
|
|
|
|
|
will have no associated subcircuit definition.
|
2025-09-26 15:18:43 +02:00
|
|
|
<DT> <B>subcircuit top</B> [<B>on</B>|<B>off</B>|<B>auto</B>]
|
2022-01-21 16:44:13 +01:00
|
|
|
<DD> This variant of the <B>subcircuit</B> option controls
|
|
|
|
|
whether or not ext2spice generates a .subckt wrapper
|
2025-09-26 15:18:43 +02:00
|
|
|
around the top-level circuit. If <B>on</B> is specified,
|
|
|
|
|
a ".subckt" wrapper will always be output, regardless of
|
|
|
|
|
whether or not ports are defined in the layout. If
|
|
|
|
|
<B>off</B>, no ".subckt" wrapper will be output, and
|
|
|
|
|
ports will be ignored (They will be regular nets in the
|
|
|
|
|
output netlist). If set to <B>auto</B>, magic will
|
|
|
|
|
check whether or not ports are defined in the layout,
|
|
|
|
|
and generate a ".subckt" wrapper only if ports have
|
|
|
|
|
been defined.
|
2022-01-21 16:44:13 +01:00
|
|
|
<DT> <B>subcircuit descend</B> [<B>on</B>|<B>off</B>]
|
|
|
|
|
<DD> When set to <B>off</B>, the <B>subcircuit descend</B>
|
|
|
|
|
option will not descend into any subcells below the
|
|
|
|
|
top level, writing only the top-level circuit to the
|
|
|
|
|
output. The default is <B>on</B>. This option can be
|
|
|
|
|
useful for writing out digital circuits made from
|
|
|
|
|
standard cells, since the digital subcircuits can usually
|
|
|
|
|
be included from a vendor library.
|
|
|
|
|
<DT> <B>scale</B> [<B>on</B>|<B>off</B>]
|
|
|
|
|
<DD> When set to <B>on</B>, the scale value is set by the
|
|
|
|
|
SPICE "<B><TT>.scale</TT></B>" card, recognized by some
|
|
|
|
|
SPICE parsers. All device lengths, widths, and areas
|
|
|
|
|
are then given in integer units (internal database
|
|
|
|
|
units). When set to <B>off</B>, all device widths,
|
|
|
|
|
lengths, and areas are given in unscaled, physical
|
|
|
|
|
dimensions.
|
|
|
|
|
<DT> <B>short</B> [<B>voltage</B>|<B>resistor</B>|<B>none</B>]
|
|
|
|
|
<DD> Determines behavior with respect to ports with different
|
|
|
|
|
names connected to the same net. SPICE does not have a
|
|
|
|
|
universal method for describing a net with more than one
|
|
|
|
|
name. A common way of handling this is by separating
|
|
|
|
|
differently-named parts of a net with a zero-ohm ideal
|
|
|
|
|
resistor or a zero-volt DC source. "<B>ext2spice short</B>"
|
|
|
|
|
uses one of these methods to preserve duplicate port names.
|
|
|
|
|
"<B>ext2spice short resistor</B>" uses the zero-ohm resistor
|
|
|
|
|
method, which "<B>ext2spice short voltage</B>" uses the
|
|
|
|
|
zero-volt source method. "<B>ext2spice short none</B>"
|
|
|
|
|
reverts to the default behavior, which is to remove all
|
|
|
|
|
port names except for one from the netlist.
|
|
|
|
|
<DT> <B>hierarchy</B> [<B>on</B>|<B>off</B>]
|
|
|
|
|
<DD> When set to <B>on</B>, magic will extract a hierarchical
|
|
|
|
|
representation of the circuit, in which the cell hierarchy
|
|
|
|
|
of the layout is represented in SPICE by
|
|
|
|
|
"<B><TT>.subckt</TT></B>" macros. "ext2spice hierarchy"
|
|
|
|
|
does not require that subcircuits have port labels. Each
|
|
|
|
|
subcircuit will be analyzed for port connections, and port
|
|
|
|
|
connections will be consistent in the SPICE output between
|
|
|
|
|
the subcircuit definition (".subckt") and instantiated
|
|
|
|
|
calls ("X") to that subcircuit.
|
|
|
|
|
<DT> <B>blackbox</B> [<B>on</B>|<B>off</B>]
|
|
|
|
|
<DD> When set to "on", views marked as abstract will be output
|
|
|
|
|
as subcircuit calls ("X") but there will be no associated
|
|
|
|
|
subcircuit definition output. A circuit is considered
|
|
|
|
|
"abstract" if at the time of extraction it has a property
|
|
|
|
|
named "LEFview". A cell will automatically be given this
|
|
|
|
|
property if it is read from a LEF input file. It may also
|
|
|
|
|
be given this property using the "<B>property</B>" command.
|
|
|
|
|
In order for the blackbox view to be meaningful, the
|
|
|
|
|
subcell must declare ports (see the "port" command).
|
|
|
|
|
<DT> <B>renumber</B> [<B>on</B>|<B>off</B>]
|
|
|
|
|
<DD> When set to <B>on</B>, subcircuit calls (see above; only
|
|
|
|
|
used for certain options such as "subcircuit", "hierarchy",
|
|
|
|
|
or with extracted device types "subcircuit" or "rsubcircuit")
|
|
|
|
|
are numbered sequentially "X1", "X2", etc., as encountered
|
|
|
|
|
by the extractor. When set to <B>off</B>, subcircuit
|
|
|
|
|
calls (when used with options "subcircuit" or "hierarchy",
|
|
|
|
|
but not applying to low-level extracted subcircuit devices)
|
|
|
|
|
will be rendered in the SPICE output file as "X" followed
|
|
|
|
|
by the ID (name) of the cell instance.
|
|
|
|
|
<DT> <B>global</B> [<B>on</B>|<B>off</B>]
|
|
|
|
|
<DD> When set to <B>on</B> or default, unconnected global nets
|
|
|
|
|
of the same name in subcells are merged in the output. When
|
|
|
|
|
set to <B>off</B>, such nets are left unconnected.
|
|
|
|
|
<DT> <I>cellname</I>
|
|
|
|
|
<DD> Name of the cell to generate output for. This item is optional;
|
|
|
|
|
if not specified, then ext2spice generates output for the
|
|
|
|
|
current edit cell.
|
|
|
|
|
<DT> <B>lvs</B>
|
|
|
|
|
<DD> Apply settings appropriate for running LVS (layout vs. schematic).
|
|
|
|
|
These settings are as follows:
|
|
|
|
|
<UL>
|
|
|
|
|
<LI> hierarchy on
|
|
|
|
|
<LI> format ngspice
|
|
|
|
|
<LI> cthresh infinite
|
|
|
|
|
<LI> rthresh infinite
|
|
|
|
|
<LI> renumber off
|
|
|
|
|
<LI> scale off
|
|
|
|
|
<LI> blackbox on
|
|
|
|
|
<LI> subcircuit top auto
|
|
|
|
|
<LI> global off
|
|
|
|
|
</UL>
|
|
|
|
|
This command applies the settings but does not generate output
|
|
|
|
|
(<I>i.e.</I>, does not run <B>ext2spice</B>), so that settings
|
|
|
|
|
can be overridden if necessary. <BR>
|
|
|
|
|
(The <B>lvs</B> option was introduced in version 8.2.79).
|
2017-04-25 14:41:48 +02:00
|
|
|
<DT> <B>help</B>
|
|
|
|
|
<DD> Print help information.
|
|
|
|
|
</DL>
|
|
|
|
|
</BLOCKQUOTE>
|
|
|
|
|
</BLOCKQUOTE>
|
|
|
|
|
|
|
|
|
|
<H3>Summary:</H3>
|
|
|
|
|
<BLOCKQUOTE>
|
|
|
|
|
Without options, or with the option <B>run</B>,
|
|
|
|
|
the <B>ext2spice</B> command converts the hierarchical extracted
|
|
|
|
|
netlist information produced by the <B>extract</B> command in
|
|
|
|
|
a series of <TT>.ext</TT> files into a flattened representation
|
|
|
|
|
in SPICE format, used for detailed analog simulation. <P>
|
|
|
|
|
|
|
|
|
|
<I>runtime_options</I> may be passed on the command line, and
|
|
|
|
|
represent the original command-line options passed to the
|
|
|
|
|
standalone version of ext2spice. A number of the original
|
|
|
|
|
command-line options have been deprecated in the Tcl-based
|
|
|
|
|
version, and some are duplicated by other <B>ext2spice</B> options.
|
|
|
|
|
Valid <I>runtime_options</I> are:
|
|
|
|
|
<BLOCKQUOTE>
|
|
|
|
|
<DL>
|
2022-01-21 16:44:13 +01:00
|
|
|
<DT> <B>-M</B>
|
|
|
|
|
<DD> Aggressive merging of devices. If the lengths of FET
|
|
|
|
|
devices connected in parallel are equal, then add their
|
|
|
|
|
widths together to form a single device. Overrides any
|
|
|
|
|
value specified by the "ext2spice merge" command option.
|
|
|
|
|
<DT> <B>-m</B>
|
|
|
|
|
<DD> Conservative merging of devices. If the lengths and
|
|
|
|
|
widths of FET devices connected in parallel are equal,
|
|
|
|
|
then add their widths together to form a single device.
|
|
|
|
|
Overrides any value specified by the "ext2spice merge"
|
|
|
|
|
command option.
|
|
|
|
|
<DT> <B>-o</B> <I>filename</I>
|
|
|
|
|
<DD> Save the output as file <I>filename</I> (<I>filename</I>
|
|
|
|
|
must include any file extension, as there is no standard
|
|
|
|
|
extension for SPICE files).
|
|
|
|
|
<DT> <B>-j</B> <I>device</I><B>:</B><I>class</I>
|
|
|
|
|
[<B>/</B><I>subclass</I>] <B>/</B><I>subsnode</I>
|
|
|
|
|
<DD> Override values of resistance class, substrate resistance
|
|
|
|
|
class, and substrate node name for device type <I>device</I>.
|
|
|
|
|
Resistance classes are indexed by number and must match the
|
|
|
|
|
definition in the technology file's extract section.
|
2025-10-06 17:50:38 +02:00
|
|
|
<DT> <B>-f spice2</B>|<B>spice3</B>|<B>hspice</B>|<B>ngspice</B>|<B>cdl</B>
|
2022-01-21 16:44:13 +01:00
|
|
|
<DD> Choose the output SPICE format for compatibility with
|
|
|
|
|
different versions of SPICE.
|
|
|
|
|
<DT> <B>-d</B>
|
|
|
|
|
<DD> Distribute junction areas and perimeters. The Magic extractor
|
|
|
|
|
computes area and perimter values per <I>node</I>, not per
|
|
|
|
|
<I>device</I>. For devices that share a node, Magic cannot
|
|
|
|
|
distinguish between the devices (for parasitic calculations,
|
|
|
|
|
it's not necessary to distinguish between the devices).
|
|
|
|
|
Normally, when generating device output, Magic writes the
|
|
|
|
|
lumped area and perimeter values along with the first device
|
|
|
|
|
attached to a node, and sets the area and perimeter values
|
|
|
|
|
for all remaining devices on that node to zero. The <B>-d</B>
|
|
|
|
|
option causes Magic to distribute the node area and perimeter
|
|
|
|
|
evenly among all devices attached to that node.
|
2017-04-25 14:41:48 +02:00
|
|
|
<DT> <B>-B</B>
|
|
|
|
|
<DD> Don't output transistor or node attributes in the SPICE file.
|
|
|
|
|
This option will also disable the output of information such
|
|
|
|
|
as the area and perimeter of source and drain diffusion and
|
|
|
|
|
the FET substrate.
|
|
|
|
|
<DT> <B>-F</B>
|
|
|
|
|
<DD> Don't output nodes that aren't connected to devices (floating
|
|
|
|
|
nodes).
|
|
|
|
|
<DT> <B>-t</B><I>char</I>
|
|
|
|
|
<DD> Trim characters from node names when writing the output file.
|
|
|
|
|
<I>char</I> should be either "<B>#</B>" or "<B>!</B>". The
|
|
|
|
|
option may be used twice if both characters require trimming.
|
|
|
|
|
<DT> <B>-y</B> <I>num</I>
|
|
|
|
|
<DD> Select the precision for outputting capacitors. The default is
|
|
|
|
|
1 which means that the capacitors will be printed to a precision
|
|
|
|
|
of 0.1 fF.
|
|
|
|
|
<DT> <B>-J</B> <B>hier</B>|<B>flat</B>
|
|
|
|
|
<DD> Select the source/drain area and perimeter extraction algorithm.
|
|
|
|
|
If <B>hier</B> is selected then the areas and perimeters are
|
|
|
|
|
extracted only within each subcell. For each device in a
|
|
|
|
|
subcell the area and perimeter of its source and drain within
|
|
|
|
|
this subcell are output. If two or more devices share a
|
|
|
|
|
source/drain node then the total area and perimeter will be
|
|
|
|
|
output in only one of them and the other will have 0. If
|
|
|
|
|
<B>flat</B> is selected the same rules apply, only the scope
|
|
|
|
|
of search for area and perimeter is the whole netlist. In
|
|
|
|
|
general, <B>flat</B> (which is the default) will give accurate
|
|
|
|
|
results (it will take into account shared sources/drains).
|
2023-07-30 02:36:46 +02:00
|
|
|
<DT> <B>-p</B> <I>path</I>
|
|
|
|
|
<DD> Search the directory location <I>path</I> for .ext format
|
|
|
|
|
files. This option is typically used with the "<B>extract
|
|
|
|
|
path</B> <I>path</I>" command, because extraction and netlist
|
|
|
|
|
generation are two independent steps. If this option is not
|
|
|
|
|
specified, then by default the .ext file is expected to be in
|
|
|
|
|
the same location as the corresponding .mag file, and failing
|
|
|
|
|
that, the search path for .ext files is the same as the search
|
|
|
|
|
path for .mag files.
|
2017-04-25 14:41:48 +02:00
|
|
|
</DL>
|
|
|
|
|
</BLOCKQUOTE>
|
|
|
|
|
|
|
|
|
|
With options, the command sets various parameters affecting the
|
|
|
|
|
output format and content. <P>
|
|
|
|
|
</BLOCKQUOTE>
|
|
|
|
|
|
|
|
|
|
<H3>Implementation Notes:</H3>
|
|
|
|
|
<BLOCKQUOTE>
|
|
|
|
|
<B>ext2spice</B> is implemented as a separate loadable Tcl package,
|
|
|
|
|
but one which depends on the presence of the standard "tclmagic"
|
|
|
|
|
package. <B>magic</B> is set up with a placeholder command for
|
|
|
|
|
<B>ext2spice</B>, and will automatically load the Tcl package when
|
|
|
|
|
this command is invoked. <P>
|
|
|
|
|
|
|
|
|
|
<B>exttospice</B> is an alias for <B>ext2spice</B>, to satisfy the
|
|
|
|
|
grammatically anal retentive.
|
2022-01-21 16:44:13 +01:00
|
|
|
|
|
|
|
|
<B>ext2spice</B> is also implemented as a script to be run from
|
|
|
|
|
the shell command line, where it executes magic in batch mode
|
|
|
|
|
(i.e., using the <B>-dnull</B> option) and runs the ext2spice
|
|
|
|
|
command automatically. With this usage, the syntax is:
|
|
|
|
|
<BLOCKQUOTE>
|
|
|
|
|
<B>ext2spice</B> [ <I>magic_options</I> <B>--</B> ]
|
|
|
|
|
<I>ext2spice_runtime_options ext_file</I>
|
|
|
|
|
</BLOCKQUOTE>
|
|
|
|
|
The double-dash separates command options passed to magic on
|
|
|
|
|
startup (such as "<B>-T</B> <I>technology</I>" to specify the
|
|
|
|
|
technology) from those runtime options (see above) passed to
|
|
|
|
|
the <B>ext2spice</B> command.
|
2017-04-25 14:41:48 +02:00
|
|
|
</BLOCKQUOTE>
|
|
|
|
|
|
|
|
|
|
<H3>See Also:</H3>
|
|
|
|
|
<BLOCKQUOTE>
|
|
|
|
|
<A HREF=extract.html><B>extract</B></A> <BR>
|
|
|
|
|
<A HREF=ext2sim.html><B>ext2sim</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>
|
2022-01-21 16:44:13 +01:00
|
|
|
<P><I>Last updated:</I> September 17, 2021 at 10:12am <P>
|
2017-04-25 14:41:48 +02:00
|
|
|
</BODY>
|
|
|
|
|
</HTML>
|