) z6 v& K5 Y. o y2 \1 o4 Qfor argv in $@+ L* x! Z1 Z( }* ^- ~" m4 H
do ' y6 s* p0 A( I6 I: r3 @9 [ ORIGINAL_COMMAND_LINE="$ORIGINAL_COMMAND_LINE $argv" * q1 D& B% N" S% k if [ $argv = "-gadb" ]; then/ R! o7 V4 ` H( V7 M2 E/ A
databaseOn="y"7 r6 G4 ~7 `6 c& E# D2 @" x2 s+ b
workDir_next=1 / x! g, P/ g) g9 p5 r' n elif [ $workDir_next -eq 1 ]; then; v0 Y g+ k r% z4 ^% t/ u1 z
workDir=$argv ) ]) D8 w7 I0 e6 P+ |# B3 A7 [ workDir_next=0 9 L7 t0 A- l7 s3 \ elif [ $argv = "-ga" ]; then* q! \& l0 X) x/ ?8 R
gui="y"' \ G+ j$ v2 L$ d2 G' i
elif [ $argv = "-f" ]; then6 W0 T* Z' L t, ~% I. b3 J
f_next=14 N9 s- k# g# u, ?- T, C
elif [ $f_next -eq 1 ]; then7 h3 r6 b9 d7 \- U7 O3 n, D$ ~* U; X
f_option=$argv% s5 M8 Y+ \9 t( S7 W# B+ Z
f_next=0 ) `0 k4 n* ?( z: V! M: a elif [ $argv = "-o" ]; then& L1 W( T7 M. l1 F! a8 h, T; I
o_next=19 H! x4 {$ H3 v5 p
elif [ $o_next -eq 1 ]; then 5 n c" d1 A+ w5 l0 _ o_option=$argv 8 ], Z+ c5 l+ R; m6 Z: S; s, x o_next=0 1 L- F0 a3 Q" g$ s: ~$ g( c1 K I- v fi 2 y- ] o; `) u/ q% rdone' F J/ B# v% i- q# L
echo "Command line options: $ORIGINAL_COMMAND_LINE" > $EPIC_SCRIPT_MESSAGES_FILE : F) }7 v n4 V7 p3 P# ~ . Y }. W# d3 l' D5 rif [ $databaseOn = "y" -o $gui = "y" ]; then: K3 T8 l9 k2 C. U$ z4 h+ Q0 k+ H
if [ $cmdname = "pathmill" ]; then5 P9 x% S; ^7 P+ T0 r' }
if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" -o "$EPIC_ARCH" = "SUN4_SUNOS_5_64" ]; then : u; {5 S& _/ z3 I: g* Y: E' _ ostore="y"8 f# k2 ^) B7 ~7 M# M5 ?
postgres="n"& e& u5 z. ~* K/ ^5 ^. J$ d7 H
else$ b, v- B- d. B
echo "athmill GUI is supported on Solaris platforms only" 1>&2 - ~9 K& Y: n& I& G" k
exit C* s3 Q; j. }
fi4 |% } e; R# P- V
else ' K' M) ]' ^& Y: |! D; U postgres="y" ; \8 L. }3 y! O4 i& O ostore="n" ( \3 v+ ^% s1 Q- Y) x( _ fi4 a: F7 Q: `( L3 ?/ n" ]
fi3 a5 B$ f& H7 O2 j. x3 p" C; e: c
4 F. a% Q9 a8 j6 P& }5 Q- p
if [ $gui = "y" ]; then 0 g9 u/ ~6 q) l4 \3 A V7 o9 _ if [ $cmdname = "powrmill" ]; then $ C w& F- [; H5 m+ N+ m" y2 B) T3 } pwga $@+ V3 {" v) C( M4 A. X
exit* U3 E( ?* w" E, W! l; j; U( q. [ n1 ~
fi - D, \7 {6 l; \- u( d6 H) _3 s0 G ) }# @0 I R! z
if [ $cmdname = "pathmill" ]; then 9 S0 k( B' s- L9 [4 N* ^; Q) t9 n if [ $ostore = "y" ]; then* j7 k4 U, t) q V* E4 z4 E
./pathfinder $@ 5 T. a5 E' M/ y9 S exit. u1 I/ `" R* Y6 |9 N- {5 O
elif [ $postgres = "y" ]; then: L( o; @+ g3 \+ k8 J9 z6 p) i
pmga $@; l! g- `4 x6 D
exit 6 `5 x, G+ R. z! Y fi " y) B3 O/ P) @; z5 t; S fi # z+ r( }( U: s8 w. ~" Z- Ffi 3 v4 i8 }" w, F/ I $ l, v( g# w" ]4 v* h7 O5 h8 t- gif [ $databaseOn = "y" ]; then: t/ w2 l) c) `8 [# u4 Q
if [ $ostore = "y" ]; then 0 V. D) g: ]$ r6 p5 |; [# Z. H/ ~ if [ -z "$workDir" ]; then; L9 j$ a2 z; @+ e# z2 P
echo "Error: Missing argument for -gadb option"- Z, ^+ a$ F$ _+ E
Exit 19 M) {3 _$ H% n* a2 S) R& b
fi 4 `: Y' X% a* o. T ^6 b fi $ E: |; M' v4 k2 W' B! a if [ $postgres = "y" ]; then( V4 [) N4 i1 r" H" G& _$ I
if [ -z "$workDir" ]; then b. T7 t5 H0 d8 ^# B" f echo "Error: Missing argument for -gadb option"4 n# l/ W3 S3 `9 y* k" k
Exit 1$ |) q( R* E1 d' i7 M
fi $ l% w% _3 j' L2 h2 b: s( { fi * f$ s' I7 E2 |1 Pfi ' e7 G1 K- X, u, J9 |5 v9 @) A. x8 Z7 y6 \. I
if [ $postgres = "y" ]; then % a }+ d: }' B* Y5 S# e, B: e ( L8 e5 w& a$ \+ y l if [ -r $EPIC_BIN/scripts/gui-init ]; then 6 C7 j/ ~; l/ g7 _ . $EPIC_BIN/scripts/gui-init9 f, i) Q" x4 W- Y2 m. S) H
elif [ -r $SES_ROOT/bin/scripts/gui-init ]; then" k& y4 I* m0 O; b* B# f
. $SES_ROOT/bin/scripts/gui-init* ^. l9 R8 j5 G2 |, K2 }
else, W9 B. |; \0 I+ T5 R5 ]
echo " ** Installation in \"$EPIC_HOME\" has been corrupted!" 1>&2 / o* G* \$ @" ^) ?* A! A; c3 Q7 }( i echo " file bin/scripts/gui-init is missing." 1>&2& j, G) C; i6 j. q2 W
fi $ ^) p) G' T: d S; E; {2 T, G8 m3 m: O1 F+ q# }+ @) K: B2 B, n
workfile -tool $cmdname $@ - I% E, v7 c' `$ m/ l( {9 }fi; f0 S* ?6 {% F
. I T% [9 C( Q' ?# S" x7 a
if [ ! -z "$o_option" ]; then 7 f6 t8 B& @2 x errFile=${o_option}.err : v+ z4 g1 F2 C- B, Q5 i! \elif [ ! -z "$f_option" ]; then2 C$ T! `* m0 v4 u5 Y9 S, Q+ M
if [ -d $f_option ]; then L/ h( E" _/ z W/ E
errFile=${f_option}/powrmill.err* E3 K8 f. k" P& c' I
else errFile=${f_option}.err ) F. X' V. o; {1 A) O fi ) j9 R u: j2 R2 `0 B( }- w) Ifi( ~9 ?5 G/ s3 U/ @ a: U1 j! z
0 n5 t- {5 p5 u- l, C( x4 v' ^) {
& x0 t* J0 ~% J4 | n! ?+ Y
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then 6 \4 }5 s4 @5 r2 J" k rundir=.epicrun 0 v! y0 B) \. n `( D. Lelse 3 S7 u0 l" P3 F: x rundir=.epicrun$$; r9 x4 I; N5 T' s( B1 `
fi ( N* |1 Q/ F+ d5 N9 u 4 L7 k# I% ~4 c h; F$ Qlibpath="$rundir${EPIC_DLIM}$EPIC_DIR") n o( h! U) [" i* J j
3 f5 ?4 K4 [- J5 Q4 v" C$ @. o# f Ccwd=`pwd -P`, {/ t* S. O6 {8 a
if [ $cmdname = "acehdl_w" ]; then " d2 [& l" \8 q: v+ @, j cmd=`basename $0 .sun` ; A% G+ J7 u7 U$ m cmd=`basename $cmd _w` & ~ q/ u& T% i0 t" a3 z2 ?else3 X8 L4 x; m% F/ H$ d" ^; z
cmd=`basename $0 .sun`: V% f: A( M* u4 g
fi 6 G T! Z v; E* s & Y, }0 |5 U3 T' Ccommand="$EPIC_EXEC/$cmd$EPIC_EXEX" " P, u: R1 q! j[ ! -x "$command" ] && echo "$cmd: not installed!" 1>&2 && exit 1 ! }# I+ n! Y2 m9 u$ x: o" _8 ~ ( F8 Q# v: i7 [1 h$ k& h& w& b# buildmod extracts -u/-fm options and calls genepiclib {2 K) S+ B' ]% E4 E8 F
# It also set the remaining options to variable CMDLINE 8 }' m/ J8 O% ?) p% [# look up in .epicrc for -fm & -FM parameters ; i$ g. w& N1 I! r3 U! D- N `/ K" m3 r6 q v1 i$ M
fmlist1="`get_epicrc ./.epicrc user_adfm_obj_modules`"$ x! I! ]6 `. L e5 r
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules`"- Q% a* p$ [( ^9 I3 {5 s- y
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules`" ' y" Y: v, u- | + B1 ~7 h& {( f3 q+ J
FMlist1="`get_epicrc ./.epicrc user_adfm_obj_modules_force`"+ r/ r2 P1 N8 g. G5 B* C+ z V& J
[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules_force`" 0 Z/ y6 D+ P& t; |4 w+ `# j4 y" ][ "$FMlist1" = "" ] && FMlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules_force`" : a! B- b: q; g- I v " Q2 V2 x) e, D; |7 H7 G( Qif [ $# -gt 0 -o "$FMlist1" != "" -o "$fmlist1" != "" ]; then/ K/ H0 w) J- U, B4 P1 S; \
# note that the buildmod script will set the CMDLINE variable) i. j4 a/ ]: s5 R2 V$ `
. $EPIC_BIN/scripts/buildmod/ A( F* z \! x- T
8 M! M2 P: f! i: `5 j4 o( y #echo "This is the value of cmdline=$CMDLINE"5 T0 d) \: O( U$ P
#exit 0 + ]4 y* W" f" \5 E5 M2 a+ P8 \ ' X) B7 }) d1 _& E2 D # if a new timemill/powrmill/pathmill built, run the new one/ q( |- e8 h# B; V2 p
[ -x "$rundir/$cmd$EPIC_EXEX" ] && command="$rundir/$cmd$EPIC_EXEX"/ |4 P( q8 s8 T# R3 w
fi 3 S% Q( K1 Y* N7 H% x6 w* L! X' c( `) E& M7 N+ h5 ]
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" ]; then& L& o. o; k, g6 u9 L: {
if [ $have_har_flag -eq 1 ]; then ' i, s3 D4 X! T" Z( W is_special_har_run=1 8 u3 x2 C0 O; p, U- M! Y6 ] if [ "$o_option" = "" ]; then b: ]+ X" R+ i- b case $cmd in: D& M+ ]9 W: ~1 R
timemill) % ]7 o- {4 U& W+ ^( z1 H har_ofile_prefix=timemill ( R0 F! [/ V5 L3 c- s& R; p+ m ;;2 y H% c F: ]" z& x: B; _5 C
powrmill)5 N: U& d7 q a" u& f
har_ofile_prefix=powrmill 7 X$ M8 B7 r$ ~/ e* f ;;0 X8 V# B+ T$ ?! X4 |2 ^
nanosim). X( H& {, g2 o! u, ^
har_ofile_prefix=nanosim 5 @) O5 S6 F0 o* \2 Q. y9 G ;; h- |- k5 v$ c6 m; x7 ~$ e4 F
esac5 U+ M+ C0 ?7 q& n% o
else- Z' v/ D' ^% K$ J6 D
har_ofile_prefix=$o_option, F: R8 w7 |5 \) F! t7 @
fi; ?% |2 U; Y- {# Q7 U
fi 9 V+ l9 L0 d3 @( H& X( j- Wfi/ M( h4 J& h' T: d- ]
! r* H& B# _0 D
# Call Double precision version of the product if -D 9 \" N U J' L- y: [. D% ?" l# or simulation time > 1,000,000 ns.* R* c/ }. N6 Q, P. P
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" -o "$cmd" = "railmill" -o "$cmd" = "pwarc" ]; then6 N w$ s! i! S% ]
7 X, r$ z- m% U' V% W& {# `% d, f! f
# Now the binary always has the ACE feature + o% T. i0 C; m USE_ACE=YES # x8 I M( w0 U3 [* @" C6 @/ [7 r : {* B. W: d- v9 c+ l! b' D" R HAVE_DP=NO8 O" z9 F) [( Q9 o6 u5 M5 U8 w( S) y
EXTRA_CAPACITY=NO- r9 \, c( Q* p, F# ~
DB_REAL=${FORCE_DB_REAL:-"0"}! l1 c( M/ B% G) g# t" Q
) R' K# f/ {# j$ D # Enhance for ACE ease of use 2 a. G: D2 |( H" ?$ W! Y8 e# j # If no command line option or only a -T option, do: . ~2 H' g) o) Z # 1. set -A option 1 a c6 ~$ Z' Z& x2 @$ X # 2. assume input file to be hspice $ c7 E* K# x5 ]0 E # 3. set -o to input file prefix( n' |3 J9 N7 e( a3 @! E8 T7 Z4 q
# 4. set -z to input file prefix , S U5 ]2 i8 l2 M8 k8 y # 5. set -c to default config file ( A3 C1 v2 m3 e) x- o netlist=""2 i/ a" ]' I. a4 W( V
minusT=NO$ g7 \1 O# d7 S: m
useStdCmdOpt=0 , C$ Q0 s4 R( y' n5 S7 T* } prefix="" - p7 q9 ~1 n" B; I) d6 } circuitType=""( w* C( T. f M6 Z( \
for opt in $CMDLINE 9 q; b6 A# R- b+ n' Z1 [ do9 H! m. ]$ |3 ^ T: L
case "$opt" in 4 r2 p# x* l2 a3 Y- F8 f -T) 1 o+ V. `% c& G+ U minusT=YES & j7 T" X$ {1 P. m ;; 9 H. K- \$ L. d5 ^. k5 }4 J+ y! ?+ ? -*) ) j( M3 S! g* C- s, V # using standard powrmill command line6 G' g* J0 Y) ?$ P4 Y
useStdCmdOpt=1# t1 N4 C5 i' c, j! a4 o& B3 {
break ( O! V: X2 o1 M* v0 K8 ?8 J! } ;;% y$ \: ]8 y( _2 \4 L. b3 ~
*) 6 u! Y# I: H. P if [ "$minusT" = "YES" ]; then# G/ {( o0 c1 @6 c
circuitType=$opt9 D- X4 j+ [( J5 S' R9 A
minusT=NO # reset flag 3 D7 F6 Q. E0 E# t: M! { else % |) m2 k+ R, d( x/ s
if [ "$netlist" = "" ]; then 0 Y% S3 A# X. t6 Q% z& d prefix=`basename $opt`$ I. K+ Q; t; z9 _2 n* _. n0 V' |
prefix=`expr $prefix : '\([^.]*\)\..*' \| $prefix`" w2 j* ?9 t7 ?4 H3 Y9 [
fi 0 i5 ?& W9 u6 g5 f netlist="$netlist $opt" 3 k! r; p+ n1 _2 U fi # g: v d- E. E0 W5 y: q ;;% p U% @# f2 S4 ]! b0 a2 g
esac l I8 H; g0 k# B3 a, j3 j. P
done* W- `6 X$ {2 |0 i. \3 b/ L( `
- I J3 M+ u( y: O6 O- T) j( x1 C6 E0 I9 K: _; U7 s# k/ Y( `& G
if [ $useStdCmdOpt -eq 1 ]; then 2 p+ p6 N; x7 ]+ V$ m; k # use standard powrmill/timemill command option * y$ w+ u( y( ^ for opt in $CMDLINE $ i* R3 ]' W' ? O# l do9 A; E- T& [7 ?( d, S
case "$opt" in - R, o5 p2 u0 z k2 s -A) ! Y* r9 a& P/ t T DB_REAL=1 : Y1 c2 z8 N* a6 w ;;: J( i4 d# |- K) i( ]8 D0 [5 w$ L
esac : e+ O0 f4 o! G8 _) S done 4 J, n/ y% }5 L8 a: h if [ "$netlist" != "" ]; then% Z' r, ?6 O: k1 G
CMDLINE="-nspice $CMDLINE" 9 a) g% M7 u2 W) B" j fi % D1 l! G% J: ~) W. x% } else) @( M3 d6 h( X& ]2 | I
if [ "$netlist" != "" ]; then ! Y9 l, O+ ^) s EPIC_DEFAULT_CFG_DIR=${EPIC_DEFAULT_CFG_DIR:-"$EPIC_AUXX/etc/$cmd"}& e) M: b0 o! a. i7 x) O. l
# construct new command option* C9 b1 E3 g7 s; a+ D0 b
if [ -f $cmd.ini -a "$circuitType" = "" ]; then / ^2 x" Z# Y9 e+ Z1 E CMDLINE="-nspice $cmd.ini $netlist"4 B/ i3 q) E* y5 H+ T2 p
else$ p9 M6 y* n) Y- f: m
if [ "$circuitType" = "" ]; then ^- p: t# X0 ]7 ^9 d* l circuitType="msana" - d4 |; M+ B. A) Q, }6 b6 Z8 f! U2 d fi6 S1 K' t1 M, }' |% Z, c0 p
CMDLINE="-nspice $netlist -c $EPIC_DEFAULT_CFG_DIR/$circuitType.cfg" + C" e1 f0 O; M' q fi4 ?. x! h" {+ p. ?$ b0 X
CMDLINE="$CMDLINE -A -o $prefix" ' `, H' H% h t7 D# N DB_REAL=1 7 e3 _1 F* c, \0 `. R$ B2 J( S echo $cmd $CMDLINE . C h" F: W' r- R8 H: e- G fi & s1 M! y. s7 ` fi ! S% }! ]* `, Z$ w7 h1 Q2 ifi # cmd is timemill or powrmill or nanosim or railmill or pwarc% ~. \' ]; C. z
C! M. K/ g8 d( N1 a8 F" U2 R[ "$HAVE_DP" = "YES" ] && [ -x "${command}_a" ] && command=$command"_a"0 _8 p! U6 q' `9 }' G
[ "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a" ] && command=$command"_a"- V" \% O! P3 K
[ "$USE_ACE" = "YES" -a "$vlog_design" != "" -a -x "${command}_v" ] && command=$command"_v"8 p- V% e+ K* n* N0 A
! h# q" v2 S- U ?5 @; w/ e
if [ "$__engine_wrapper_called__" != "Indeed" ]; then 9 ~3 ?4 U0 K+ o/ A9 w* u __engine_wrapper_called__=Indeed ) c8 }' e l( f3 G! | if [ "$cmd" != "amps" ]; then9 y' I8 d1 B& W% W: c) E- u8 B
export __engine_wrapper_called__; @& o3 }2 K; s& n: }
fi * T$ X" S8 w, b- f, y( q- |0 u , k4 ~6 A8 t9 K8 \ trap "cleanup" 0 a) s" u& \' b4 a trap "" 2 + D+ F* u6 [" N" d5 |) ^# _ $ N4 _3 `6 H( ^* A. J" i8 x* B [ -d "$rundir" ] && rm -fr $rundir / w+ J0 f2 [7 j+ u/ P [ -d "$rundir" ] || mkdir $rundir! v r9 C$ i2 V2 U# ?' P. \
, h& C9 L- T) f, M8 Z
case "$EPIC_ARCH" in 8 d- C) _: P, H- L/ ~" [' ]9 r6 y *SUN*64) : @' p, M3 q' A3 A/ O# D# G" r0 ~
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH", F+ C8 c& K( F2 X# s- Y9 b# }
export LD_LIBRARY_PATH3 Z8 |" o6 i Q. K' O
suffix=.so 9 [! E# K0 Z. l# I$ L6 D0 z: f ld_err_code=127 N) ~6 N. C9 E: Y7 } ;;5 b% q( y, U2 n7 R
*SUN*4) 0 ?1 V3 v7 k% p1 v3 k
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" 0 a% W; f% ^$ H* i, r export LD_LIBRARY_PATH 5 j' b* o2 E8 ^% e' U' z suffix=.so.1.04 r9 t9 |7 _, S2 q; `8 N$ s9 S
ld_err_code=1271 B! m0 N; i; d: B; J
;;3 L. l) C+ [3 C
*SUN*5) 2 z" l$ h+ S" @; H, B* o LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"4 w# h; I- l- B4 w( T# P) c
export LD_LIBRARY_PATH - J1 v4 ]7 V* I+ k2 J suffix=.so2 M9 x! D1 q4 ^8 q/ r9 H4 \ F
ld_err_code=127 / ]' S, ]) E6 l8 A ;; % z# k y4 `7 e. J4 \ x86sol*) 7 n; n6 W0 f7 [. s
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" 7 ^- s: @, w% W6 J export LD_LIBRARY_PATH; [$ G8 o& Z5 c
suffix=.so3 J* @" P" l$ g$ Z0 g
ld_err_code=127' i& F @* y8 F5 v& M [* p% ?
;;! E2 O! j& Q- e$ C1 t7 c% a% H1 T
*AIX* | aix64) $ l4 U6 O" G { w' k4 i # When genepiclib creates shared objects, it creates a import file and / t7 j9 i* Y# o3 g
# uses timemill as program. So at exec time,program timemill is needed 7 p" d# d- U# u+ `
# in LIBPATH 9 H( h; E& ^( j) ~5 D $ln_default $command $rundir/foomill 9 e( j2 h @1 i5 }1 j# i+ c- g7 J LIBPATH="$libpathLIBPATH:/lib:/usr/lib"* b4 t7 ~ e3 N4 {7 X, e- k7 Y# v
export LIBPATH 8 \1 t) w2 t& R" d/ j: S suffix=.o " |% V" _: r+ O. f5 T; P ld_err_code=8. ^& X/ @+ V' v0 |* o
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then8 w" I0 x. ^ q# U& U6 R0 R# }5 B
tdir=`echo "/tmp/d"$$` ' Y' Q$ w# _8 S [ -d "$tdir" ] || mkdir $tdir I) Y2 H# \0 a% ~+ d b if [ -f $EPIC_DIR/libCustom.o ]; then" ^) y1 k# b. n0 u# j) D2 g: x
cp $EPIC_DIR/libCustom.o $tdir/ 2 S$ Q/ y9 `- p' O $ln_default $tdir/libCustom.o $rundir/, b6 H8 p4 X' j
fi6 m2 o/ |* u9 X* H) x
if [ -f $EPIC_DIR/libModel.o ]; then! P6 r0 P4 b4 w( X$ U& p
cp $EPIC_DIR/libModel.o $tdir/" Y1 i/ a) d3 ?3 l3 U
$ln_default $tdir/libModel.o $rundir/; Q! w- ?' w. O- [1 u
fi( S% \7 b' r4 c2 z* |
if [ -f $EPIC_DIR/libFuncModel.o ]; then - N: J* y; @. E% C/ |2 S& g cp $EPIC_DIR/libFuncModel.o $tdir/ 2 t& h' I0 M( q, E' m $ln_default $tdir/libFuncModel.o $rundir/ 9 q% i) _3 L5 @ e2 ] fi 0 z* f" I- S+ A$ a. N# A if [ -f $EPIC_DIR/libFuncModel.34.o ]; then' T" Z g. a9 K, J: z2 `6 T) i0 ^
cp $EPIC_DIR/libFuncModel.34.o $tdir/ $ j( n7 y; ~# n $ln_default $tdir/libFuncModel.34.o $rundir/ , L+ b( [$ v0 T6 F7 Y fi ) x8 r! u) ~- z' \5 @ fi # w+ ^. K& J$ U, K9 C #Set the IBM flag to enable more shared segids9 M. O0 V& p V4 s, {
EXTSHM="ON". ^% a7 s3 t' _: ?( T- \+ c
export EXTSHM. }8 H5 U5 z: j4 R- W0 q$ v
;;7 `4 w+ T( ~$ c6 v4 c0 U
*LINUX*) 4 U# ^/ g) }8 O. K+ M' ^4 a suffix=.so7 s/ x2 q% _! F. [$ U6 q) p8 [
ld_err_code=19 V% ^6 h& J2 {( ~! ]
;; % u0 a7 P* T4 o$ z( U *amd64*) ) a5 R; v. y6 C% K9 a suffix=.so4 e3 [7 T; B% E% B
ld_err_code=1 % j2 c6 M4 Q- K8 Z ;;/ o9 X! T0 d' e a7 n, ?* D( P, S' u
*suse64*) " m$ \8 b2 D5 Y suffix=.so / l; K6 u. B D7 }- z ld_err_code=1- }( z2 G8 X K/ `% V+ e+ T
;; ' [& O3 c* R1 ^' q$ c6 g *suse32*) " ~) F& k0 O2 S$ B/ D3 o
suffix=.so; R Z4 k: }0 b* x4 {6 D" n
ld_err_code=1 2 \! V9 |, o* f3 g, f) E. v! k ;; % o' @3 e- U2 r. [3 \$ @) X esac6 }0 i- g. t9 E
. e/ {; U1 w' V5 k" n) Z# l
[ "$has_custom" = "YES" ] && ulib="$ulib $cwd/libCustom$suffix" $ R! c( L8 r9 ?0 ~0 s8 V1 x" S [ "$cmdname" != "timemill" ] && [ "$cmdname" != "powrmill" ] \3 @9 o2 q! A3 ~# G2 \2 |3 L U
&& [ "$cmdname" != "nanosim" ] \' N: I8 Z1 n, T1 O
&& [ "$has_model" = "YES" ] && ulib="$ulib $cwd/libModel$suffix"4 u1 k8 R$ c6 T* l+ V% Q
[ "$_VA_" = "YES" ] && ulib="$ulib $cwd/libva$suffix"! ^; y I. Y+ i* `, l1 N( y
5 \* n3 F! Q# a6 j
#Look for command line option for libFuncModel.so 5 M* O/ V( A; h. G; a& o# user_library_next=02 ^: K; G; K: a) m- @! i
has_fmlib="" 5 K7 K) x7 \/ R! U5 w, I) j for opt in $CMDLINE) ?2 A* s8 [, z9 g6 t
do! P, R7 E# k- w
case "$opt" in ' r( O2 W' q: D' o; h8 H) H
-fm)+ _' s Y+ i' j- |6 p' E: N
CMDLINE="$CMDLINE $cwd/libModel$suffix" 2 ?4 D7 O7 i! }+ N ;; : U/ l: G+ q/ U -fm_user_lib) 7 N) S; a# X6 c: Q7 @* ` has_fmlib="YES") o: B3 m! J# B, T8 z! L _
# user_library_next=10 a+ U# W; R* B
;; / `9 }1 l$ ~: n5 o4 ^( q$ D1 K* y -xc) 0 M7 J0 o1 j9 Y' S7 T
if [ "$EXTRA_CAPACITY" = "NO" ]; then 1 H* G3 b2 S' |+ o1 u EXTRA_CAPACITY=YES 2 {3 ?) j S/ Z1 \ fi ) R/ d5 F1 k. @* ^* E ;;; g1 W% [- ]0 {- ^* h: d' U7 O
# *), y6 v1 z. K m) X5 I) N! t
# if [ $user_library_next -eq 1 ]; then) h: @% ?6 K1 O* u" {1 b6 b
# if [ -f "$opt" ]; then 4 c& y: L) b/ L% D. ~# libfmodel=$opt7 O0 e" h+ Z* X5 _' C9 a( n3 s: \
# else+ F4 v& i r: ]& l0 ^4 z
# echo "-fm_user_lib: Specified file not found"% V1 O3 K6 ~* T) C& k3 ^% u1 r/ T
# echo "-fm_user_lib: Specified file not found" >> .epicscriptmessages ! }* O' F j1 G# fi . G0 ~5 Q# m4 l+ E% {( J8 R# user_library_next=0 8 _# _0 e4 }) a3 _7 @# fi9 l N; Q0 R$ H8 d- y
# ;; , N) D$ Q! h- U2 f( R! B2 M esac3 x; C) i: z; Z( x$ l: x/ T
done 1 [+ A+ a) c$ @* f3 T4 z$ @; I, Q; a- T. R z) d! D( Y
if [ $cmdname = "timemill" -o $cmdname = "powrmill" -o $cmdname = "nanosim" ]; then# l! ]& T2 I4 T! g; k
flib="" 2 i7 x& A9 O1 T. V if [ "$has_fmlib" = "" ]; then* ~5 x3 P1 s- L. \
flib="$flib `get_epicrc ./.epicrc user_libraries`"+ Q$ M( A2 T& D) v% [ L
flib="$flib `get_epicrc $HOME/.epicrc user_libraries`": L" I5 r: V0 [- M7 R
flib="$flib `get_epicrc $EPIC_DIR/.epicrc user_libraries`"$ g: x7 k# b9 g& W
fi& \( e% x) u% T5 W* D8 {7 q& b
fi8 h5 L6 E5 i$ u5 o; L+ \
8 G1 w8 y2 k8 G' [ for i in $ulib- u* u$ ^6 a7 a2 l7 d1 n. X
do- d) b8 u" E* p( e2 W" R* K
[ ! -f "$i" ] && continue' n( N3 h3 L- C+ W
dir=`dirname $i`; cd $dir; dir=`pwd`; cd $cwd , }: B1 [7 ?5 Q/ A i="$dir/`basename $i`" 6 X7 a6 d3 [2 S4 ^" U4 r case "$i" in 6 Q! g$ J/ N% X( p+ p: j, `+ | *libCustom$suffix*) [ "$libcustom" = "" ] && libcustom=$i;; 6 i& E( b5 K; ~1 L H/ {% C# t: q *libFuncModel$suffix*) [ "$libfmodel" = "" ] && libfmodel=$i;;- T$ Z) T( r6 T O
*libModel$suffix*) [ "$libmodel" = "" ] && libmodel=$i;; ' \% S t1 w( A( T! B/ S0 j *libva$suffix) [ "$libva" = "" ] && libva=$i;;: }2 N4 d2 Y9 R P3 w
esac" n6 b2 w, l9 P& t
[ "$libcustom" != "" -a "$libfmodel" != "" -a "$libmodel" != "" ] \ 5 [* \1 W F j7 Z4 L8 x && break ! e2 O% E( e4 l done 6 N6 S5 W5 _- q- C. \1 D+ B: ]1 X7 t
# symbolic link shared libraries to .epicrun$$ 6 [! Y+ V2 G' C* z/ r) h cd $EPIC_DIR; epicdir=`pwd`; cd $cwd& p/ @: ]! ~! r1 F2 C' k- _( D
if [ $cmdname != "timemill" -a $cmdname != "powrmill" -a $cmdname != "nanosim" ]; then / c$ |- u5 q- }5 Q if [ "$libfmodel" != "" ]; then " I' ~, r* }/ o# ^6 d [ "$libfmodel" != "$epicdir/libFuncModel$suffix" ] && \+ ]+ L3 A+ |) O/ r, l+ M) a
echo "Using $libfmodel ..." && \ c' {' T/ r( T
echo "Using $libfmodel ..." >> $EPIC_SCRIPT_MESSAGES_FILE ?! B8 E* }' R; h* R if [ -f $rundir/libFuncModel$suffix ]; then" g* w; L5 @1 b4 o
rm $rundir/libFuncModel$suffix1 [ [5 H/ s; R' S8 a! b e; x/ K
fi . V; ~ E" v* R* F/ [$ ] $ln_default $libfmodel $rundir % m& M4 E8 g# j" b- A' ?. k
fi 7 D) h# B% v+ D if [ "$libmodel" != "" ]; then 9 Q# f( i* R ^0 l+ J [ "$libmodel" != "$epicdir/libModel$suffix" ] && \) M2 A) [2 G# E& R3 w, W' y
echo "Using $libmodel ..." && \ ! g$ X9 A; |; v% B1 u echo "Using $libmodel ..." >> $EPIC_SCRIPT_MESSAGES_FILE4 {5 s b! b! @" A
if [ -f $rundir/libModel$suffix ]; then0 P2 U! g# O) _ u( W+ }
rm $rundir/libModel$suffix % b9 {4 W5 t! f* `4 t" b fi& H3 r9 j! m; ]5 [7 |
$ln_default $libmodel $rundir 4 K4 m( ^ w4 [3 t7 c. p7 M fi 2 A" F) l( J1 N7 u6 {/ [0 G+ y( E fi" e, M" N2 k" J
if [ "$libcustom" != "" ]; then 6 P6 K- [7 d6 x& ~# T [ "$libcustom" != "$epicdir/libCustom$suffix" ] && \2 M9 W2 ?9 ^$ }$ ^: ^
echo "Using $libcustom ..."4 v% i, A; g) b$ u8 `$ D0 j- i
if [ -f $rundir/libCustom$suffix ]; then3 Y7 Q6 X. d) d9 S
rm $rundir/libCustom$suffix / f6 Y6 v- S" k0 t# R9 J! j2 T fi / d* E2 u( y, m+ t $ln_default $libcustom $rundir 6 s$ e2 V* w# d8 X" I fi3 t7 `) h6 u5 Y7 g; P
" E- a i5 P& f$ C2 {4 J4 {+ t9 m( | o* j if [ "$flib" != "" -a "$flib" != " " ]; then3 g* L' B! n+ P
CMDLINE="$CMDLINE -fm_user_lib $flib" - p/ C* H3 y8 d+ m0 ^+ |* o% J fi : N& Q% v. i, C; K" ^+ W ) \# }6 J4 A6 X% r; t8 ^* W7 O if [ "$libva" != "" ]; then6 O: Y1 g2 t! h+ G) _
if [ -f $rundir/libva$suffix ]; then $ x7 |+ b' W' H rm $rundir/libva$suffix' u& L+ M' J4 n! c
fi * O2 W& a" C( R $ln_default $libva $rundir ! m8 k" E/ o! N' @ fi / [ P. Z) ?9 B' ~5 }, B# X- J; G: U, p4 `" s6 I: |
( N3 f+ R5 X3 L+ \7 m # VCORE design library # C6 {1 O) T: u! ]. C6 _0 S if [ "$vlog_design" != "" ]; then 0 F) M! M/ X! N. a! n( e3 z8 q $ln_default $cwd/$vlog_design $rundir/`basename $vlog_design`; ] d0 \) ~; n
fi% l) P, o4 w4 C* `" e1 {: J
0 D6 E- G/ v% d# l. E+ w if [ "$EPIC_EXTRA_CAPACITY" = "1" ]; then c2 W4 T# n$ p8 |- A- h5 p. y) I: r+ E
EXTRA_CAPACITY=YES t* n9 r3 f2 z
fi 5 \8 W! L# w; x- A, I( d: \7 Y* i6 D9 \+ f8 d& ?- t
[ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "0" -a -x "${command}_xc" ] && command=$command"_xc"5 w. N! n- d) q' |
[ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a_xc" ] && command=$command"_a_xc"6 \6 R* E2 t7 `3 V& i+ M5 k
#Create temp file if dual process is on6 L% u/ A' W8 i5 o$ P/ n
if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" ]; then " z) Y* \" `+ c if [ "$EXTRA_CAPACITY" = "YES" ]; then 4 w) p& G8 t2 \1 N touch $rundir/rpcidfile3 O% U% {- F+ M% d
fi% E) `+ c8 ^0 a* z
fi & j/ u/ c4 h2 K2 ^6 f0 A# T3 H! t; hfi N: S% q; N: n 5 g: T& ^& U7 qrun_cmd() z6 _3 b2 g/ r, A+ p" j{ ; K2 `( V7 {* \% }* M command=$1 # w4 S3 N/ ]. `* m shift r5 o9 g2 q5 N; K( e2 @; {" C# @2 [9 O S# O) N* P0 g
if [ x"$VA_FILE" != x"" ] ; then; p( V2 @' U4 f1 X6 `- k
cmdline=$ARGV* U8 @% m% ~% [# L
else : B9 J" N1 _" w! A& k cmdline=$@ L0 n; F5 s# A. }, ]- r' {# N e6 U, n. z
fi ) q+ d' P, ?6 F; `9 Z/ q% I9 e* K5 b9 `
debug=${DEBUGGER:+"$DEBUGGER $command"}; 1 K1 ?1 H$ w" ]0 C B1 X" S, X) `- f# {8 @% H4 C* g* j( X
# To disable Exec-shield-randomize in RHEL3 U3+ when running nanosim and nanosim_a # i5 b( D) ^2 J& J4 X # so save-restore may work. . l/ o8 r) g) J" l; [- p setarchStr= / \7 K* A# ^- ]$ J8 V& E cmd2run=`basename $command` " I& r5 y) ?- _; R2 |$ K if [ ${cmd2run} = 'nanosim' -o ${cmd2run} = 'nanosim_a' -o ${cmd2run} = 'powrmill' -o ${cmd2run} = 'timemill' ]; then. @" A. o: P, X7 B3 x) ?" k
if [ "$EPIC_ARCH" = "IBMPC_LINUX_LINUX" ]; then" s/ T% h7 M6 h& b3 U3 U
setarchStr="setarch i386 -R " # e# x# D- D* h2 C fi$ k- s+ E# ?% F" s5 J
if [ "$EPIC_ARCH" = "linux" ]; then 9 i' }5 r& p8 K) g5 X setarchStr="setarch i386 -R "5 Z8 s5 }, M0 e9 j
fi( C3 D! {' F2 @# T, \
if [ "$EPIC_ARCH" = "amd64" ]; then # N# a* \' @4 \9 B4 g& N setarchStr="setarch i686 -R " 6 G$ m! y9 f& C, f* R3 [; ]/ X) y& g fi$ o1 G2 M5 `7 R5 ]- O& U/ m5 p: e
if [ "$EPIC_ARCH" = "suse32" ]; then+ N3 G5 H/ e6 Z p* S
setarchStr="setarch_suse i386 -R ", Y5 i! T4 ?: ?9 Z6 s1 m
fi 9 y# v) x/ U# L1 o* ^ if [ "$EPIC_ARCH" = "suse64" ]; then4 c& P; N) e! i# H+ |* x6 K; R
setarchStr="setarch_suse i686 -R "3 F. h1 z& b: S8 u* ~
fi 6 G7 {* N# h4 W0 x( d fi8 U: b$ i6 j; S5 ]# Z+ V9 w: n7 M& _
1 D( F' V9 z l5 D8 q8 j ret_stat=04 f% M) E% r+ ?$ D
if [ -x "$command" ]; then : O9 y2 p* |( H if [ "$debug" ]; then- ~3 w/ D+ j5 l2 x6 ?
_debug_args_=$cmdline $ {( @& p: Y! w- L . .epic-debug 1 _3 y6 @5 w3 E: x9 L2 n9 z8 O( }/ [ else " S4 t$ H: I' ^+ ^# H DEBUGGER=; export DEBUGGER) K9 ~4 D# o! o1 V3 c
$setarchStr $command $cmdline7 \0 g5 M0 W+ n* V) Z
fi 5 }* c2 L" z0 D v4 h& H0 L ret_stat=$?: D8 \' ~ P- z/ x" ~5 w* J, ~. H
else 4 b3 a1 Z. ~, b4 r: @; u echo "Corrupt installation, executable \"$1\" not found!"8 s9 G( \' W, I) D
ret_stat=1 ; ?2 c# H8 {9 _: u fi) ^; ~( @ T/ p+ q4 K2 t5 x5 i p
}) }3 w# I" g: i- z7 P3 y
9 W/ b! r: ?9 C3 z# N6 U% U# keep runing cmd if ctrl file exist - c' s& ?$ V* [: e' Z4 m) ?' D/ D) E3 v7 {( b
run_loop(), s+ \& D# V. C+ n& z
{ & a% T: n/ \7 L2 f- a. C command=$1 + `2 s8 \5 x) W shift- o. |* y$ \4 }/ Q/ _
8 w6 t) I7 q% E0 R. S1 p3 y if [ x"$VA_FILE" != x"" ] ; then # ]' Y0 {% [5 T! O/ T cmdline=$ARGV; ^, a* N, x9 P
else0 T8 i8 H3 d; s) v
cmdline=$@ , ]0 G Y8 Z! [( A fi / g* s, Y' C: z * ~5 ]# ~( m" y while [ $ret_stat -eq 0 -a -r $LOOP_CTRL_FILE$$ ]; do ' J& J5 k' R/ s . $LOOP_CTRL_FILE$$ " M! l$ @" f1 u q2 p: _1 Z( W run_cmd $command $cmdline -banner 28 M$ b5 e+ q& f# F- l9 N
done; / v6 G+ G g8 l% O9 f# T 1 \3 V, Z/ U# k1 c# Y if [ $ret_stat -ne 0 -a -r $LOOP_CTRL_FILE$$ ]; then 8 q0 Y) e" z0 h$ o) P' p8 j7 X rm -f $LOOP_CTRL_FILE$$ . U) V% C# p* ~9 N/ F' ^/ ` fi 2 @. U" I* N$ L+ M. q+ K( w}; q8 m9 [* x1 J: M. |7 X
, q R4 y6 i+ nhar_check_ret_stat() 2 t9 \3 j& q5 U. z0 T{ * o5 x$ v8 U" C3 d+ f; J if [ $ret_stat -ne 0 ]; then 1 X) e+ C; p7 F {
echo "Simulator returned with non-zero exit status. Stopping.": g. _/ }( U# w" ^
exit 1# {" J0 }. W! m* I$ r K2 v7 v
fi ; x2 Q9 @; R- g% e, T} , F0 H! N; z; u r' j/ c$ w5 U# L
# , z: Z8 ^5 R3 o0 Q% F# set stacksize and datasize limit 3 s! y/ I6 h8 H- l& Z. @/ w# * B# K0 q# y- \( n% ] # p% m2 L; v% h9 M, Q9 p7 y) I, g! y7 hset_data_limit2 {% W( U5 s; w. ~% K
set_stack_limit9 B9 V" Y& N- C2 @* J& c
$ A( C0 y! {6 a( K. x8 x+ z j9 s6 m
#rm -f $LOOP_CTRL_FILE0 x$ O' N' o) n; P" I
, ~$ b1 ^/ t, v4 Y& e! M! v
run_main()5 Q& V R0 g) J0 a/ H* r! o
{ ) \) A% `. J" \4 l8 ?) n3 k kif [ $is_special_har_run -eq 1 ]; then' i& v: p6 {. }7 O& @. ^
if [ "$har_ofile_prefix" = "" ]; then + x6 z4 l# M7 Y! h echo "Wrapper bug. Notify Synopsys technical support." 3 q! Y9 j5 U* n. q7 }. y+ Z: x6 w7 @ exit 1. y) x8 L1 R! Q' h+ ^$ t
fi ; x& [. r; Q. G* E! B9 z8 d# f if [ "$har_hilo_file" = "" ]; then$ |! x- p$ a# }. u, [2 h
# no user specified hi lo file - do both runs) m" i) ] E% V0 o0 v+ k& X9 n
run_cmd $command $CMDLINE -har_one -har_setup 8 n/ E9 e, e5 M+ O8 ` if [ $ret_stat -ne 126 ]; then" M5 F$ X3 ?2 d) L! G! U
har_check_ret_stat 3 i; S7 u* F/ G if [ -r $LOOP_CTRL_FILE$$ ]; then% S) o i" R2 b5 E7 o
run_loop $command $CMDLINE -har_one -har_sim ${har_ofile_prefix}.hl + ?* V/ y4 o# m- H3 o+ J/ i& K. M rm -f ${har_ofile_prefix}.hl: c, O4 b. ~* D) R3 g% U) [
else ! a h+ M2 R0 q4 q. k4 l run_cmd $command $CMDLINE -har_one -har_rmhilo -har_sim ${har_ofile_prefix}.hl * h* O7 t- o" B1 H7 y fi 5 V, r0 l- D1 f x* m( e8 b5 d; _ ^ else % X+ m- o! t# | ret_stat=0 1 o6 n0 c" y( {% M" x fi& H5 c; y% U7 S/ k
else/ |4 m) K [& ^: j! g' e# j! Z2 F
# user gave a hi lo file name( Z. x2 q0 G2 E8 J$ z# t( T' G* t
if [ -f $har_hilo_file -a -s $har_hilo_file ]; then# J1 m0 u: u/ b% g9 p& j% V
# file exists - use it - only do sim run ; W) A c% A! Z. x8 J, O run_cmd $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}# j5 |# V2 B& c3 _& P! [
run_loop $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}& l+ I5 P2 J/ y* Y* C' |6 |. C- U) R
else 6 D* o' q! y9 r7 v- M6 k( X # no such file - generate it - do both runs , I- P6 U# H, l$ M+ e run_cmd $command $CMDLINE -har_one -har_fnf -har_setup $ ~8 }2 |$ B' ~/ }. r. A if [ $ret_stat -ne 126 ]; then9 u* @- i. N" e+ e3 s7 v& b/ w) G* X
har_check_ret_stat & F1 d3 v U+ w. x! Z$ x; M( T3 p if [ ! -f ${har_ofile_prefix}.hl ]; then . {' d+ ?2 A) O( w& \3 F8 b echo "No hi lo file generated after setup phase. "+ G4 D: Y- g/ R. A& ?9 ~; d
echo "Contact Synopsys technical support." - L, h1 o8 i) r, _1 z exit 1 9 j( G7 C8 C) C else; U# T) q3 R% m- E( K9 B* r
if [ ${har_ofile_prefix}.hl != $har_hilo_file ]; then! T9 J+ o( ~$ T7 F! F
mv ${har_ofile_prefix}.hl $har_hilo_file m! R9 b* B: v% d0 e1 B
fi- Z3 N2 | U- F. ^
fi+ \+ }# |" z5 F" v Y
if [ -r $LOOP_CTRL_FILE$$ ]; then8 n9 j! K L% i% U V
run_loop $command $CMDLINE -har_one -har_sim $har_hilo_file: h, w- Z# Q" K
else ; y4 N- y/ |% m: M+ k9 g4 x run_cmd $command $CMDLINE -har_one -har_sim $har_hilo_file9 O" i8 U; B7 n' m# y- i5 |7 a
fi" H7 w5 p& B1 R
else " N1 a/ C# ^2 r
ret_stat=0( p$ T/ ?3 P9 {+ q
fi ! z9 W8 K/ B: e fi . x* g/ p: e) H fi. a& G/ s+ L7 W4 C, @( e) D
else f! p* ], P- R. V8 a4 u
# don't loop if -har_setup3 }7 [$ v' Q7 j* F
if [ $have_har_setup_flag -eq 1 ]; then " I# X: }& k6 Z' t9 ^. J run_cmd $command $CMDLINE5 x' T5 {' Q' A
if [ -r $LOOP_CTRL_FILE$$ ]; then / c. v6 u. ]+ k8 c' D& b9 m rm -f $LOOP_CTRL_FILE$$9 w# m* O/ O4 a" L9 |5 c
fi ; _: y9 O+ l) j5 s# k1 b G W else$ P3 }. `! _1 z8 G6 }
run_cmd $command $CMDLINE: l& Y) W: S$ k/ U
run_loop $command $CMDLINE. r3 d' C& s( |
fi0 m! d6 ?( ]7 X3 w8 T9 ?
fi : p% J( Q0 g: T* [/ m+ G7 R) D9 p# G- z* v
if [ $ret_stat -eq 0 -a $cmdname = "powrmill" -a $postgres = "y" -a ! -z "$workDir" ]; then . E! y4 O2 T, |8 x pwCreateErrDB -w $workDir -e $errFile 0 v: T) d# ?9 g5 w5 C3 ] ret_stat=$?) i: s2 m- }- G, M" k
fi 9 W. Z: Y/ z! R}4 S G' O, T8 M0 ~
2 r4 A# ]- H+ A M" \4 I' x) g
cleanup_alter()5 Q) q' d( g& P( `! g5 w/ K
{ 4 g! X2 ?0 P8 X* h h5 O2 F6 s /bin/rm -f $ALTER_COUNT_FILE 1>&2 # f! X; W* M }. t' I S /bin/rm -f $ALTER_HK_FILE 1>&2 / z8 ?# _, o0 Q* ]5 _2 I! H}! l$ u; p# b" W$ O
2 `7 _6 x/ p; m3 v#generate alter temp files based on pid : T8 ?9 h' h* A aALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$ 4 T* e' T; b9 `' W! m3 o$ ^0 D* Y6 x- \2 |if [ -f $ALTER_COUNT_FILE ]: b9 K8 W. ]+ W/ H8 v
then ' H, K( k- {6 W8 r
until [ ! -f $ALTER_COUNT_FILE ]4 o. a6 K5 q. s( y, T. i
do ' \ b# S( p3 A% r8 e5 Z ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$ 4 x% r: k5 k- t) s5 T9 d- P done & E5 R0 Z4 R4 e4 jfi 5 S4 ? e7 M+ `- xexport ALTER_COUNT_FILE + V ?% h z4 c( x) N* {, E" \( k: p: s. a- A
ALTER_HK_FILE="$ALTER_HK_FILE"$$4 ?1 b9 Z, J( @$ _5 {# S3 `
if [ -f $ALTER_HK_FILE ]1 Q% w* q5 }3 L
then Q4 S6 q& {, ^" P8 p
until [ ! -f $ALTER_HK_FILE ]8 t+ { L" L+ O7 O _
do ( P5 Y1 Y7 p7 e) J! _. k ALTER_HK_FILE="$ALTER_HK_FILE"$$- f' L' \+ U v( H
done ( f$ c$ r. |- bfi - K* M" [- g' l( _, lexport ALTER_HK_FILE ) [5 `" r d' J% ^- M) P, t$ f! C( |, o9 [; e- a# c; r( p
#generate monte carlo related temp files based on pid3 g3 Y4 M3 a4 B1 O5 W6 |
cleanup_monte()0 i5 M! s5 Q5 V0 K3 k7 z
{. s- M: y0 l: d0 z/ ~
/bin/rm -f $MONTE_IMG_FILE 1>&2 * C: r$ v$ Y) q9 N1 L /bin/rm -f $MONTE_IMG_FILE.gz 1>&2% g! m& t, b0 F3 p& A* O: L6 c+ v
/bin/rm -f $MONTE_COUNT_FILE 1>&2: A v. L( a$ C E
/bin/rm -f $MONTE_CFG_FILE 1>&2 8 b; _! p( V) y9 z P5 ~+ S8 a}8 C! [+ J6 R5 ~% `4 K
6 S9 x2 G" L$ e; t- D: ^) u
MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$+ T0 \3 j* _! k- B) W: \: b
if [ -f $MONTE_COUNT_FILE ] / U+ N v% f9 N2 X/ n+ }% uthen - i5 L; r0 O1 k: e" e& Q! E5 Y$ p \ until [ ! -f $MONTE_COUNT_FILE ] ' U( X. B( e7 \0 j' h9 m0 q do 6 R) S S0 A" ]- d MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$1 I& m j: S/ d: \
done) H0 O) T2 {+ W+ S( B6 D- x
fi2 W/ a Z( V5 w1 Z/ u2 Q
export MONTE_COUNT_FILE/ B0 Z7 X3 Q! ^
+ b; u! v) Z2 i- c& B$ oMONTE_IMG_FILE="$MONTE_IMG_FILE"$$+ _) g- C+ i+ y5 p! `" x) u6 W; y
if [ -f $MONTE_IMG_FILE ] , k, C* L7 l( n3 E- H0 L. j5 m& O Vthen 4 V, B W: W1 g+ J8 A1 e until [ ! -f $MONTE_IMG_FILE ] ; v( q4 V9 |; i# K9 z do5 U- _6 f$ p4 I9 w; H9 C! d* O
MONTE_IMG_FILE="$MONTE_IMG_FILE"$$3 ~+ {! k8 _* f$ V2 a) X
done. ?8 p. O' X( i* Q; |
fi 7 |( @- o$ a; y; jexport MONTE_IMG_FILE- h2 B# E1 _& t& O9 }0 y; K
" r8 U. ^. Z+ I( W# aMONTE_CFG_FILE="$MONTE_CFG_FILE"$$/ O4 i* V/ W0 l/ p! Y0 I
if [ -f $MONTE_CFG_FILE ]( N# W- S, K0 i$ v: E) l" b
then f }6 n1 W( b6 Q
until [ ! -f $MONTE_CFG_FILE ]4 Q3 S0 j6 F/ O' G) B6 y
do 8 F4 g- ?; o1 e# _/ O MONTE_CFG_FILE="$MONTE_CFG_FILE"$$ + S% J) d2 _% i) u7 ` done 4 G' |7 K# I$ k: a8 G0 zfi: A$ X; i; D* W* b* s" j$ \" B3 Q
- j- ?1 `) r( d9 [* A) u
# main iteration, ]9 S+ L4 C; T4 W
run_main ; o2 C' Z1 x% D2 f) M) d" K% h& d0 v x8 W. @
if [ $ret_stat -ne 0 ] ; J9 ^4 U! n1 E' y4 |' K
then 8 [' M. C y1 `% \2 C [ cleanup_alter " B# p4 v6 e5 v1 I- V# B1 {& @ cleanup_monte ) O$ j: ?! E0 _2 d0 k Exit $ret_stat+ E8 D% A+ f! l) _& t" P
fi ! p* X+ i. K O) g* `9 k) R7 j" I9 f! A5 J6 f# t7 D$ u
#Alter related iterations : A W, I1 W' U# Q , Y) q" h. M. J, ?! }4 W( N( v, O/ oiterations=0 ; ~+ N# Q8 T. f G Q* M6 |8 }count=0 + L8 C( G! y; Lif test -s "$ALTER_COUNT_FILE"8 q- M2 @/ T* D
then+ O$ F0 O2 Y. b
if [ -r $ALTER_COUNT_FILE ]; then" {: @. j' g$ U( k$ c
exec 7< $ALTER_COUNT_FILE ! n% U$ M/ y7 {) r read iterations <&7% \! n1 S# a: O
fi / W' H- W ^+ _2 @fi 6 k# G2 v( p# w5 r1 w+ E . u% M$ F' [9 ^trap 'echo Program Interrupt; cleanup_alter; exit 1' 23 {% D v0 m$ F$ O7 [3 _
while [ $count -lt $iterations ]' _" P H3 ?- D" g* B, P5 n
do* U# C4 M2 W2 x' d2 V5 E/ `
count=`expr $count + 1` , K0 q" ~% F# f2 T ALTER_COUNT=$count) _$ M' N* z; N& {# L' ~. P
export ALTER_COUNT * x0 L4 t4 K+ s9 n1 t3 o4 N: Z, g, s. O! F/ t: l
run_main , h* Z% v3 f+ [/ ?8 W$ [, v1 B* U9 }9 k
done2 i" z( @0 q4 A' d$ s/ g* a: K
! K; [& j# G2 @7 s; Z#Monte carlo related iterations$ p- G9 V4 T1 M
d) \5 T. z( P# S$ n3 S# E2 A
monte_runtime_summary() 9 j) N& }$ `* I; _6 f# m7 X6 d' E{ ; V# Z6 l& m4 m0 } keyword_1=real' [# U/ Y( [ R' D U
keyword_2=user) F0 x3 L" ?3 l. k: f! V W
keyword_3=sys6 m# P5 k1 p- m0 ?% @
ofile_prefix=nanosim ! ^) [$ I* p% l9 y3 J8 U) G1 `
if [ ! -z "$o_option" ]; then& Z$ ~% \) `* L
logfile=${o_option}.log* @$ A$ U M$ [; G3 b
else E4 X8 g) z- I: W3 @9 ? logfile=${ofile_prefix}.log - a" H5 Q% j+ c/ U5 ] fi+ G. g' y- S# k
* @8 B$ N) f0 O' m& p8 o- T
if [ -f $logfile ]; then$ I; Z$ u, B) g3 m" S+ f4 b
echo "*** Monte Carlo Total Run Time Summary ***" >> $logfile & e: l1 K' n9 m/ a" _/ S( s$ [% \ 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 + b# A8 b$ v4 I& S5 A7 b7 U fi 8 {. d8 x; ]8 N! S} ' U9 B+ Q( q% k6 N' k4 \' \" V / @) R$ v# x' k7 q/ B4 knext_monte=0) v# E- ?3 S$ N
cur_monte=0 - A# N1 D# Z$ I0 o8 O/ c9 c* l' _6 G7 j
if test -s "$MONTE_COUNT_FILE" / D8 K2 y& c% H0 ithen p( z8 F3 Y2 q( \* O% V8 f& g, J& H
if [ -r $MONTE_COUNT_FILE ]; then . v, c( W7 y6 o; U' k2 v/ D exec 8< $MONTE_COUNT_FILE1 s3 D8 n4 y& u% J
read next_monte <&8 4 h5 c3 j$ x, S% ^ fi: s/ J: n$ w$ Q) E: D
fi 9 z& b6 T3 l# B, y+ B+ U% c1 l- ]4 e2 }+ d3 R8 t$ J" O- l: B3 v
trap 'echo Program Interrupt; cleanup_monte; exit 1' 23 o8 O+ E( I( K
while [ $next_monte -gt 0 -a $next_monte != $cur_monte ] 9 F' `: \7 Z: y' ]2 B8 r- Cdo. C# c5 X; C' c5 P8 K
NS_CURRENT_MONTE_COUNT=$next_monte ' p1 g. C* u5 A/ v' S. q7 q d0 o export NS_CURRENT_MONTE_COUNT- z( v6 l1 j$ d. m8 P, @
% \6 B1 H. P) X4 ]3 y* X echo "restore_ckt_state save_file=$MONTE_IMG_FILE" > $MONTE_CFG_FILE! X. o0 p9 R' G0 [5 H1 v5 f
CMDLINE="$CMDLINE -c $MONTE_CFG_FILE": e4 y5 X1 X) b3 l7 [
run_main 8 O% T; F5 n9 g5 B2 B5 \6 ^% |1 k+ B1 F" I8 {+ x% f) ~) a v
cur_monte=$next_monte 9 [& ?* n" N1 V. r8 |9 ^- R8 F exec 8< $MONTE_COUNT_FILE: {8 ^2 C( T& p8 O
read next_monte <&8" |% t+ G' E0 D
done ^- B3 l+ Y- q' E2 D2 Y5 _' k4 ~4 F% p* Z& m: B4 a0 M o4 Q
if [ -f $MONTE_COUNT_FILE ] " i) i6 k4 K; x' v* s, U" d# {& sthen : _+ b. L. U9 |6 z* w monte_runtime_summary* f- Z$ y" S! }! o5 F4 T
fi7 U) w4 \& X0 w# Z