124 lines
4.6 KiB
Plaintext
124 lines
4.6 KiB
Plaintext
|
|
LEF extensions to Magic-7.2
|
||
|
|
-------------------------------------
|
||
|
|
1) Ports
|
||
|
|
|
||
|
|
A new method exists for declaring a cell to be a subcircuit.
|
||
|
|
This involves the creation of ports, which are a special kind
|
||
|
|
of label. The existence of any port in a cell marks that cell
|
||
|
|
as a subcircuit, which causes it to be treated differently
|
||
|
|
during the process of extraction and netlist generation:
|
||
|
|
|
||
|
|
a) Subcircuits are extracted as usual, except for the presence
|
||
|
|
of the "port" keyword for each port in the .ext file.
|
||
|
|
|
||
|
|
b) Exttosim (ext2sim) operates as usual, because the netlist is
|
||
|
|
not hierarchical.
|
||
|
|
|
||
|
|
c) Exttospice (ext2spice) will generate an "X" record for each
|
||
|
|
instance of the subcircuit cell, rather than flattening the
|
||
|
|
cell. To simulate in SPICE, a ".subckt" record for the cell
|
||
|
|
must be added to the SPICE deck. This behavior can be
|
||
|
|
subverted in the Tcl-based magic by using "exttospice subcircuits
|
||
|
|
off", in which case all subcircuits will be flattened.
|
||
|
|
|
||
|
|
d) The "extresis" command will ignore the contents of subcircuits.
|
||
|
|
On the other hand, after doing "extresis geometry", subsequent
|
||
|
|
use of "extresis" will generate a ".fh" file containing the
|
||
|
|
detailed three-dimensional geometry of the cell in the format
|
||
|
|
of nodes and segments used by the FastHenry field equation
|
||
|
|
solver. This is unrelated to the LEF module.
|
||
|
|
|
||
|
|
A new command "port" turns labels into ports. The syntax of
|
||
|
|
the command is:
|
||
|
|
|
||
|
|
port [option], where [option] is one of:
|
||
|
|
|
||
|
|
class [type] get [set] port class type
|
||
|
|
use [type] get [set] port use type
|
||
|
|
index [number] get [set] port number
|
||
|
|
connections [dir...] get [set] port connection directions
|
||
|
|
make [index] [dir...] turn a label into a port
|
||
|
|
remove turn a port back into a label
|
||
|
|
help print this help information
|
||
|
|
<index> [<directions>]
|
||
|
|
|
||
|
|
To use the port command, a label must first exist, and the cursor box
|
||
|
|
must overlap the label, and only that label.
|
||
|
|
|
||
|
|
The index indicates the order of the port in the argument list of the
|
||
|
|
subcircuit definition and calls. The ordering of ports must match
|
||
|
|
the order of arguments to any .subckt record used in a SPICE simulation
|
||
|
|
of the cell.
|
||
|
|
|
||
|
|
The directions given to "connections" must be one or more of "n", "s",
|
||
|
|
"e", and "w" (with no spaces in between; e.g., "port connections nsew").
|
||
|
|
They indicate the edge of the port to which connections may be made to
|
||
|
|
the cell. This is unused by LEF, which uses more detailed information
|
||
|
|
about metal routing and obstructions inside the cell to determine how
|
||
|
|
to attach to a pin. In the abbreviated command usage "port <index>",
|
||
|
|
a default direction will be determined by the position of the text on
|
||
|
|
the label.
|
||
|
|
|
||
|
|
Class and use types correspond to LEF classes and uses for pins.
|
||
|
|
|
||
|
|
Valid class types are:
|
||
|
|
default
|
||
|
|
input
|
||
|
|
output
|
||
|
|
tristate
|
||
|
|
bidirectional, inout
|
||
|
|
feedthrough, feedthru
|
||
|
|
|
||
|
|
Valid use types are:
|
||
|
|
default
|
||
|
|
analog
|
||
|
|
signal, digital
|
||
|
|
power
|
||
|
|
ground
|
||
|
|
clock
|
||
|
|
|
||
|
|
2) Properties
|
||
|
|
|
||
|
|
While the "port" command and method specifies information about pins,
|
||
|
|
LEF also supports information about the cell itself. The "property"
|
||
|
|
command is a general-purpose interface for attaching key-value pairs
|
||
|
|
to a cell, which are saved in the output and may be parsed by any
|
||
|
|
function. Keys relevant to the LEF module begin with the text "LEF".
|
||
|
|
LEF-related keys are:
|
||
|
|
|
||
|
|
LEFclass corresponding to LEF "CLASS"
|
||
|
|
LEFsource corresponding to LEF "SOURCE"
|
||
|
|
LEFsymmetry corresponding to LEF "SYMMETRY"
|
||
|
|
|
||
|
|
The string value attached to each key is written to the LEF output
|
||
|
|
verbatim, thus any value may be used that is acceptable LEF syntax.
|
||
|
|
|
||
|
|
The property command has the following syntax:
|
||
|
|
|
||
|
|
property [<key> [<value>]]
|
||
|
|
|
||
|
|
With no arguments, "property" returns all the key-value pairs defined
|
||
|
|
for the current edit cell. Given the key argument only, it returns
|
||
|
|
the value attached to the indicated key. Given both arguments, it
|
||
|
|
assigns the string value to the indicated key. A value which is an
|
||
|
|
empty string ("") will cause the key to become undefined. Values
|
||
|
|
which consist of more than one word must be enclosed in quotes.
|
||
|
|
|
||
|
|
Example: property LEFsymmetry "X Y"
|
||
|
|
|
||
|
|
3) LEF file generation
|
||
|
|
|
||
|
|
A LEF-definition file with extension ".lef" may be written for each
|
||
|
|
cell. This file contains detailed information required for placing
|
||
|
|
and routing the cell, including all information regarding pins,
|
||
|
|
ports, and obstructions on the metallization layers. The syntax of
|
||
|
|
the LEF command is:
|
||
|
|
|
||
|
|
lef write [<cell>]
|
||
|
|
|
||
|
|
to write a .lef file for a single cell. If <cell> is not specified,
|
||
|
|
then the output will be for the current edit cell. All cells in a
|
||
|
|
design my be written using the syntax:
|
||
|
|
|
||
|
|
lef writeall
|