! J# B; g2 B* Y/ ]if [ $# -gt 0 -o "$FMlist1" != "" -o "$fmlist1" != "" ]; then 6 t7 F4 U* p5 B# p # note that the buildmod script will set the CMDLINE variable! A: A! R0 v. \- y
. $EPIC_BIN/scripts/buildmod5 x! O7 E) b1 \ D1 I
# V$ x% J) X$ ]
#echo "This is the value of cmdline=$CMDLINE" 5 }) K. b3 M. c0 Q8 L, ?1 A4 x #exit 0 5 D4 Q: Q1 \$ _9 Q+ n ' m8 S8 s% h4 S! v7 _ # if a new timemill/powrmill/pathmill built, run the new one6 ^$ I8 l& m: _2 ^
[ -x "$rundir/$cmd$EPIC_EXEX" ] && command="$rundir/$cmd$EPIC_EXEX" + s" ~2 f. a/ m" {6 K1 j F3 E7 Zfi7 [; s( O+ C& Y* ?2 I7 N; x" E
t* G# ~0 p3 r
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" ]; then * U8 l+ H' U0 w5 ^; `0 Q7 u if [ $have_har_flag -eq 1 ]; then) q' A) c6 C: E7 n9 ]
is_special_har_run=1 4 A3 s T* i. Z8 n if [ "$o_option" = "" ]; then( p) P! R$ ^0 z" b: M, m7 N( T
case $cmd in e; k- S, P- ]" t( T timemill); ]& q2 t: A: y5 o: d% Y! E
har_ofile_prefix=timemill 7 W5 O; r M: D6 X$ I ;; / L) }) G. O* ?* r+ t& L powrmill)2 a" C) u' a) X
har_ofile_prefix=powrmill3 ?: S" p0 Z7 {
;; ' K* ~+ V$ i. q nanosim) 4 g6 x% k" \! G) j( q! S* \ har_ofile_prefix=nanosim + k. D) |7 J8 _" p' s ;;1 j1 c7 f f) Z4 y# B! |
esac9 n8 Y% H% U( Y N9 [% V
else , W7 F6 ^% N; n/ z. d har_ofile_prefix=$o_option. T/ f& Z4 T6 z9 I7 p
fi4 d& n1 \3 e$ L1 L3 q* r- N; F
fi% m A* ]5 }; T7 m C
fi- ~9 m# J( d! |1 \# H6 N3 B
+ u! @4 Q: r1 O8 ^# C7 W
# Call Double precision version of the product if -D& t2 L' V# D$ H" n; B
# or simulation time > 1,000,000 ns. * u; C2 s5 v/ |if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" -o "$cmd" = "railmill" -o "$cmd" = "pwarc" ]; then7 [. R; t8 H3 H$ `) p# z7 c& g
P7 ?5 I; h3 ]3 [2 e7 R# T) s # Now the binary always has the ACE feature 9 D# w% G+ s* Q USE_ACE=YES * ?9 @3 ~" ]2 J4 ~& N( G. d' W4 b9 ], c! ]6 g5 A8 h
HAVE_DP=NO ) Q9 o' ^1 B! x J EXTRA_CAPACITY=NO/ k$ O1 g1 F9 J4 i! h) D
DB_REAL=${FORCE_DB_REAL:-"0"} # k4 G) g: F9 [+ J* m& I f/ g9 z" l$ W7 m2 @% a# H' j
# Enhance for ACE ease of use# E. |" T3 k* T$ a/ M" U
# If no command line option or only a -T option, do:9 K( l- F2 q$ Z' O; U& m& N1 E
# 1. set -A option; A w3 B* L# \* g% R8 @7 f5 o
# 2. assume input file to be hspice 9 y' d8 B X- A # 3. set -o to input file prefix . X5 K9 Z! j! }9 i2 r # 4. set -z to input file prefix8 D9 d d6 ~% K2 c
# 5. set -c to default config file8 B4 J1 M! i4 b7 H) H4 X% |% h
netlist="" N1 o6 Z9 {" f8 r* i$ a& n$ _ minusT=NO $ {+ w. n5 Z( c8 ~& W5 R useStdCmdOpt=0 8 x c/ t" q) J; R prefix=""2 x4 C1 h$ V% V# l# q! q+ e
circuitType="", U' B( J$ {+ a7 T5 J1 Z! x5 t
for opt in $CMDLINE 8 E- W; q9 |; [4 t6 f2 ^ do ) u$ e2 W I5 `" A5 m/ G case "$opt" in 8 ~3 F2 r! Q0 v4 F& J
-T)+ ]1 n% h0 [2 A |" n$ q
minusT=YES ) I5 v& t/ x5 u ;; 0 ] K' G% V7 L -*) 4 w S8 s: w, R7 y! k: o+ Z+ g4 b0 t # using standard powrmill command line 0 B6 @9 J$ j2 j. I: t! ` useStdCmdOpt=1 ' {- i# l( _! h1 |( G' p break # S0 n9 p) c8 O/ e, {% x& O ;;0 o2 Z; m, B O& y
*)) K( H' E2 q! O9 n
if [ "$minusT" = "YES" ]; then/ d7 w; u. H; e* c8 J& \; I
circuitType=$opt ! w G$ q. R. K% ~/ a! C minusT=NO # reset flag! O. T' \3 ]1 j$ W9 I
else 2 Z9 {1 j3 C& N8 V$ S/ U
if [ "$netlist" = "" ]; then $ j6 w4 h2 l0 C2 ^ prefix=`basename $opt` 4 T: e3 l6 I9 H( f prefix=`expr $prefix : '\([^.]*\)\..*' \| $prefix` F9 ~/ ?( P. J# Z
fi , a5 V# b" N2 }% C: b4 C netlist="$netlist $opt": K' c: p" j# {& u5 F8 @/ n+ j* h$ s
fi, B: x7 V# h* B8 U
;; " e0 _1 k8 c8 Z* {3 T esac4 h9 ~. b3 T8 e: p& k) \$ _# n5 d/ P
done! c0 h0 n$ f; ]- ~( \ f
8 l+ \; T- p S- f3 P0 y& G; Z5 i( z) D
if [ $useStdCmdOpt -eq 1 ]; then8 t* A) d6 \/ b% \+ c
# use standard powrmill/timemill command option ! A$ j! q$ L0 m1 s( X4 T for opt in $CMDLINE5 B5 |+ I4 T! P! B- e
do) F Z5 F4 d7 y+ P5 ~
case "$opt" in * Z7 G# `+ e3 { -A) 2 f3 L8 i: I. b8 f. A" H DB_REAL=1 ; g7 n H1 l- ]/ K) Y6 o+ r: \ ;;6 o T( [% z9 H$ g1 T8 C
esac , X1 f; b3 |; R" j done/ A4 e* Y; O; @" P+ C# x
if [ "$netlist" != "" ]; then 1 V3 m% J! a( a CMDLINE="-nspice $CMDLINE" 2 i S1 j& C2 A7 \0 V% a fi7 U& A( X/ V4 Q* \4 y3 d8 x+ A
else T7 x+ A9 n* G% W+ \ s if [ "$netlist" != "" ]; then ! R: j) N9 ?+ n. s EPIC_DEFAULT_CFG_DIR=${EPIC_DEFAULT_CFG_DIR:-"$EPIC_AUXX/etc/$cmd"} ( i3 V/ \ h, R) p- }; @; O, ^$ z8 N # construct new command option; {, c5 u( f0 g0 \
if [ -f $cmd.ini -a "$circuitType" = "" ]; then + z0 n8 V4 k0 u. i* \+ B1 \ CMDLINE="-nspice $cmd.ini $netlist"* ~) L# R) {# ?: D4 Y5 `4 }
else+ Q+ O }( J9 L+ Q4 E7 \1 M
if [ "$circuitType" = "" ]; then& W2 \# Y& g( z. i: y+ s$ m
circuitType="msana" W$ _! ]! S, r: l, _& s* i: j fi6 F/ [* k1 v) }8 m! J2 V
CMDLINE="-nspice $netlist -c $EPIC_DEFAULT_CFG_DIR/$circuitType.cfg" # y( P, ]! g! u; P/ v$ i9 I8 j fi : ~8 t: l9 ~4 b& ~' \0 c CMDLINE="$CMDLINE -A -o $prefix"/ w, Z2 N k7 b( l9 a
DB_REAL=1% ~; O& v7 W$ x* {1 T( \9 K* S9 y
echo $cmd $CMDLINE/ q) x% W% W9 x2 x | R
fi, j: Z+ ?% l0 C _ h% j+ f' d
fi% z& x: I" G1 U% @/ `, m
fi # cmd is timemill or powrmill or nanosim or railmill or pwarc 2 o# D {( I4 n! k T9 T- W) [# [1 W/ }' z + n- H9 W, w/ |5 t[ "$HAVE_DP" = "YES" ] && [ -x "${command}_a" ] && command=$command"_a" : Q2 z, }; ^: r; \0 u# ?! B[ "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a" ] && command=$command"_a"& l x! i% i( L
[ "$USE_ACE" = "YES" -a "$vlog_design" != "" -a -x "${command}_v" ] && command=$command"_v"7 o" Q* S# v! @+ V" W+ l% _$ i
/ k5 y8 R3 }8 p0 Sif [ "$__engine_wrapper_called__" != "Indeed" ]; then - ]* J4 q1 L. ~ F __engine_wrapper_called__=Indeed 0 r$ ^/ o* f1 b7 t5 L+ }3 D if [ "$cmd" != "amps" ]; then X9 m* o% z6 A- }2 Y2 a% A export __engine_wrapper_called__* J1 e/ C5 |7 J# F1 R
fi. c4 p) c4 ]( o/ `
0 b% |0 @+ O2 L$ V# a
trap "cleanup" 07 i8 k& O8 t" p7 ]5 I$ n$ n
trap "" 2 $ y# D1 ~/ b0 P- M! D9 r! S$ g7 ]4 P
[ -d "$rundir" ] && rm -fr $rundir ! Y5 W: P2 S. T7 R5 D [ -d "$rundir" ] || mkdir $rundir 6 @: ^! q% g ^' Y* ]- V! q. X' {5 O( Z( l
case "$EPIC_ARCH" in! ~* u. h, B) {* n' P$ c) M
*SUN*64) - R1 y; g. R" A3 ~4 _8 V; C
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" 3 s4 }' @- v- {& F export LD_LIBRARY_PATH) ^- u8 N+ w1 I, ?; M2 N
suffix=.so / Q; e/ l& ]* `$ e ld_err_code=1274 a" p+ H0 A8 L$ N2 H0 U
;; + m* c7 q4 B2 l# k5 [. c( Z *SUN*4) 5 c) {& b- E6 M# o4 C! j LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" - \( g8 `# W' ]; s& j7 q; J/ z export LD_LIBRARY_PATH3 a. e9 Y" G# A7 w( e9 b) Y+ n
suffix=.so.1.0 2 c* ~& h' d: B7 Q P9 [ ld_err_code=127" Z$ p1 K( ?4 G. o- Q5 {0 E6 ]
;;& m5 ]# V+ |: K) [$ U. i
*SUN*5) 8 x& A o) Z5 D9 Z0 u* B/ w LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" 9 R @9 I. t `0 P! S% J export LD_LIBRARY_PATH- C$ a/ O. `0 `) Z1 m
suffix=.so# Z/ X5 G" [7 v8 T$ L X7 V
ld_err_code=127 7 ]# j& E! N0 d, k1 P( C ;;6 l' }" g; ?+ N e
x86sol*) 9 q X2 W7 ~; T' W/ \ u
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" B, k* B6 w: X
export LD_LIBRARY_PATH ; X$ Q; T6 w+ ]& Y" n: g suffix=.so % R/ b6 C7 ^! r: f& B ld_err_code=127( s) n. E! K% p# V
;; ) [; {0 v- i* { *AIX* | aix64) , `* T- l9 a7 I
# When genepiclib creates shared objects, it creates a import file and / p5 X- P0 J* w
# uses timemill as program. So at exec time,program timemill is needed 4 R6 B! c! I& m9 z+ r2 x # in LIBPATH8 ]1 R0 E, ?9 }8 Z7 p; e1 h; ?$ c6 ?
$ln_default $command $rundir/foomill 3 m3 j8 N2 j& ^. k A0 o LIBPATH="$libpathLIBPATH:/lib:/usr/lib"& `/ Y3 j) Y, J) d- z+ @% T+ ~8 A) y
export LIBPATH% C/ w( E2 p2 v/ s! s' ]
suffix=.o0 \0 v G/ w9 X+ t# H
ld_err_code=8$ Q2 ~% ]: [' ?- P) s
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then$ t3 j `2 B1 y+ g' n
tdir=`echo "/tmp/d"$$` 3 E# L3 d2 @1 u3 j8 @ [ -d "$tdir" ] || mkdir $tdir6 q% W& c7 E8 c# e
if [ -f $EPIC_DIR/libCustom.o ]; then+ D4 k, H2 j3 C0 o3 o# z0 a; J
cp $EPIC_DIR/libCustom.o $tdir/ $ |- f) [7 T5 L $ln_default $tdir/libCustom.o $rundir/6 h' K. i0 G0 h: Z) B" a
fi2 y- ~, ?% X! C n
if [ -f $EPIC_DIR/libModel.o ]; then4 }8 B9 m) X0 r+ \0 a
cp $EPIC_DIR/libModel.o $tdir/4 N2 V* |, s# \5 H
$ln_default $tdir/libModel.o $rundir/! p7 A4 _! J8 c3 V" Q- N
fi$ P6 E2 e/ O7 s1 \" I u
if [ -f $EPIC_DIR/libFuncModel.o ]; then 9 U* d. w, F& q: C. } cp $EPIC_DIR/libFuncModel.o $tdir/+ k- z) T8 |6 T/ }5 S' } ?
$ln_default $tdir/libFuncModel.o $rundir/) j9 i! @- e3 C5 U8 n2 |- k' j. {. z* ^
fi( x( U! p; |# U6 U3 l. s3 y
if [ -f $EPIC_DIR/libFuncModel.34.o ]; then ; ?, k) b% g- y( h. @ cp $EPIC_DIR/libFuncModel.34.o $tdir/! q; z8 }0 z6 {( H
$ln_default $tdir/libFuncModel.34.o $rundir/ , R" i2 [: W# T fi % d# {" _/ Q2 t6 S5 B4 k7 R0 T fi' _9 A1 O+ G( \" |! C! A2 \
#Set the IBM flag to enable more shared segids 6 X. F* R; W/ [: q# p* D/ N EXTSHM="ON"; ?9 k* {, M- E7 ^. Y+ }1 h1 q
export EXTSHM7 S1 P4 C @+ j% K# J$ k
;; C, z) e* z# m" r
*LINUX*) . u6 j2 v6 M; v! K
suffix=.so 3 ]: Y# _) f2 r' l# N ld_err_code=13 R/ W% L* U9 t% ^
;; 9 F- K7 h) O6 ?6 n& x *amd64*) c" j: i; A0 P% g1 [
suffix=.so5 U: x+ ^" [3 ?* z3 y4 b7 H/ G
ld_err_code=1 . T4 v! H% o. U1 a& j ;;" h6 _4 F) q. H- T" N# u1 S5 d
*suse64*)1 d7 g, {2 g% o: y
suffix=.so. ], y( ^' b0 q! m0 C2 o9 S- v
ld_err_code=16 l9 o6 B% _0 Q4 D& y3 ]2 [
;; : t7 r' j1 ^, o3 f* s( ]7 {! u *suse32*) & q3 K" @. o. d: T. o2 } q
suffix=.so [2 m: d& q) h) k; o
ld_err_code=1 ' |: \) _6 C1 ~. ?. @7 Y ;; , R$ E% K& y1 t) M/ Q esac , h% o1 d6 ^ p8 p ; E' i* ]( c4 F [ "$has_custom" = "YES" ] && ulib="$ulib $cwd/libCustom$suffix"% T* j2 ?& R9 A& Y9 p) j- d
[ "$cmdname" != "timemill" ] && [ "$cmdname" != "powrmill" ] \* N; r8 }7 l2 k9 G
&& [ "$cmdname" != "nanosim" ] \ 1 ?! l- C7 W6 N% n && [ "$has_model" = "YES" ] && ulib="$ulib $cwd/libModel$suffix" 5 M k: z. r/ O: B [ "$_VA_" = "YES" ] && ulib="$ulib $cwd/libva$suffix" ( v B. ^2 R4 T/ Z$ A( Y h' x9 r2 ^
#Look for command line option for libFuncModel.so 5 m' l3 Q) u" b. N/ Z+ |# user_library_next=0 ( h9 @, r1 L- g8 n1 ^5 \ has_fmlib="" 3 t o1 n! F; b' C" B for opt in $CMDLINE + X* _$ F' u7 s7 @ do ; V+ Y* t! t5 V, g case "$opt" in . X' E7 d1 d& \7 n1 U2 n1 j
-fm) $ [7 y! A3 v/ g J, Q/ `- N, Y CMDLINE="$CMDLINE $cwd/libModel$suffix"" z6 O1 t5 a1 z6 R
;;9 K4 b- t. n! W! q7 }0 @- z
-fm_user_lib) ' w" H/ \7 ]: V: P7 w; M has_fmlib="YES" / _, j. q! {) U9 G: U2 A7 \9 x# user_library_next=1 : D [ Q& W7 s) S% l ;;, F4 Y, f6 d4 ~4 X/ K9 G0 a, z
-xc) 4 u7 e- ^$ C# [8 r$ M' A* c% J if [ "$EXTRA_CAPACITY" = "NO" ]; then ; x7 l* I8 a1 ]9 U% x EXTRA_CAPACITY=YES 5 L! w5 F% l' B. x6 g fi; |) c( X! S' y: U" L/ `
;; ( V) @7 |# [# D# E+ q7 T# *)( [" J7 o8 i) C9 m8 n
# if [ $user_library_next -eq 1 ]; then . H& E7 L9 B" w) L# Y5 c6 y# if [ -f "$opt" ]; then ' u# l7 P" M! w5 [# W# libfmodel=$opt ) U5 W8 e- l, @$ B0 j8 C# else$ \' F, P- @% }1 {) h4 ^6 C
# echo "-fm_user_lib: Specified file not found" ; _* G8 D2 \6 d0 F* q# echo "-fm_user_lib: Specified file not found" >> .epicscriptmessages : i. L" P6 G V# fi 4 Y" K l6 R$ l3 C# user_library_next=05 d, ~3 o% k* d2 x3 y) h1 g
# fi1 ? b8 w4 p V0 ~' Q
# ;; # {6 U4 ?+ {9 O% d. e% D- E8 N- l1 G esac 2 m$ i( V5 W! s+ l0 S5 Z1 \ done' u$ f' b& o& g# R/ c- ^" h& i
+ s; k A. Y% b6 N* C8 q0 o8 M if [ $cmdname = "timemill" -o $cmdname = "powrmill" -o $cmdname = "nanosim" ]; then ; {* k: }! G8 |5 z( T6 J flib="" 9 x& s7 Y. S G- Q, E& _8 i if [ "$has_fmlib" = "" ]; then9 N) W" U! D) j/ J, K8 o8 ]
flib="$flib `get_epicrc ./.epicrc user_libraries`" 6 U8 ]& M3 f" ?8 E k' }) B flib="$flib `get_epicrc $HOME/.epicrc user_libraries`"& R" V) Z+ j$ ]7 j
flib="$flib `get_epicrc $EPIC_DIR/.epicrc user_libraries`" 6 f, ?- G" X/ K$ A) S2 p fi C1 |" `8 g7 h+ X9 ~9 `
fi , {. {& {8 J1 \ e % r. O, C, [: n K: { for i in $ulib / r+ x8 U" \6 v+ H do$ T9 P4 J _9 ]. u0 r( o& u
[ ! -f "$i" ] && continue' M5 ^$ M p8 I4 s+ u
dir=`dirname $i`; cd $dir; dir=`pwd`; cd $cwd: W; O( A) p' X
i="$dir/`basename $i`" . E; P; P {+ h' m* { case "$i" in / R9 t+ t9 ~8 S5 u *libCustom$suffix*) [ "$libcustom" = "" ] && libcustom=$i;; " g( h# Q9 k* j5 Q. C) s9 u2 g *libFuncModel$suffix*) [ "$libfmodel" = "" ] && libfmodel=$i;; , E3 s. K! M' S2 m *libModel$suffix*) [ "$libmodel" = "" ] && libmodel=$i;; 9 x6 {. c- B2 R) {0 r1 b+ ^/ _1 M *libva$suffix) [ "$libva" = "" ] && libva=$i;; 8 b/ {! l) C* j' A, D+ C" ^( Y" _ esac% G& x/ b3 [4 m [
[ "$libcustom" != "" -a "$libfmodel" != "" -a "$libmodel" != "" ] \. H( j' ~3 T* A f: F
&& break $ g, ?, N) d: z* `" G, ?% S done# b( L$ l6 I' K: S' u0 Y K
8 B. T6 s0 o5 ~- Y: ~1 |4 c9 O
# symbolic link shared libraries to .epicrun$$4 K/ d( o" h0 `
cd $EPIC_DIR; epicdir=`pwd`; cd $cwd 8 j, T0 [$ [+ G3 B if [ $cmdname != "timemill" -a $cmdname != "powrmill" -a $cmdname != "nanosim" ]; then4 m$ ?8 }) H! J* j+ t
if [ "$libfmodel" != "" ]; then 9 a" E, g: o& p+ C" S9 q [ "$libfmodel" != "$epicdir/libFuncModel$suffix" ] && \ " w/ M& F7 Q4 W4 J echo "Using $libfmodel ..." && \$ ?9 Z) q3 F: Y7 ~ y
echo "Using $libfmodel ..." >> $EPIC_SCRIPT_MESSAGES_FILE$ Z" y0 g* y! B" |% J4 h
if [ -f $rundir/libFuncModel$suffix ]; then% B8 h$ d& F$ g6 v( l0 Q) H9 y; A
rm $rundir/libFuncModel$suffix ' q5 P% R7 P8 N" j" L: t fi / c- J* m0 c7 K0 ^; b7 }8 Z# y $ln_default $libfmodel $rundir 2 f5 f5 u: Q, @% D3 W' v1 p fi * q: S3 F6 ]$ \# L2 v( [9 @ if [ "$libmodel" != "" ]; then . j' {9 S9 C$ w) k5 b1 z. \ [ "$libmodel" != "$epicdir/libModel$suffix" ] && \9 R9 j9 t( w( y: J& t
echo "Using $libmodel ..." && \ " u& s% I3 _) X7 \ `1 m echo "Using $libmodel ..." >> $EPIC_SCRIPT_MESSAGES_FILE( ]) q5 L' ~7 R+ A' D6 T
if [ -f $rundir/libModel$suffix ]; then 5 r) H5 e: |# u' V8 N) z rm $rundir/libModel$suffix$ n! M" ^# K+ f" a3 Y1 e3 G
fi 0 z: v) \" S+ E9 ]: C $ln_default $libmodel $rundir . Y3 {2 Z- _/ |5 y" s7 {/ M fi 4 V2 r8 Y* F" j. A4 P! ` fi# |( v/ d9 `' `6 o
if [ "$libcustom" != "" ]; then( u8 d/ W3 h& T. v6 t* @) J7 N7 y
[ "$libcustom" != "$epicdir/libCustom$suffix" ] && \# p" f. o2 c5 b7 m
echo "Using $libcustom ..."0 s* Z! `9 Q9 Z" C7 Y/ i, v' L
if [ -f $rundir/libCustom$suffix ]; then 1 S& |0 j+ J: q rm $rundir/libCustom$suffix 8 V- }7 I& R( ` fi* A) e/ U& M& \
$ln_default $libcustom $rundir + v! @% B' E$ d6 ^ fi' @/ _( P8 I! A/ S% b- c
# P. l0 m2 j* z' V! s if [ "$flib" != "" -a "$flib" != " " ]; then , n `4 C( f+ T7 N+ ]4 w Q) F* O8 d CMDLINE="$CMDLINE -fm_user_lib $flib"7 k$ L) u; x5 I3 y
fi! ^& _7 U3 u, y& W& c8 b6 L
/ A" P1 z) t% ^# f9 S
if [ "$libva" != "" ]; then. V6 u& v9 s% d2 K' U, a
if [ -f $rundir/libva$suffix ]; then " q! m/ Q A: M4 Y3 v rm $rundir/libva$suffix, x/ g1 w3 }" I& l7 }" Q- C9 j
fi ; K) v. H2 F# Z4 ~1 L2 f $ln_default $libva $rundir ' R' F3 t& G' V/ }1 } \ fi2 T2 ~7 q& ^9 D* x1 ?& a1 L
' h5 k! Y* N2 M5 U( u& T6 X7 Z3 Q% n
5 B$ S& B& F- M, h0 K% m7 D1 r5 x7 J
# VCORE design library' ^6 K0 p- f/ t% Y. ?8 c5 A. i
if [ "$vlog_design" != "" ]; then @: a2 Y4 L, C# q: M $ln_default $cwd/$vlog_design $rundir/`basename $vlog_design`' p" p3 p& W% | s
fi 2 _) J. z$ b" F6 W. R9 o+ d' s* Q! l; G& Q) v1 f) H
if [ "$EPIC_EXTRA_CAPACITY" = "1" ]; then0 @9 _# m$ s3 t
EXTRA_CAPACITY=YES( L3 S4 D* u, s8 W; f
fi & z! ]7 w5 y9 w. H5 B8 l, d$ K& p: n9 z9 D
[ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "0" -a -x "${command}_xc" ] && command=$command"_xc" ' h0 ]0 w, O# X z [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a_xc" ] && command=$command"_a_xc"/ v+ W- g; H: X4 s
#Create temp file if dual process is on2 ^ ?0 X* m! p8 k: e+ R
if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" ]; then 6 V4 _- G% R1 c if [ "$EXTRA_CAPACITY" = "YES" ]; then: C7 {- O# y' e: S% ~! d2 b1 `0 \7 F
touch $rundir/rpcidfile! y* z5 S2 d7 M& \8 l0 h
fi" I) a- ]6 M4 j A) V
fi: Y3 e0 e7 _/ X' |. l( o7 z
fi: m" R1 c/ f2 [/ c" N2 j# m4 G
! `1 a, c+ S. |7 r4 l. }
run_cmd()8 ?; B) J1 i' C
{ * N5 i" l2 i8 a0 R4 D0 a( g4 k! y command=$1" p, i1 Q/ O g2 s o
shift8 N6 L; Q. A1 e1 ]# Y+ F M
5 G8 |' G2 f. X2 j/ V# c
if [ x"$VA_FILE" != x"" ] ; then & `5 }% V* D. E! ]1 e6 m cmdline=$ARGV1 s8 W6 w0 e3 X. J' _
else 0 r" T* U+ s9 m4 w cmdline=$@ - c. u1 r3 ^6 B! O fi 6 q/ p- B. `( ? ; r! q9 L- w8 a! }* i debug=${DEBUGGER:+"$DEBUGGER $command"};6 K" x4 c6 m- K7 ^3 y2 o) K& ]6 T
8 k8 ]) Z o% z7 \, T* ]2 [) U # To disable Exec-shield-randomize in RHEL3 U3+ when running nanosim and nanosim_a ( T. h! l0 A- D: N # so save-restore may work. 6 N* D) Y$ o( H setarchStr=; v1 V7 C7 N8 T V" B
cmd2run=`basename $command` : _8 C$ g5 y4 A% h$ I if [ ${cmd2run} = 'nanosim' -o ${cmd2run} = 'nanosim_a' -o ${cmd2run} = 'powrmill' -o ${cmd2run} = 'timemill' ]; then2 a F7 r! {! I- E6 |5 R* j
if [ "$EPIC_ARCH" = "IBMPC_LINUX_LINUX" ]; then + q) `4 d5 v' K; h/ b' Z setarchStr="setarch i386 -R " + C# t. A3 y7 k fi 3 G4 y4 u. z. W% T5 z if [ "$EPIC_ARCH" = "linux" ]; then . L) Q0 C+ a% Z9 X* a) Y setarchStr="setarch i386 -R " % _/ Y/ L; e; b* C; X fi/ ]7 h7 x! k& D& k0 j
if [ "$EPIC_ARCH" = "amd64" ]; then9 D" L& e' v. r9 b6 j$ M
setarchStr="setarch i686 -R "& W% e. g/ L4 m0 o8 G1 T/ |! F! R
fi& V- b) Z; b; x
if [ "$EPIC_ARCH" = "suse32" ]; then + W: t: n4 M) c setarchStr="setarch_suse i386 -R "- }1 }7 Y; F3 w
fi w& T2 R) G8 E if [ "$EPIC_ARCH" = "suse64" ]; then/ ]( W5 y; F3 S. W
setarchStr="setarch_suse i686 -R "! c9 Z7 M$ i& Q# }* v: a
fi 5 {7 A8 B- O( g! ?5 S9 @ fi! {: E! n6 P( r- T
$ B2 r" ?: L! z0 @* h- J ret_stat=07 R+ f" t! z7 y
if [ -x "$command" ]; then- d7 b6 M- c+ s( {% m$ _2 F0 E
if [ "$debug" ]; then # m1 D! C1 V3 L9 i' }/ r _debug_args_=$cmdline 1 c9 q& A, W- j0 c2 h$ k$ J . .epic-debug0 D0 T2 ]/ O4 i- W/ f1 e* n
else+ @1 K8 e1 y% l& H7 t
DEBUGGER=; export DEBUGGER9 l( b7 `. L3 X/ w( B: t q
$setarchStr $command $cmdline+ D8 h! ], b/ B7 R$ e
fi% j; i$ l0 M, \9 Z2 k
ret_stat=$? 3 O: t+ C9 ~# F @& R! C/ H else z- G0 ~, g' o6 e6 W8 Q+ D echo "Corrupt installation, executable \"$1\" not found!" # T2 E4 N3 a1 {: i ret_stat=1& n0 U e) D3 _% W
fi ; ^: R9 ~( E: ?+ P}3 j6 `. i9 D4 g r
' G( i+ W( z+ L6 ]. e8 z4 S# O3 }6 e
# keep runing cmd if ctrl file exist ?$ K9 ^, N( p5 T- S/ V( m $ d, b4 r, _' I- K6 U3 A, t9 a% Qrun_loop() 7 ~) @0 H5 w4 U% t{ ) D3 ]( T, Q; t# f/ K& a* a% P8 @" n' s command=$1 , A4 V0 h8 i& v& | g& ` shift 8 u% @8 _3 D9 }/ { 9 C; k) H6 n9 Q- |1 c2 a* m if [ x"$VA_FILE" != x"" ] ; then+ k4 o" n! _& V) t
cmdline=$ARGV* o( U0 `, `# C- `9 I# K3 Q
else - c% _, l5 r0 Y- [3 j; ` cmdline=$@ 3 @! B N2 |3 J+ z& @9 [ fi + x) J/ k/ H" s" P& Z3 @7 G7 J: E H * r w. l U' `$ ^& B8 m while [ $ret_stat -eq 0 -a -r $LOOP_CTRL_FILE$$ ]; do ; J' v. u- L" [* t h1 H" s . $LOOP_CTRL_FILE$$; k% b+ {* [. ~8 t8 d: W
run_cmd $command $cmdline -banner 2 1 @# [; G3 z8 P4 ^; s9 j! j( V- S! z done;5 y" Z/ z. }' W8 L+ I; f
% R! c x: l1 E5 L7 C& q if [ $ret_stat -ne 0 -a -r $LOOP_CTRL_FILE$$ ]; then$ ~4 Q! N; z% k8 k7 k. n7 D
rm -f $LOOP_CTRL_FILE$$+ C m* B- c# V+ p
fi! _) P! ? y6 l) E
} 4 f, X# @0 y/ n( @& u2 R& Y5 y |1 _7 c1 n2 ^
har_check_ret_stat() . _7 [3 Q F/ [$ f$ J5 B: l% K( R) j{ + q4 V; y. S! ~1 o3 X if [ $ret_stat -ne 0 ]; then # @8 Z' Z& e2 r( e echo "Simulator returned with non-zero exit status. Stopping." 3 B( a8 }% Q2 N) J" g exit 1- R+ b& ^- y! h: _' {; G
fi. B$ v( r( b! M) a
}* Q& N* y: F1 i
6 s$ l4 j" D% a6 L" e
# # I/ }, l% L9 P2 s- P# set stacksize and datasize limit) R- T% J8 |8 C5 O; m) A- ^
# ! B7 \; w& ~1 l7 U . _8 q- {" D' z6 t' k' |set_data_limit : A" e2 j1 `% Sset_stack_limit # T$ q" @& u0 F3 e3 H5 y$ C# [* t1 z& B" s
#rm -f $LOOP_CTRL_FILE - [( X7 `- y4 C+ l1 e0 X3 g4 @" f: n5 Q& a
run_main()7 [, t" K9 L! h- M* r9 t
{! c0 \' I0 g4 f0 H
if [ $is_special_har_run -eq 1 ]; then; D, o9 s, T+ h# A% E
if [ "$har_ofile_prefix" = "" ]; then - m2 x9 R+ d ^) r9 {) @ echo "Wrapper bug. Notify Synopsys technical support." ) K; |* \' w; D' N- Q8 o& e. [% ~ exit 1. V0 Z% @4 d; ?" |
fi6 ^3 _2 k2 {* k$ @* [
if [ "$har_hilo_file" = "" ]; then7 U; B! [& V3 h' \
# no user specified hi lo file - do both runs G# s7 e* p: B* W$ N" H run_cmd $command $CMDLINE -har_one -har_setup 4 D' q6 Y7 a1 ^" d if [ $ret_stat -ne 126 ]; then y0 t* _( w/ m) n& g3 ^9 o r d: M
har_check_ret_stat- k H! s: d! R' t
if [ -r $LOOP_CTRL_FILE$$ ]; then6 l& Q6 R$ _" R) y+ ]5 ?8 }! Y
run_loop $command $CMDLINE -har_one -har_sim ${har_ofile_prefix}.hl % D5 g0 E# |8 i& F/ S+ j* F8 A rm -f ${har_ofile_prefix}.hl2 v* K* c4 v% u' ~
else+ a' v$ x7 X9 M: W* {
run_cmd $command $CMDLINE -har_one -har_rmhilo -har_sim ${har_ofile_prefix}.hl2 Y( Z$ B( v Y5 q2 P, @. c
fi# V- q6 j3 d( V" v
else , F. b9 e8 B; Y ret_stat=0 |. Q f/ ?3 I f0 k) d! R7 t
fi : D/ p0 r! C/ A" k else 8 N% Q7 B8 `* O, V+ K$ X # user gave a hi lo file name" F( F! c1 R0 n& u' x
if [ -f $har_hilo_file -a -s $har_hilo_file ]; then 5 A) m4 d" z( m7 [% j # file exists - use it - only do sim run! |6 L9 G/ k# p
run_cmd $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}' ?, _1 S$ q! U- `7 _0 a
run_loop $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}# `$ Z6 w a" w2 {- R- ]
else 5 P, ?* Z8 J; ` m% ^9 P) M # no such file - generate it - do both runs6 I. ` z0 v9 Y5 w
run_cmd $command $CMDLINE -har_one -har_fnf -har_setup) G' w3 y* ]/ L% c
if [ $ret_stat -ne 126 ]; then 1 d% ?/ v+ k5 R; D2 C* \/ T har_check_ret_stat / C1 k/ O2 {) ?9 V& j, t e7 e if [ ! -f ${har_ofile_prefix}.hl ]; then2 w; H9 G8 q+ }0 {8 @8 ?
echo "No hi lo file generated after setup phase. " 8 @5 f( e6 v- i echo "Contact Synopsys technical support."# q- T/ N- U; H& W4 f, f0 r$ T
exit 1 # [8 E7 q8 Z. R2 a5 W# N0 b else4 r( `) ~" ~$ B) I% h$ q
if [ ${har_ofile_prefix}.hl != $har_hilo_file ]; then+ ?" y3 k- d* B, |- g
mv ${har_ofile_prefix}.hl $har_hilo_file, b& E% ]5 p/ `0 M3 c! @
fi; J. B4 [6 w0 l4 ]
fi 9 _' Z! b& c8 s if [ -r $LOOP_CTRL_FILE$$ ]; then 2 j% @6 h/ J; A5 S& G/ T/ { run_loop $command $CMDLINE -har_one -har_sim $har_hilo_file 0 y* C* X) ]8 w1 f, e" y else R, i/ K& D4 ~
run_cmd $command $CMDLINE -har_one -har_sim $har_hilo_file9 r3 q$ f* |* G; k4 J6 _) m3 e# F; ~) P& ^
fi : n5 L! ]% F0 D& ~9 g8 }, w else " G/ w! v: u. b% m ret_stat=0. e P7 A4 L5 P2 P' V
fi5 v. v w( I- |% S* U' {/ C5 G# [, `; O
fi ! ]. I1 F, f, J0 B fi @- O3 u* h8 ]& H. V7 u
else ; g, i8 y2 A. \8 ~; |( l, {# don't loop if -har_setup+ ~, z# t2 f9 l+ m+ f" H
if [ $have_har_setup_flag -eq 1 ]; then / `# o" b* P. o, b; b- o+ k* Q run_cmd $command $CMDLINE* @" s7 G% Y$ v
if [ -r $LOOP_CTRL_FILE$$ ]; then0 _% s/ I" V1 c+ R
rm -f $LOOP_CTRL_FILE$$, I! |! Q$ ]2 D
fi 8 @# g" g3 ^% m+ F- y7 H4 X else6 z! S: g0 W: G- H) t+ _1 u
run_cmd $command $CMDLINE- L. S! o" N: y
run_loop $command $CMDLINE 4 ]4 ^: _' Z3 Z7 S fi , O1 V8 D0 L! \fi 7 u( {1 z8 A+ v* s+ f# e7 g/ O! x0 V' m
if [ $ret_stat -eq 0 -a $cmdname = "powrmill" -a $postgres = "y" -a ! -z "$workDir" ]; then 9 b& J: Y9 W" d6 y- B! h+ ~- }" c pwCreateErrDB -w $workDir -e $errFile; @9 a) n" {/ x/ ~/ U
ret_stat=$?4 x- T6 }# a; g% T( p) R
fi( b( l8 @) z5 ]8 i% e
} % r' k( ?; u2 w: y6 s8 D0 A / t6 i0 g e) Z, c3 |, }5 Y" z# rcleanup_alter(); `, J: ] z. }; S' x3 G2 n
{ 3 R' ~& y/ u% C4 t6 j0 p /bin/rm -f $ALTER_COUNT_FILE 1>&2 ! i) e; ~! |$ P6 M& v3 f /bin/rm -f $ALTER_HK_FILE 1>&2 8 U9 X: r! s; v( O3 W} ; Y1 ~7 w0 K, s * z" y. O/ b0 O2 s7 ^. w#generate alter temp files based on pid 1 a3 l5 o# {$ M) Y/ a8 oALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$; y0 V" _; I! d; y" C H
if [ -f $ALTER_COUNT_FILE ], Q- Q4 I& a0 G7 A5 m4 R
then + k, _+ l6 p* ^+ z8 o% P6 R% G until [ ! -f $ALTER_COUNT_FILE ] * a: b3 d2 d6 h2 q6 I+ v9 d: O do % d8 q* ^) d5 b ?) q n ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$ ' w/ z4 B% o! M% s, |3 e' W, k done + o1 Q) |) _$ s p& B1 H( Bfi" {( O; J9 ? |' Z/ j" r; W
export ALTER_COUNT_FILE0 ~7 d! J6 C. e0 u. g$ R
0 {& Q; C1 K3 X; O1 _$ MALTER_HK_FILE="$ALTER_HK_FILE"$$: v2 m) F' c* b! x- d$ O
if [ -f $ALTER_HK_FILE ] % h) x! m1 W5 N: ~( ~then ' O1 N6 I) Q; y3 w/ l$ l until [ ! -f $ALTER_HK_FILE ]/ w* @9 C% \' c; l
do $ n* x; P5 g5 T1 m {/ | ALTER_HK_FILE="$ALTER_HK_FILE"$$ : r% f0 P" Q: \" V5 f, J done* b& @$ \1 D' E7 C" t+ y
fi % O, R1 a* i$ M+ I/ bexport ALTER_HK_FILE 7 _2 R: u% `3 ? H1 M & \6 m. _% q- ~) C9 z) E2 H#generate monte carlo related temp files based on pid : E& Y& g0 q! `' G# D6 jcleanup_monte()8 c/ K) ] @) }8 D9 Z# M
{ ?2 l3 r* K9 G" L* k# s& Q /bin/rm -f $MONTE_IMG_FILE 1>&2 9 E+ q' |7 O; \1 i2 z2 K3 n. D+ C /bin/rm -f $MONTE_IMG_FILE.gz 1>&2' y3 i! j- W4 L8 _/ G: p
/bin/rm -f $MONTE_COUNT_FILE 1>&2. Z6 ~6 ?1 w* S' V! s( d
/bin/rm -f $MONTE_CFG_FILE 1>&24 O# |8 D; k8 G" \: C9 [: r
} 3 W. m. l ]. M " b v' U( c- g7 f# y" GMONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$" l6 c R5 L8 ^" w# r& \
if [ -f $MONTE_COUNT_FILE ]4 U; y9 R5 w( M- l0 P( \
then ( @ m9 ~1 C/ [5 H until [ ! -f $MONTE_COUNT_FILE ] : r% x. S1 V0 M3 h; q* n do 3 {" R; y* Q, D4 o! ], ] MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$ . R! y5 ~3 G, m. m+ E$ w+ R4 U done f( m/ E( U/ I( N7 {& ]! ?2 `
fi ! n3 K& @! z3 hexport MONTE_COUNT_FILE + K. k5 B; n$ P3 C* B- a T @6 d7 o- |3 v3 ~, ~, n8 G
MONTE_IMG_FILE="$MONTE_IMG_FILE"$$ ( g |0 k: }; U9 T bif [ -f $MONTE_IMG_FILE ] 9 N# @( L3 k6 L0 s/ nthen , ^1 O. Z. d! T! d- C until [ ! -f $MONTE_IMG_FILE ]+ x4 R3 [- O0 S( J- a
do5 |' F( r4 K. @1 p# N2 q
MONTE_IMG_FILE="$MONTE_IMG_FILE"$$; p U' I& G# Z0 R1 T8 g
done 8 b* a6 k0 a5 Ffi 8 E+ R V5 s% t2 z& B: Lexport MONTE_IMG_FILE! k# {8 v3 B* U8 B& g" {( ?
. K$ C3 V$ @. P+ O+ n
MONTE_CFG_FILE="$MONTE_CFG_FILE"$$" Y9 K% W8 x" W& @+ O1 E$ Q
if [ -f $MONTE_CFG_FILE ]! j8 E: u# T: ]+ \. Q
then4 A5 b: r) x; D$ b8 n5 O
until [ ! -f $MONTE_CFG_FILE ]" _/ p8 l! s4 Z) g
do0 M# w! s4 w# p1 a' q8 h" r& t5 W
MONTE_CFG_FILE="$MONTE_CFG_FILE"$$ ) i5 i( h" x& } done & ^* s- t0 i/ E; C& |* }fi9 d, K u& }/ B. q1 A
; L8 [! s% C' W. E' h. L9 H
# main iteration & o' j9 U0 E. Xrun_main' e5 |8 D. j; e d
* |9 ~: L8 Y3 I
if [ $ret_stat -ne 0 ] 2 l% G) b) Z3 o. k
then L7 ^) V% I& c4 W9 _/ f
cleanup_alter, O! k3 `- m+ f& }( b; H; f, F9 f
cleanup_monte) F! K2 [ f# l* F
Exit $ret_stat1 {4 ~6 Y7 f% n% a: F
fi' t3 W1 P5 z1 g$ C
5 f: k1 O& j# v! B1 |: Z
#Alter related iterations5 K u9 }3 n8 L+ a# T; I2 z
& F9 C1 T$ K0 {% ^+ t5 q
iterations=0 0 e8 v5 J( S9 V! J: ?# Gcount=0 6 f. o( w F$ R; o5 {if test -s "$ALTER_COUNT_FILE"& U: J- B9 t1 t6 S1 ~
then % o- s% E7 D2 t if [ -r $ALTER_COUNT_FILE ]; then h: R) ?! v) I) N) C, t
exec 7< $ALTER_COUNT_FILE 1 m9 v! C. W8 H& L7 z: v read iterations <&79 n' p ^3 ]: d( `6 y* j+ p
fi ; a& E' C y; E7 J1 {% Hfi, O3 i. V$ q) c
! N; c$ v" ~1 x$ D* Otrap 'echo Program Interrupt; cleanup_alter; exit 1' 2' G. B0 M' b' Q0 H1 h
while [ $count -lt $iterations ] 4 j% h9 v& L4 m) W* x5 udo 7 d* N: i/ O: W: f: j" m. ] count=`expr $count + 1` 9 b+ Q( ^7 |1 J- j2 [ ALTER_COUNT=$count( q, K$ E3 c: E7 K1 V( o: V0 K
export ALTER_COUNT2 {% g* k" W5 s J! [: s0 x
: j. k! b# @0 g" S5 _4 y( f) p- K, u run_main; `, n. ~4 m) ~. V3 O
% I6 q. A E8 Gdone # V8 ~. h. ^+ {0 `$ Z. f; c" O2 B1 k* ]( {
#Monte carlo related iterations , Q& `6 p# I/ Q1 J7 [0 Q x+ L ^/ [! X* ]
monte_runtime_summary()) L' F7 P* U1 X! l7 J5 V
{5 X3 N! c4 r7 q# Z: k
keyword_1=real _7 G6 \( v% A3 v9 y. a& r
keyword_2=user * |( m$ b8 n- `% l8 I! j( n keyword_3=sys 3 \ |) l% @5 t ofile_prefix=nanosim 3 f O' o3 I% J' F8 E" b h1 E2 C2 x7 p- C! h
if [ ! -z "$o_option" ]; then2 ^9 x& ~* o+ b' a3 n6 N' W
logfile=${o_option}.log , N: H" t! x# b: J else" c6 t- c r5 A- \( v5 `: \1 `# }
logfile=${ofile_prefix}.log 6 J8 [+ S+ r3 c( O9 i fi 6 ^$ P& Q3 N! _! G ! U9 t; h/ m/ c if [ -f $logfile ]; then- ~5 O u$ j4 L
echo "*** Monte Carlo Total Run Time Summary ***" >> $logfile , L% B8 J {# j: m+ G% c
cat $logfile | grep ${keyword_1} | grep ${keyword_2} | grep ${keyword_3} | awk 'BEGIN{ t_real=0; t_user=0; t_sys=0; } NF==6 { t_real=t_real+$1; t_user=t_user+$3; t_sys=t_sys+$5 } END{ print "\t", t_real, $2, t_user, $4, t_sys, $6 }' >> $logfile 6 R) X3 F( N; x' ], V/ l) l$ B1 j fi ; ~* Y7 }7 r, S) S0 U; N) S} ; }' i8 t; A" D: o: B0 D5 _. p# T$ R% S& p6 x+ ?3 b
next_monte=0 : Z1 \) L, U2 t% Hcur_monte=0. l2 q9 U, E7 m$ W
0 o1 ?) V2 g$ dif test -s "$MONTE_COUNT_FILE" 3 g9 q6 S( m9 w# Rthen ( U/ Y+ S7 @( z3 H if [ -r $MONTE_COUNT_FILE ]; then8 Q; ]/ r/ n. x% V! ]! l
exec 8< $MONTE_COUNT_FILE1 v) u# j" @8 K- w+ I" \1 r; b
read next_monte <&8 , n& Z4 |# P+ _* r' p8 n fi ( n$ Q m x. A1 b) `, N9 dfi * O! c' n7 _% V0 C) o7 h/ }$ f9 [3 g8 o1 x
trap 'echo Program Interrupt; cleanup_monte; exit 1' 29 V& j) R2 a8 H, b* H
while [ $next_monte -gt 0 -a $next_monte != $cur_monte ] 1 W" Q( }! |- B, _$ @, ^/ Ndo1 z4 s0 {/ E( E p2 J1 [ a
NS_CURRENT_MONTE_COUNT=$next_monte# d, N$ Y! E1 w# t! o" x
export NS_CURRENT_MONTE_COUNT 4 g( |5 D5 P% M* K5 o 2 m3 Y3 t9 Z% V! @% W- l5 X s% Y echo "restore_ckt_state save_file=$MONTE_IMG_FILE" > $MONTE_CFG_FILE / B; E0 P d" H7 j CMDLINE="$CMDLINE -c $MONTE_CFG_FILE" 8 g5 u+ k$ e( B run_main M/ V8 E' T1 g% ^6 k
/ N3 M* C# @% R cur_monte=$next_monte. k8 n9 t& E( g- h/ x
exec 8< $MONTE_COUNT_FILE5 g. T0 l" s. s# v E
read next_monte <&8% z1 X) y, @0 Q: X" X. t
done) f' P2 m2 j$ I: ~$ y" i. ~
& x! D. Q& |: h5 J& Vif [ -f $MONTE_COUNT_FILE ]. J7 w7 V7 X, p( i4 `* e8 c% W
then ' J7 L' h+ t, G monte_runtime_summary' A4 X1 z7 m4 t- S
fi( E$ N& w8 E) A- ]