Browser policy: we strive to support all recent and popular browsers for proper functioning; using a less recent browser, this site may suffer from visual defects, as well as minor functional defects. | |
| |
home > documentation
| | print |
TECCNAMESYNOPSISOPTIONSDESCRIPTIONTHE ELEMENT DEFINITION FILEEXAMPLEFILESSEE ALSODIAGNOSTICSNAME |
tecc - technology compiler for space
|
SYNOPSIS |
tecc [-sten] [-m maskdatafile] [-p process]
file
|
OPTIONS |
The following options can be specified:
|
|
-s
|
|
Silent mode.
|
|
-t
|
|
Table-format output file goes to stdout.
|
|
-e
|
|
Print expanded condition list for each new mask and
element.
|
|
-n
|
|
Do not compress table-format element-definition file.
This option is useful during element-definition file
development. It makes tecc run faster, and
space somewhat slower.
|
|
Specifies the maskdatafile. Default, the maskdatafile is
obtained from the process directory.
|
|
Specifies the process. The default process is determined
by the current project directory or, if it is defined, the
environment variable ICDPROCESS. process can be a
process name, a process number or a process directory.
|
DESCRIPTION |
The program tecc acts as a pre-processor for
technology descriptions for the circuit extraction program
space. From a user-defined element-definition file,
tecc produces a table-format element-definition file
that can be used as input for space.
The user-defined input file should have the extension
'.s', while the table-format output file will be
called to the input file with '.t' substituted
for '.s'.
|
THE ELEMENT DEFINITION FILE |
In the user-defined element-definition file the elements
are listed that can be recognized from the layout
description. Here, we only describe some basics of the
element definition file. For a full description, see the
different Space User Manuals.
For each of the elements, at least a name and a condition
list has to be specified.
The name of an element is used to identify the element
when error messages are generated or, for transistor
elements, to identify the element in the circuit that is
extracted. It is not allowed to use the same name in more
than one element definition.
A condition list specifies how the presence of a
particular element depends on the presence or absence of the
different masks. The condition list is a boolean expression
where the masks are used as the variables of the expression.
In the expression, the AND operation is performed using
simple concatenation, the OR operation is performed using
the '|' character (AND has precedence over OR)
and the INVERT operation is performed using the
'!' character. Parentheses may be used to nest
the expression.
References to masks in adjacent areas can be made by
preceding the mask names with a '-' character,
or a '=' character. The following
(cross-section) gives an example.
------------+ +-------------
=in | | -in
------------+ +-------------
+------------------------------
| ps -ps
+------------------------------
------------------------------------------
substrate
When preceding the mask name with a '-'
character, a reference is made to a mask that is in an
adjacent area. When preceding the mask name with a
'=' character, a reference is made to a mask
that is in an area that is opposite to the area that
contains the masks preceded with the '-' sign.
The above can be used to define the elements that are
present on the boundary between two regions of different
mask combinations (e.g. edge capacitances) or elements that
are present between the boundaries themselves (e.g. lateral
capacitances between parallel wires).
In the following, the syntax and semantics of the
element-definition file is described. The element-definition
file may contain specifications for, among other things, the
units, the key list, the resize list, the new list, the
conductor elements, the transistor elements, the contact
elements and the capacitance elements. Each of these
specifications is optional but their order is fixed.
|
|
unit variable value
.
.
With one of the above commands, the unit of a variable in
the conductor list, the contact list or the capacitance list
is specified. The string variable can be either
resistance to specify the unit for sheet resistance,
c_resistance to specify the unit for contact
resistance, a_capacitance to specify the unit for
area capacitance, e_capacitance to specify the unit
for edge capacitance (or - if the capacitance is specified
by means of distance, capacitivity pairs - for lateral
capacitance), capacitance to specify the unit for
capacitance, distance to specify the unit for
distance in distance, capacitivity pairs, or resize
to specify the unit for resizing masks. The unit of each
variable is specified by value, expressed in S.I.
units.
|
|
keys: mask1 mask2 ... maskN
In the key list the masks are enumerated that should be
used as key masks during element recognition. Based on the
key masks tecc produces a hash table that allows
space to find circuit elements without separately
checking the element conditions that refer to the presence
or absence of the key masks. Adjacent masks (that are
specified by preceding them with a '-' or
'=' character) might also be used as a key mask.
By carefully choosing the key masks, the speed of element
recognition will be optimal, while the hash table will be
not too large (the size of the hash table will be equal to 2
^ N, where N is the number of key masks).
When no key list is specified, but
maxkeys N
is specified instead, tecc will select the key
masks itself. Up to a maximum of N, tecc will select
the masks that are most frequently used for specifying the
element conditions.
When neither a key list nor a maximum number of keys is
specified, tecc will assume that maxkeys is equal to
12.
|
|
Resize mask specification |
|
resize: condition_mask : mask : value
.
.
This command allows to grow masks with a certain value
(when a positive value is specified) or shrink masks with a
certain value (when a negative value is specified). The
second mask that is specified must be equal to the condition
mask that is specified, and they must be original mask names
(e.g. not a newly created mask name). For one mask, more
than one resize statement may be specified.
|
|
new: condition_list : name
.
.
This command allows to create a new mask from the
combination of other masks. The new mask, given by
name, is defined everywhere where the combination of
masks satisfies the condition list of the specification. The
characters '-' and '=' may not be
used in the condition list for a new mask. Apart from the
fact that the new command may be used to develop more
compact element definition files, it can also be used to
define one or more substrate layers.
|
|
conductors [ type ] :
name : condition_list : mask : sheet-resistivity
[ : carrier_type]
.
.
The conductor list contains the definitions for the
conducting layers in the circuit. For each conductor
specification, a specification of the actual conductor mask
and a specification of the sheet-resistivity (in ohms) is
required. For bipolar devices in particular, it is also
necessary to specify the carrier-type of the
conductor. The type can be n for n doped conductors,
p for p doped conductors and m otherwise. The
default carrier-type is m.
Default, when extracting resistances, linear resistances
will be extracted for a conductor. However, when a conductor
type is specified with a conductor list, the extracted
resistances for all conductors in that list will be of the
specified type. An element definition file may contain more
than one conductor list.
|
|
The field-effect transistor list |
|
fets:
name : condition_list : mask_g mask_ds [ condition_list ]
|
|
.
.
For a field-effect transistor (e.g. MOS or junction FET),
the name and the condition list are followed by a
specification of the gate mask mask_g and the
drain/source mask mask_ds. The gate mask and the
drain/source mask must be masks that are defined as a
conductor in the conductor list. Optionally, in parentheses,
a condition list for the drain/source region can be
specified. Further, optionally, at the end of the
specification after a colon, a bulk connection
connect_b can be specified for the transistor. This
connection may consist of (1) a mask that is specified as a
conductor in the conductor list, (2) the string
"@sub" to denote the substrate area below the
transistor gate, or (3) the notation
"%(condition_list)" to denote a substrate
area described by the condition list.
|
|
The bipolar transistor list |
|
bjts :
name : condition_list : type : mask_em mask_ba mask_co
|
|
.
.
For a bipolar junction transistor, the name, the condition
list and the transistor-type ("ver" for vertical
or "lat" for lateral) are followed by a
specification of the emitter mask mask_em, the base
mask mask_ba and the collector mask mask_co.
These masks must be defined as a conductor in the conductor
list. Optionally, after a colon, a bulk connection
connect_b may be specified for the transistor. This
connection may consist of (1) a mask that is specified as a
conductor in the conductor list, or (2) the notation
"%(condition_list)" to denote a substrate
area described by the condition list.
|
|
connects :
name : condition_list : mask1 mask2
.
.
The connect elements connect different semiconductor
regions of the same carrier-type. They define the
connectivity relation between the different conductors.
Mask1 and mask2 are the conductor masks that
are connected. Note: the connection of conductor layers via
a contact or via should be specified in the contact list
(see below).
|
|
contacts [ type ] :
name : condition_list : mask1 mask2 : contact-resistance
.
.
The contact elements connect different conductors that
are on top of each other. Mask1 and mask2 are
the conductor masks that are connected by the contact. For
mask1 or mask2 also the string
"@sub" or the "%(condition_list)"
notation may be used. The parameter at the end of the
specification specifies the contact resistance in ohm for a
(hypothetical) contact of 1 meter * 1 meter. Default, when
extracting resistances, linear resistances will be extracted
for a contact. However, when a contact type is specified
with the contact list, the extracted resistances for all
contacts in that list will be of the specified type. An
element definition file may contain more than one contact
list.
|
|
[ junction ] capacitances [ type ]
:
name : condition_list : mask1 [ mask2 ] : capacitivity
.
.
In the capacitance list, both ground and coupling
capacitances can be defined. Ground capacitances are defined
by using the string "@gnd", the string
"@sub" or the notation
"%(condition_list)" for either mask1
or mask2. The difference between the use of the
string "@gnd" and the two other cases is that (1)
in the first case the ground capacitance will be connected
to a node called "GND" while in the other two
cases the ground capacitance will be connected to a node
called "SUBSTR", and (2) - in case of substrate
resistance extraction (see the Space Substrate Resistance
Extraction User's Manual) - "@gnd"
represents ideal ground while "@sub" and
"%(condition_list)" represent substrate
areas between substate resistances are computed. Omitting
mask2 is equivalent to using the string
"@gnd" for mask2.
Furthermore, capacitances are distinguished between
surface capacitances, edge capacitances and lateral
capacitances. To define edge capacitance, masks preceded
with a '-' character are used in the condition
list, and either mask1 or mask2 has to be
preceded with a '-' character to denote an edge
of an interconnection. To define lateral capacitances, masks
preceded with a '-' character and mask preceded
with a '=' character are used in the condition
list, and either mask1 or mask2 is preceded
with a '-' character to denote one edge of an
interconnection and the other mask is preceded with a
'=' character to denote another (opposite) edge
of an interconnection.
For surface capacitances, capacitivity is the
capacitance per square meter. For edge capacitances,
capacitivity is the capacitance per meter edge
length. For lateral capacitances, the capacitance can be
specified in two different ways.
If only one value is specified, as in the above,
capacitivity is the capacitance for a configuration
where the spacing between two parallel wires is equal to
length of the two wires. In that case, it is assumed that
the lateral coupling capacitance is proportional to the
distance between the two wires and inverse proportional to
their spacing.
Lateral coupling capacitances can also be defined as
follows.
name : condition_list : mask1 mask2 : distance1 capacitivity1
|
|
distance2 capacitivity2
|
|
.
|
|
.
|
|
In this case, the distance, capacitivity pairs specify
the capacitance between two parallel wires of a length of 1
meter for different values of the distance between them. The
lateral coupling capacitance for other configurations is
then found from an interpolation between two distance,
capacitivity pairs. For the interpolation, functions of type
y = a/(x^p) and type y = a/x + b are used. If the actual
distance is larger or smaller than any specified distance,
an extrapolation is done using the above functions.
Default, when extracting capacitances, linear
capacitances will be extracted. However, when a capacitance
type is specified with the capacitance list, the extracted
capacitances for all capacitance definitions in that list
will be of the specified type. An element definition file
may contain more than one capacitance list.
Normally, the positive node and the negative node of the
extracted capacitance will be arbitrarily connected to the
layers that are specified with mask1 and
mask2. However, if the keyword "junction"
is used before the keyword "capacitance" of the
capacitance list, for all elements in that list,
mask1 specifies the positive node of the element and
mask2 specifies the negative node of the element.
Default, junction capacitances will be extracted as
linear capacitances. However, using the parameter
jun_caps junction capacitances can be extracted in
different ways. This explained in more detail in the Space
User's Manual.
|
|
Comments can be included in the element-definition file
by preceding them with a '#' character. All text
following the '#' character, until the end of
the line, will be skipped as comment.
|
EXAMPLE |
The following gives an example of a complete
element-definition file for a cmos process.
# process : c5th
# author : A.J. van Genderen, TU-Delft
# date : Feb. 15, 1988
unit resistance 1 # Ohm
unit c_resistance 1e-12 # Ohm per meter ^ 2
unit a_capacitance 1e-3 # Farad per meter ^ 2
unit e_capacitance 1e-9 # Farad per meter
unit capacitance 1e-18 # Farad
conductors :
condM : in : in : 0.040
condP1 : ps sp : ps : 33
condP2 : ps sn : ps : 30
condP3 : ps !sn !sp : ps : 20
condD1 : od !ps sp : od : 45 # p+
condD2 : od !ps sn : od : 30 # n+
condD3 : od !ps !sn !sp : od : 38 # terminal
fets :
nenh : ps od sn !sp !nw !cop !con !cps : ps od
penh : nw ps od sp !sn !cop !con !cps : ps od
contacts :
contP : cps in ps !od : in ps : 90
contD1 : con in od !ps : in od : 270
contD2 : cop in od !ps : in od : 90
capacitances :
# ground capacitances
capM : in !ps !od : in @gnd : 0.036
capMe : !in -in !ps !od : -in @gnd : 0.080
capP : ps !od : ps @gnd : 0.069
capPe : !ps -ps !od : -ps @gnd : 0.051
# diff - substr:
capD1 : od !ps sn : od @gnd : 0.041
# diff - substr:
capD1e : !od !-ps -od -sn : -od @gnd : 0.21
# diff - well:
capD2 : od !ps sp : od @gnd : 0.120
# diff - well
capD2e : !od !-ps -od -sp : -od @gnd : 0.80
# coupling capacitances
capMP : in ps : in ps : 0.075
capMPe : !in -in ps : -in ps : 0.090
capMD1 : in !ps od sn : in od : 0.065
capMD1e : !in -in !ps od sn : -in od : 0.090
capMD2 : in !ps od sp : in od : 0.066
capMD2e : !in -in !ps od sp : -in od : 0.090
# lateral coupling capacitances
capMeMe : -in !in =in : -in =in : 2.4
capPePe : -ps !ps =ps : -ps =ps : 1.8
capMePe : -in !in !ps =ps : -in =ps : 1.2
|
FILES |
file.s
|
|
input file
|
|
|
file.t
|
|
output file
|
|
SEE ALSODIAGNOSTICS |
When no silent mode is specified, tecc will print
information about the hash table that is being constructed
for element recognition. This information can be used to
tune the specification of the key masks.
Furthermore, tecc will check if legal mask names
are used and if conductor masks are used with transistor,
contact and capacitance definitions. During extraction
itself it will be checked if appropriate conductor elements
are present; for transistor elements and capacitance
elements this is required, for contact elements this is not
required.
|
|
|
|