xsls, xspice, xpstar, xedif, xnle, xspef, xspf, xvhdl - extract an SLS, SPICE, PSTAR, EDIF, NLE, SPEF, SPF or VHDL network description out of the database |
xsls [-Mdefhirtv -C file -D name -X lib]
cell |
-C file |
use the specified file as the control file. |
-D name |
define label name for conditional reading of the control file. |
-f |
send output to a file cell.sls (for SLS output) a file cell.spc (for SPICE output), a file cell.esp (for ESPICE output), a file cell.pstar (for PSTAR output), a file cell.edf (for EDIF output), a file cell.nle (for NLE output), a file cell.spef (for SPEF output), a file cell.spf (for SPF output), or a file cell.vhd (for VHDL output), instead of to stdout. With option -h, also a file is created for every sub-cell by NLE and SPEF. |
-F outfile |
send output to the specified file. |
-h |
also extract all local sub-cells. |
||
-i |
when option -h is used, also extract all imported sub-cells. |
||
-X lib |
when options -hi are used, exclude specific certain libraries from the listing. This is very useful if you have a design with your own imported libraries. This option may be given several times. There are two possibilities: |
(1) exclude all lib's starting with absolute path
(for example "-X /usr/ocean"); |
-v |
enable verbose mode. |
The following option are used for SLS circuit descriptions only: |
-M |
extract a circuit description for SIMON. |
||
-r |
do not generate extern network definitions for sub-cells that are not retrieved. |
The following option is used for VHDL circuit descriptions only: |
-r |
generate also entity definitions for sub-cells that are not retrieved. |
The following option is used for SLS, SPEF, SPF and EDIF circuit descriptions only: |
-e |
expand name arrays into single names. |
The following options are used for SPICE circuit descriptions only: |
-E |
extract an ESPICE circuit description. |
||
-H |
extract an HSPICE circuit description (outputs area values as "m=area"). |
||
-L |
extract an ELDO circuit description. |
||
-N |
when option -h is used, do not extract the sub-cell(s), but add a line ".include cell.spc" for each sub-cell to the output file. |
||
-T |
send output to a CIRCUIT stream cell/spice instead of to stdout (Release 4 only). |
||
-a |
instead of only numbers, use also names for node and terminal references. |
||
-l |
(when not using option -a) generate a table that translates the node numbers to the node names. |
||
-o |
omit model definitions for devices in the output file. |
The following options are used for SPICE, SPF and PSTAR circuit descriptions only: |
-g |
connect a large grounded resistor to each node of the two nodes that are connected by a net statement. |
||
-k |
output all cells as sub-circuits and do not print a title card. |
||
-m |
add model definitions for devices in the output file (SPICE default). |
||
-n |
always add terminals for n-bulk connections. |
||
-p |
always add terminals for p-bulk connections. |
||
-u |
do not automatically add terminals for bulk connections. |
The following options are used for SPICE, SPEF, SPF and PSTAR circuit descriptions only: |
-x |
For SPICE and PSTAR, use node number = 0 for nodes whose name start with "gnd" or "GND". For SPEF and SPF, omit these nodes from the circuit description. |
||
-y |
the same for nodes whose names start with "vss" or "VSS". |
-z prefix |
the same for nodes whose name start with prefix. |
-O name |
the same for the node that has this name. For SPEF and SPF, this option has a default value "GND". |
The following options are used for PSTAR circuit descriptions only: |
-P |
use Philips llrpd/llrnd models for penh/nenh and add "s=1". |
||
-Q |
use Philips p/n models for penh/nenh. |
The following options are used for SLS, SPICE, SPF and PSTAR circuit descriptions only: |
-d |
use original database names to construct instance names. |
||
-t |
do not output unconnected instances. |
The following option is used for EDIF circuit descriptions only: |
-I |
create schematic view instead of netlist view, implies option -c. |
||
-c |
generate a Cadence compatible EDIF file. This requires the presence of a Nelsis-Cadence translation file "nls2cds.lib" in your working directory or in the process directory. |
||
-s |
shift array indices into range 0..N. |
The following options are used for NLE circuit descriptions only: |
-l |
long nets listing (gives all net/node names). |
-n nbulk |
use 'name' for n-bulk connections (default "vss"). |
-p pbulk |
use 'name' for p-bulk connections (default "vdd"). |
Xsls, xspice, xpstar, xedif, xnle, xspef, xspf, and xvhdl are programs to respectively extract an SLS circuit description, a SPICE circuit description, a PSTAR circuit description, an EDIF circuit description, an NLE circuit description, an SPEF circuit description, an SPF circuit description, or an VHDL circuit description out of the database. Default, only a circuit description of the cell itself is extracted and no sub-cells are extracted. When using the option -h the program will also extract all (local) sub-cells that are not a function (see "SLS: Switch-Level Simulator User's Manual") or a device. Whether or not a cell is a device is determined by (1) - for xspice/xpstar - by the contents of the control file, (2) by the use of the program xcontrol(1ICD) for new projects or device(1ICD) and/or putdevmod(1ICD) for old projects (see the manual pages of these programs), or (3) by a set of built-in device names: "res" for resistor, "cap" for capacitor, "nenh" for an n-enhancement transistor, "penh" for an p-enhancement transistor, "ndep" for a n-depletion transistor, "npn" and "pnp" for bipolar transistors and "d" for a diode. When extracting SPICE/PSTAR circuit descriptions, the program xspice/xpstar will automatically determine if n-bulk and/or p-bulk terminals should be added. This is determined from the bulk voltages that are required for the different devices that are part of the circuit. Under normal circumstances, this means that for circuits containing n-enhancement and depletion transistors n-bulk connections are added, and that for circuits containing p-enhancement transistors (also) p-bulk connections are added. For each bulk terminal, the program will automatically generate an appropriate voltage source, unless the option -o is used. Default, xspice will automatically add model descriptions to the network for the devices that are part of the network. These model descriptions are searched at the following places. First, model descriptions are searched in the library files that are specified in the control file. Second, the program will search for model descriptions that have been added to the database using the program putdevmod. Note that the device status must be set by xcontrol for new projects. For all devices that occur in the network and that have a model description available, these model descriptions will be added to the end of the network. The automatic inclusion of model descriptions can be omitted by using the option -o. The program xspf is a derivate of the program xspice. It adds Cadence Standard Parasitic Format (SPF) information to the SPICE alike output. Output is in proposed Detailed SPF (DSPF). It contains complete extracted circuit information intended to be used in conjunction with a circuit simulator for comprehensive simulation or with a timing analyzer for delay analysis. The program xspef generates output in Standard Parasitic Exchange Format (SPEF) as proposed by IEEE Standard Draft P1481, v1.0.4 April 8, 1997. The output is many aspects different from SPF. For xspf and xspef the netlist must contain conductor numbers. This netlists are generated with the space(1ICD) layout to circuit extractor. The program xnle generates netlists for the COMPASS Design System. It tries to read the "spicemod" file for a tox value. This tox value is used for the calculation of gate-capacitances of transistors. |
For xspice/xpstar/xnle/xspef/xspf, a control file may be used. This control file specifies the models that should be used for the devices, the location of the library files that contain the descriptions of these models, and the bulk voltages for the devices. The default name of the control file is "xspicerc". First, the program tries to read this file from the current working directory. Next, it tries to open the control file in the process directory. The format of a specification of a library file in the control file is as follows: include_library file_name where file_name is the name of the library file. First, the program tries to read the library file from the current working directory. Otherwise, the program tries to open the library file in the process directory. The format of a specification of a model for a device is as follows: model name orig_name type_name ( range_specs ) The orig_name has to be equal to the extracted device name, which is equal to the name specified in the element definition file. The type_name equals one of the SPICE standard device-model names, such as npn, pnp, nmos, pmos or d. This is initial implemented for bipolar models. The range_specs specifies the device geometries for which the model is valid (for a description, see the Space User's Manual). If the range_specs are left out, then the model is always valid. Only the following geometrical parameters can be specified in the range_specs: w, l, v, ae, pe and wb. The format of a specification of a prefix for a device-model is as follows: prefix name prefix The name can be the orig_name or the type_name. A new prefix overrides a previous specified prefix. For SPICE, the first letter of the prefix must be a legal standard device-model letter. For SPICE normally only one prefix letter is used. To use more prefix letters (max. 7) specify the following keyword: long_prefix The format of a specification of a bulk voltage for a device is as follows: bulk type_name value where value is the value of the bulk voltage for the device of type type_name. Up to a maximum number of 2 different values for bulk voltages may be specified in the control file. For a device, instance parameters may be specified as follows: params name { param_spec1 param_spec2 ... } The name can be the orig_name or the type_name and can optional be followed by the model_name. A new params-statement overrides a previous specified params-statement. With the params-statement the printing order of parameter values (with or without parameter name) can be changed. Normally invisible parameters can be made visible or used. Standard visible parameters can be left out or changed. The parameter specifications param_spec1, param_spec2 etc. each must have one of the following forms: parameter=value value parameter=$intern_par[<operator><value>] $intern_par[<operator><value>] with $intern_par denoting the actual value of a
parameter that is internally (in the database) called
'intern_par' (for example $w, $l, $v, $area and
$perim refer to respectively the width and length of a MOS
transistor, the value of a resistor or capacitor and the
area and perimeter of a junction capacitance). If the
$intern_par does not exist in the instance
attribute-list, the parameter specification is left out! If
the $intern_par is a standard visible parameter, it
is not more printed on the standard way. If the
"$intern_par"-forms have a leading
'!' sign, they are not printed. This is the way
to skip a standard visible parameter. If the
"$intern_par"-forms have two leading
'!' signs, they are printed in the comment-part.
The "$intern_par"-forms can optional be
followed by an <operator> and a <value>. This
<value> may also be another internal parameter. The
operation is only done, if this internal parameter exists
and is not zero. This <operator> can be a
'+', '-', '*' and
'/'. At last, you can additional use the
'@' <operator> with a <string>.
Denoting that the <string> must be printed after the
value. |
mname |
the used model name |
|||
mdl |
the model 'l' subtract value (default 0) |
|||
mdw |
the model 'w' subtract value (default 0) |
|||
msf |
the scale factor for scalable models (default 1) |
Note that by xspice -E and xpstar -P|-Q the following parameters are automatically scaled: |
w,l |
with factor 1e6 |
|||
ps,pd |
with factor 1e6 |
|||
peri |
with factor 1e6 (parameter starting with...) |
|||
as,ad |
with factor 1e12 |
|||
area |
with factor 1e12 (parameter starting with...) |
As an example, the parameters of a junction diode ndif that was extracted using space(1ICD), and that will be simulated using HSPICE, may be specified as follows: params ndif { area=$area pj=$perim } Further, if the control file contains the keyword no_title a title card will not be printed at the top of the file, and if the control file contains the keyword as_subckt all cells will be printed as a sub-circuit. For xspice/xpstar/xnle/xspef/xspf, the parameter name_ground may be used to define the ground node name. This parameter is equivalent to the use of the option -O. name_ground string For xspef/xspf the following two specifications can be useful: The hier_name_sep parameter defines the DIVIDER character (default '/') that must be used: hier_name_sep char The inst_term_sep parameter defines the DELIMITER character (default ':') that must be used: inst_term_sep char For SPEF, this separator characters may only be '.', '/', ':' or '|'. The following specification is useful for all programs (with option -i): exclude_project path_name to exclude specific certain imported projects from the net-listing (see option -X). |
It is possible to use "#if", "#else" and "#endif" statements, to make the reading of the control file depended of the invoking program. To be seen, the '#' character must be the first character on a line. This conditional statements may not be nested like the C-preprocessor. Normally, from the top of the file reading is set to true. A "#else" statement changes the state from true to false or false to true. A "#endif" statement changes the state always to true. A "#if" statement changes only the state to true if one of the specified conditions is true for the invoking program (else to false). Note that you can also define one condition on the command line with option -D. The following conditions can be specified and are true for: |
CDS |
xedif -c |
CADENCE |
xedif -c |
EDIF |
xedif |
|||
NLE |
xnle |
|||
PSTAR |
xpstar |
|||
SIMON |
xsls -M |
|||
SLS |
xsls (without -M) |
|||
SPEF |
xspef |
|||
SPF |
xspf |
|||
HSPICE |
xspice -H |
|||
ESPICE |
xspice -E |
|||
ELDO |
xspice -L |
|||
SPICE |
xspice (without -H|-E|-L) |
|||
VHDL |
xvhdl |
The following example demonstrates its use: #if spice hspice include_library spice3x.lib #endif model dp pdiode d () model dw wdiode d () model dn ndiode d () #if SPICE hspice params d { area=$area1 !!$perim1 !!$perim2 } #endif #if Pstar params d { diffarea=$area1*1e12 perim=$perim1+$perim2 !$perim2 } #endif |
The library file contains one or more simulation models according to the following format: model name type_name ( par_list ) where par_list contains the model parameters. For a more extended description and examples, see the Space User's Manual and the Space Tutorial. |
$ xsls -h latch $ xspice -fhx invert |
S. de Graaf (EDIF, NLE, PSTAR, SPEF, SPF, VHDL), F. Beeftink (SPICE bipolar models), P. Elias (PSTAR option -Q), M.S. Sneeuw (EDIF options -I -c). |
cell.sls |
(opt.) output file |
cell.spc |
(opt.) output file |
cell.esp |
(opt.) output file |
cell.pstar |
(opt.) output file |
cell.edf |
(opt.) output file |
cell.nle |
(opt.) output file |
cell.spef |
(opt.) output file |
cell.spf |
(opt.) output file |
cell.vhd |
(opt.) output file |
xslsrc |
(default) control file for xsls/xedif/xnle/xvhdl |
xspicerc |
(default) control file for xspice/xpstar/xspef/xspf |
spicemod |
models file for xspice/xpstar/xspef/xspf/xnle |
espicemod |
models file for xspice -E |
nls2cds.lib |
device/technology information xedif -I | -c |
global_nets |
file, used by xnle |
cell.nmp |
name map file from space, used by xvhdl |
csls(1ICD), cspice(1ICD), |