Process typical {
voltage = 1.8 ;
temp = 25 ;
} ;
Signal std_cell {
unit = REL ;
Vh = 1.0 1.0 ;
Vl = 0.0 0.0 ;
Vth = 0.5 0.5 0.5 0.5 ;
Vsh = 0.7 0.7 0.7 0.7 ;
Vsl = 0.3 0.3 0.3 0.3 ;
tsmax = 3e-09 ;
} ;
Simulation std_cell {
transient = 0.5n 5.18125e-08 1.67e-12;
dc = 0.26 1.04 0.01 ;
bisec = 2.59062e-08 2.59062e-08 1e-11 ;
resistance = 10MEG ;
incir = "" ;
outcir = "" ;
} ;
set process ( typical ) {
simulation = std_cell;
signal = std_cell;
};
and command is this
db_open foo
# Set some variables to define how ELC does its stuff
set_var EC_SPICE_SIMPLIFY true
set_var EC_HALF_WIDTH_HOLD_FLAG true
set_var EC_SIM_NAME "spectre"
set_var EC_SIM_TYPE "spectre"
set_var EC_SPICE_SUPPLY1_NAMES "vdd"
set_var EC_SPICE_SUPPLY0_NAMES "gnd"
set_var EC_ELABORATE_MODEL 1
set_var EC_SPICE_NMOS_DEVICES "nch"
set_var EC_SPICE_PMOS_DEVICES "pch"
# run through the steps that read and parse the subckt file (defined
# in elccfg), and extracts the functionality of each cell
db_prepare -force
db_gate
# Remove the next 3 lines to use the ipsd/ipsc
# deamons for load balancing on multiple machines
set_var sg_SPICE_SIMPLIFY true
set_var EC_SIM_USE_LSF 1
set_var EC_SIM_LSF_CMD ""
set_var EC_SIM_LSF_PARALLEL 0
# set up some things that let ELC know how to proceed
set_var EC_SIM_NAME "spectre"
set_var EC_SIM_TYPE "spectre"
set_var EC_SPICE_SUPPLY1_NAMES "vdd"
set_var EC_SPICE_SUPPLY0_NAMES "gnd"
set_var EC_HALF_WIDTH_HOLD_FLAG tru
# run spice (Spectre in this case) to do the actual characterization
db_spice -s spectre -p typical -keep_log
db_output -report foo.rep -alf foo.alf -p typical
db_close
exit