I am working on characterizing some newly created standard cells and I keep getting the following error after the char_library is executed:
ERROR (LIB-5048): (LIBERATE): System error - could not execute command: cd /tmp/altos.lnissrv2.eng.utah.edu.T20201002102423635916S0030740.0; /uusoc/facility/cad_tools/Cadence/lnis_tools/SPECTRE191/bin/spectre +lqt 0 -outdir /tmp/u1249940/ =log sim.lis +lorder MMSIM:PRODUCT +spice =log sim.lis +libtkn 0001208F0F964DEB4DDB67C73FE609F74FDE77D55BF946F37BD5279610F747F509CF6EC154DA12934B9F70D7629B49EA4ECE0BD3368335D8109B25EB159644D65A996F953AED25A20AD079D119DF75F437E972DC5A8843920ED063D001D50190449B2D8705DC47920DD879D1288977A237E979D11B8977A237E926A64FB32398689E00003A6F /tmp/altos.lnissrv2.eng.utah.edu.T20201002102423635916S0030740.0/sim.sp >& /dev/null. Error code: 2.
*Info* Simulation failed to complete. Restart the simulation in 5 seconds on host lnissrv2.eng.utah.edu.
This is the log output file
community.cadence.com/.../char.log
I have copied that command from the terminal and run it outside of liberate and it seems to work fine, the sim.sp file is outputted to that directory specified.I am trying to change the locations of where to store the spectre files are outputted to along with command options for spectre by setting the extsim variables just as provided in the documentation but it is obviously not working. Any and all help will be appreciated, I am adding my scripts below for a complete explanation of the problem
I will be attaching my scripts below also:
char.tcl
set SRC_DIR [pwd]
set RUN_DIR [pwd]
set PROCESS tt
set VDD_VALUE 1.8
set TEMP 25
set LIB scs8ms_muxinv2_1
set TEMPLATE skywater_scs8ms_template
set SETTINGS_FILE ${SRC_DIR}/SETTINGS/settings.tcl
set TEMPLATE_FILE ${SRC_DIR}/template/${TEMPLATE}.tcl
set CELLS_FILE ${SRC_DIR}/tcl/cells.tcl
set MODEL_INCLUDE_FILE ${SRC_DIR}/MODELS/SPECTRE/include_${PROCESS}.scs
set NETLIST_DIR ${SRC_DIR}/NETLIST/SPECTRE
set USERDATA ${SRC_DIR}/userdata/userdata.lib
source ${SETTINGS_FILE}
source ${TEMPLATE_FILE}
source ${CELLS_FILE}
set_operating_condition -voltage ${VDD_VALUE} -temp ${TEMP}
puts "Specifying External Model"
set_var extsim_model_include ${MODEL_INCLUDE_FILE} ;#Define Model file to use
set_var extsim_flatten_netlist 1
set spectrefiles {}
lappend spectrefiles ${SRC_DIR}/MODELS/SPECTRE/include_${PROCESS}.scs
foreach cell ${cells} {
lappend spectrefiles ${NETLIST_DIR}/${cell}.scs
}
#Reading Spice Files
puts "Reading Spice Files "
read_spice -format spectre "${spectrefiles}"
#Initiates characterization, -extsim specifies to use an external spice simulator program
puts "Characterizing Library"
char_library -extsim spectre -cells $cells
#Writes a Liberate library database (.ldb) which will be read back later for formatting library data
write_ldb -overwrite ${RUN_DIR}/LDB/${LIB}.ldb
#Write the liberty file
write_library ${SRC_DIR}/LIBRARY/${LIB}.lib
cells.tcl
#Create List of all cells defined in the template file
#This file allows the user to redefine the $cells variable to quickly reduce the characterization size without editing the template file
set cells { \
scs8ms_muxinv2_1 \
}
template.tcl
# existing_templates.tcl : template Tcl file generated by Liberate 19.2.1.591 on Tue Sep 29 10:05:56 MDT 2020
#Identify power and ground nets and set their values
set_vdd -cells {scs8ms_muxinv2_1} -type primary vpwr 1.8
set_gnd -type primary vgnd 0
#-no_model used to specify if GND is not a net it is excluded from the Liberty file
set_gnd -no_model vgnd 0
set_var slew_lower_rise 0.2
set_var slew_lower_fall 0.2
set_var slew_upper_rise 0.8
set_var slew_upper_fall 0.8
set_var measure_slew_lower_rise 0.2
set_var measure_slew_lower_fall 0.2
set_var measure_slew_upper_rise 0.8
set_var measure_slew_upper_fall 0.8
set_var delay_inp_rise 0.5
set_var delay_inp_fall 0.5
set_var delay_out_rise 0.5
set_var delay_out_fall 0.5
set_var def_arc_msg_level 0
set_var process_match_pins_to_ports 1
set_var max_transition 1.5e-09
set_var min_transition 1e-11
set_var min_output_cap 0.0
define_template -type delay \
-index_1 {0.01 0.01735 0.02602 0.03903 0.05855 0.08782 0.13172 0.19757 0.29634 0.44449 0.6667 1.0 1.5 } \
-index_2 {0.0 0.00985 0.01182 0.01418 0.01702 0.02042 0.0245 0.0294 0.03528 0.04233 0.0508 0.06096 0.07315 0.08778 0.10534 0.12641 0.15169 0.18203 0.21844 } \
delay_template_13x19
define_template -type power \
-index_1 {0.01 0.01735 0.02602 0.03903 0.05855 0.08782 0.13172 0.19757 0.29634 0.44449 0.6667 1.0 1.5 } \
-index_2 {0.0 0.00985 0.01182 0.01418 0.01702 0.02042 0.0245 0.0294 0.03528 0.04233 0.0508 0.06096 0.07315 0.08778 0.10534 0.12641 0.15169 0.18203 0.21844 } \
power_template_13x19
define_cell \
-input { Q1 Q2 S } \
-output { Z } \
-pinlist { Q1 Q2 S Z } \
-delay delay_template_13x19 \
-power power_template_13x19 \
{scs8ms_muxinv2_1}
define_leakage scs8ms_muxinv2_1
# power arcs from => Q1 hidden
define_arc \
-type hidden \
-vector {Rxxx} \
-pin Q1 \
scs8ms_muxinv2_1
# power arcs from => Q1 hidden
define_arc \
-type hidden \
-vector {Fxxx} \
-pin Q1 \
scs8ms_muxinv2_1
# power arcs from => Q2 hidden
define_arc \
-type hidden \
-vector {xRxx} \
-pin Q2 \
scs8ms_muxinv2_1
# power arcs from => Q2 hidden
define_arc \
-type hidden \
-vector {xFxx} \
-pin Q2 \
scs8ms_muxinv2_1
# power arcs from => S hidden
define_arc \
-type hidden \
-vector {xxRx} \
-pin S \
scs8ms_muxinv2_1
# power arcs from => S hidden
define_arc \
-type hidden \
-vector {xxFx} \
-pin S \
scs8ms_muxinv2_1
# delay arcs from Q1 => Z positive_unate combinational
define_arc \
-vector {RxxF} \
-related_pin Q1 \
-pin Z \
scs8ms_muxinv2_1
# delay arcs from Q1 => Z positive_unate combinational
define_arc \
-vector {FxxR} \
-related_pin Q1 \
-pin Z \
scs8ms_muxinv2_1
# delay arcs from Q2 => Z positive_unate combinational
define_arc \
-vector {xRxF} \
-related_pin Q2 \
-pin Z \
scs8ms_muxinv2_1
# delay arcs from Q2 => Z positive_unate combinational
define_arc \
-vector {xFxR} \
-related_pin Q2 \
-pin Z \
scs8ms_muxinv2_1
# delay arcs from S => X positive_unate combinational
define_arc \
-when "(!Q1)" \
-vector {xxFR} \
-related_pin S \
-pin Z \
scs8ms_muxinv2_1
# delay arcs from B1 => X positive_unate combinational
define_arc \
-when "(Q1)" \
-vector {xxFF} \
-related_pin S \
-pin Z \
scs8ms_muxinv2_1
define_arc \
-when "(!Q2)" \
-vector {xxRR} \
-related_pin S \
-pin Z \
scs8ms_muxinv2_1
define_arc \
-when "(Q2)" \
-vector {xxRF} \
-related_pin S \
-pin Z \
scs8ms_muxinv2_1