8 S6 u- E- J8 T, t [ -d "$rundir" ] && rm -fr $rundir' C+ _# r2 A7 f1 h" J
[ -d "$rundir" ] || mkdir $rundir( B) t8 n. v2 u- }$ D, S
0 u& ^- E% W" y" M) p7 C
case "$EPIC_ARCH" in! G! X$ _* n6 n1 ?( O& n. w
*SUN*64) ( l$ g0 H* K6 b
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"$ L6 f1 p! G5 W( B0 h( F8 p Y
export LD_LIBRARY_PATH" w+ p* j- H, x
suffix=.so , z- k0 M. X$ H, y2 X. m ld_err_code=127( E& [+ e/ U% ^9 g! W# L! q* C% m% C
;; , n; s$ H/ Y' M7 \& v *SUN*4) . X& J* X2 L. Y2 |
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" : p3 P) v! s0 R export LD_LIBRARY_PATH / k$ z0 y- `7 E& u0 w suffix=.so.1.0, y5 A0 n9 @& c( _1 T' `
ld_err_code=127 / {/ V' T6 k( l. |. y2 L5 ^ ;;+ z4 ?1 @: M, {/ I2 U" [
*SUN*5) * y2 P- \6 L2 N ]6 K9 X. v+ m) ^ LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" 9 R7 e5 u0 c* O/ l+ a" i) o export LD_LIBRARY_PATH: A8 R4 j V! Q- K
suffix=.so& ^& K$ U, [% R8 w5 E
ld_err_code=127 9 h+ a6 \+ |6 e i! q* M& r ;;3 [: _% J0 T9 P- @8 x" D2 r* n
x86sol*) }$ S3 b S7 B$ T$ `$ `' H2 j" G
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" / ?4 a* b; L' q0 f" Y- I T+ t export LD_LIBRARY_PATH 0 I* ?: {& C" O/ P7 k suffix=.so # u% L/ v8 o5 l7 l$ J ld_err_code=127% t; s: x/ s; u% a8 T* I
;; 6 S$ U6 g% B' { *AIX* | aix64) ; C/ F8 X0 y2 g3 w& v# a6 @# S
# When genepiclib creates shared objects, it creates a import file and 1 L8 d$ N' G$ l; j! r" }* m # uses timemill as program. So at exec time,program timemill is needed " W: }8 {( x* P# Q1 l- r% J3 D
# in LIBPATH$ [* _! ]7 u0 O
$ln_default $command $rundir/foomill* e# t% K+ @, z5 u8 S. h
LIBPATH="$libpathLIBPATH:/lib:/usr/lib" % F5 y! H7 N; }9 k! L/ L4 v export LIBPATH+ D. D/ I- E0 O# N
suffix=.o $ V! T- q/ W; O1 M ] ld_err_code=8 5 \9 z1 Y2 K. Q7 H3 R if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then ; f9 E W3 w( [ tdir=`echo "/tmp/d"$$` % m" \+ L, J2 T7 l2 L$ T [ -d "$tdir" ] || mkdir $tdir$ {4 q& h% f& l) H# |- s; P
if [ -f $EPIC_DIR/libCustom.o ]; then0 ]8 o7 {" S" V3 @
cp $EPIC_DIR/libCustom.o $tdir/ $ x8 N& S$ |2 u0 ~) y $ln_default $tdir/libCustom.o $rundir/ ' I- G$ m$ @* y# c2 w2 ^ fi ( ~; B/ }7 j9 j/ w9 [6 R4 |6 ?3 v if [ -f $EPIC_DIR/libModel.o ]; then 0 y$ G" X. ^1 i( F# X! u( R9 O cp $EPIC_DIR/libModel.o $tdir/5 ~ L" G) w3 [4 g
$ln_default $tdir/libModel.o $rundir/ ; I7 S6 h2 c. M% N9 t fi3 P, o7 w5 H1 ~
if [ -f $EPIC_DIR/libFuncModel.o ]; then. o* v2 L6 z& @. X& S% l0 W
cp $EPIC_DIR/libFuncModel.o $tdir/ 5 ^6 X$ e( J# L& S' F8 } $ln_default $tdir/libFuncModel.o $rundir/7 ?$ a$ e$ C, K: c
fi% J3 G8 B( E" T" U- K# Z
if [ -f $EPIC_DIR/libFuncModel.34.o ]; then. ^& t2 Y8 `( N8 M5 [
cp $EPIC_DIR/libFuncModel.34.o $tdir/ 7 ?$ k" n- n* b1 [- c $ln_default $tdir/libFuncModel.34.o $rundir/# q( Y6 E5 ], a2 l" [* b) D
fi 9 V: \7 ?; P- U! | fi U8 Y; E# B3 n) x
#Set the IBM flag to enable more shared segids ' Y8 O0 y& p5 L0 E; ]3 u( [" `: m EXTSHM="ON"+ @( \* \( d' v+ B6 H* }
export EXTSHM9 @$ }2 y' s' B; ?# O' n% F7 B
;; ' b) F* f- I$ t; C, { *LINUX*) 3 P' t1 Y# e( v' p k0 Z
suffix=.so 6 S1 u* s: ?8 n. t( e8 T; L# Q ld_err_code=1 ) I" ]5 o' P' ]& J) A: H ;; }7 Z# _; L" D2 x- S) @8 s
*amd64*)% S9 ?+ d1 W$ L9 D6 P. {+ F& l
suffix=.so 0 d3 n/ V5 G( G' w, Q* a/ E ld_err_code=1 ) z0 S* H2 Q! j2 A( o ;; 2 K+ G9 `, g/ v# ^0 W2 T6 u8 W E/ R. n *suse64*) 4 b. f+ o/ E$ W; h5 e" i" \ suffix=.so 1 u/ k$ r2 P$ B& d, y3 L* C; K ld_err_code=11 e0 d+ ]/ `) q, c4 I3 ? h/ K
;; 5 B2 ~/ G: I, q+ n4 M( ^* v9 F *suse32*) & V( {9 M9 _& n& `& L; }/ W- I
suffix=.so 3 Y: \+ z% `8 C- | ld_err_code=1 ' k* f& A: \( _: O$ D7 E ;;' w0 B9 Y' K$ o* Z) D6 S! n
esac! B7 n9 \8 _" V+ p
6 w8 v# Q; S' G" r
[ "$has_custom" = "YES" ] && ulib="$ulib $cwd/libCustom$suffix"0 r5 H1 W2 l/ Q4 O+ R
[ "$cmdname" != "timemill" ] && [ "$cmdname" != "powrmill" ] \9 |. s6 F s, P" @5 Y
&& [ "$cmdname" != "nanosim" ] \ 2 @3 O7 G4 Z S# v- P1 L && [ "$has_model" = "YES" ] && ulib="$ulib $cwd/libModel$suffix"6 G. D) M" p* F) ` @2 T
[ "$_VA_" = "YES" ] && ulib="$ulib $cwd/libva$suffix" + a8 v$ V6 C5 _8 K) ~, j( H3 {) q , }, p& @9 \6 u6 ~% @#Look for command line option for libFuncModel.so* n& C% W/ h/ R D
# user_library_next=0, r# c. n6 H( x
has_fmlib="" 0 y1 R4 b1 h4 K for opt in $CMDLINE 3 @: S8 K) a/ z7 w, s( B3 H4 s do. f5 B% b" Q+ V& J3 r) l6 _
case "$opt" in % p |1 s f7 }5 `' u0 s -fm) ! E8 Y+ _& `; O* f) t CMDLINE="$CMDLINE $cwd/libModel$suffix"& U/ k. m* }, @( s' F8 v5 ]4 V4 H
;;2 l* m# Z. M7 d7 R2 h+ x
-fm_user_lib) , }1 c. o2 f8 \6 K9 l/ H) x' G/ Y: T9 b has_fmlib="YES"1 q- f: X K7 |- z# ~5 s
# user_library_next=1" S6 B% l7 C) ~8 B( P. M
;;: _7 l7 J4 o+ V
-xc) 6 Q& Z! v0 g) z$ B, l6 G3 V0 J
if [ "$EXTRA_CAPACITY" = "NO" ]; then$ F5 L! k* i3 {, j+ |, n
EXTRA_CAPACITY=YES ! |" U# t# y# B h2 a9 y8 m fi $ a1 d9 _* t) m c3 p- ] ;;' q! K% l, c2 q4 ~' {
# *)# G1 i% R5 N8 |' |2 @8 p ]
# if [ $user_library_next -eq 1 ]; then- ^6 }8 o, U; F# |
# if [ -f "$opt" ]; then 9 I% @. T& X$ k R9 ^( {# libfmodel=$opt9 K* O) T6 b8 y# ]- U
# else* Y& a* ^* d% i* a! K2 i) T
# echo "-fm_user_lib: Specified file not found"+ O3 \% Y! ^4 i4 m7 U4 m
# echo "-fm_user_lib: Specified file not found" >> .epicscriptmessages W2 s8 s! F) Q3 e9 |* T5 o
# fi 0 b% C! e1 {" {, v# user_library_next=0) n% M$ }9 B4 V& d- {6 [+ Y# x
# fi8 o, m( Q7 |2 e+ _
# ;;3 F6 y. L |3 e2 ~
esac0 y1 S5 }. K7 W u5 f9 L" d
done0 \6 k' B; ?# }# q: T, ?
0 z9 L& o- e2 r; ^ B4 D% S
if [ $cmdname = "timemill" -o $cmdname = "powrmill" -o $cmdname = "nanosim" ]; then# q) i- J% q" Y* n, ?: @
flib=""- Z# S1 \; x2 W c; T" p( x7 t' p( o
if [ "$has_fmlib" = "" ]; then + m( @* T& y) l/ g6 m- R: V* `- M flib="$flib `get_epicrc ./.epicrc user_libraries`"( ] Y O1 t: a% V4 U
flib="$flib `get_epicrc $HOME/.epicrc user_libraries`"& f+ e* m) f; q" k4 e+ P9 f
flib="$flib `get_epicrc $EPIC_DIR/.epicrc user_libraries`" 9 ^: ^( p/ ?5 E0 ^ fi. s- t( I, N7 p" q8 v* u8 c- R5 p
fi / L: k( n% `0 t. ?4 r' _5 T8 s- S' p$ p4 F
for i in $ulib0 ^- f4 M7 ?) c2 U
do " O6 [, p* t% D" E [ ! -f "$i" ] && continue 0 ^7 Q7 o/ O( Y2 m* N+ z" u dir=`dirname $i`; cd $dir; dir=`pwd`; cd $cwd: Q1 @+ ]1 g w) j8 i
i="$dir/`basename $i`" ; l* V6 _- o; _( D8 N6 w case "$i" in' o7 @6 }- X% x) V' N1 X0 p
*libCustom$suffix*) [ "$libcustom" = "" ] && libcustom=$i;;1 b5 e* P9 O. q# g$ a& |, {7 B J
*libFuncModel$suffix*) [ "$libfmodel" = "" ] && libfmodel=$i;;3 F. x8 i# m- L7 F3 q
*libModel$suffix*) [ "$libmodel" = "" ] && libmodel=$i;;0 |9 H) |! P; c1 o+ r6 B
*libva$suffix) [ "$libva" = "" ] && libva=$i;; 6 N5 Y9 m8 x& [ esac0 A0 r. M( I) @ K% m. H' u0 A
[ "$libcustom" != "" -a "$libfmodel" != "" -a "$libmodel" != "" ] \ # l+ `5 l8 o' `! j% N && break9 M6 g, c2 p' k* H$ I2 L8 Y
done , r( |' G( H/ _ ! h I% F. ]0 j# p; t3 R! I. W # symbolic link shared libraries to .epicrun$$, v* y) q6 P6 D/ Z+ b& o
cd $EPIC_DIR; epicdir=`pwd`; cd $cwd & j9 z9 ~. [0 S* }: f ? if [ $cmdname != "timemill" -a $cmdname != "powrmill" -a $cmdname != "nanosim" ]; then7 t; H# ~" F* q9 C+ r y6 g
if [ "$libfmodel" != "" ]; then0 _. B/ l7 q8 t: w- y
[ "$libfmodel" != "$epicdir/libFuncModel$suffix" ] && \# t$ S$ z1 \ o" s) s! M- h6 R
echo "Using $libfmodel ..." && \2 {# B' @5 n+ e
echo "Using $libfmodel ..." >> $EPIC_SCRIPT_MESSAGES_FILE 1 r; `! u- x) a: q ^$ ] if [ -f $rundir/libFuncModel$suffix ]; then : q: j! H( p& B3 w# f( W3 A6 ] rm $rundir/libFuncModel$suffix 2 }* b& y$ r) P T" i6 X$ Z3 G' x fi1 c l* m! @0 U/ w3 Y& z/ |
$ln_default $libfmodel $rundir . ^3 j1 U1 J9 n; ]0 x/ U$ f$ U% ^ fi 8 H5 H Q8 {: R% q1 ]" B2 w if [ "$libmodel" != "" ]; then - P) ~6 O1 h, R+ g9 l8 s( i0 N [ "$libmodel" != "$epicdir/libModel$suffix" ] && \# N& |2 \4 z% H0 J( _
echo "Using $libmodel ..." && \ . L# D/ { E/ B( B echo "Using $libmodel ..." >> $EPIC_SCRIPT_MESSAGES_FILE7 C. Q" e: i+ M7 m
if [ -f $rundir/libModel$suffix ]; then 5 a* y& I% m3 j. z rm $rundir/libModel$suffix! S5 Z; f/ a+ l
fi3 x. h# W7 |9 L- I* t
$ln_default $libmodel $rundir % h( r* @( ~/ ?# x' t4 E; ? fi : F3 P% G3 d! k6 h% h6 s6 a9 G fi ! g# Z; z( L2 k' y" z$ k1 Z if [ "$libcustom" != "" ]; then , }% U% B- G# c5 o. d" @* j [ "$libcustom" != "$epicdir/libCustom$suffix" ] && \ 0 ?; w* }. I0 n% z$ r. _) G Q! D echo "Using $libcustom ..."3 ]+ _! I+ c6 Z9 p
if [ -f $rundir/libCustom$suffix ]; then 9 U$ l8 K- Z' l) q: a. G rm $rundir/libCustom$suffix9 {, _, M9 q$ L+ W
fi 7 e# R& t5 R7 R $ln_default $libcustom $rundir 3 F6 V {* {$ n, N# v$ s
fi 1 h+ w: _) Q+ |0 v* M) E" P' b 2 @5 z$ q/ k0 C6 l% A4 K4 j if [ "$flib" != "" -a "$flib" != " " ]; then! L- i1 Q, |) M5 c
CMDLINE="$CMDLINE -fm_user_lib $flib"+ y' n u5 F: p1 ~# p! E
fi : z9 K8 u! r7 d, s1 k' G; u , Z/ r' o5 p. N$ ?/ D$ G3 M if [ "$libva" != "" ]; then& k: l; v( @; Z/ y& K3 h
if [ -f $rundir/libva$suffix ]; then6 B" c7 q: l7 X) e% |
rm $rundir/libva$suffix & C) w5 J( m7 A& I4 X4 C% }4 w fi 7 O: h& X5 j* [ $ln_default $libva $rundir 8 v0 c1 @+ ^6 D8 m
fi * T/ ^4 W$ n( z7 B8 s6 o % U% Q9 j2 ]0 p( O- B$ a- w $ _7 t6 w# T o# s; B8 T # VCORE design library 9 Z6 V2 P: O" {3 A' l. T& D if [ "$vlog_design" != "" ]; then ]$ @: L1 E9 Q
$ln_default $cwd/$vlog_design $rundir/`basename $vlog_design`0 ^; g5 k9 Z( x( O7 n
fi, I4 F4 ?5 V- N/ C2 S O L
: m Z1 ]$ z3 _& r( M! k9 h2 R0 C if [ "$EPIC_EXTRA_CAPACITY" = "1" ]; then * W! y( m" f- b8 K EXTRA_CAPACITY=YES8 k2 h$ z m& G9 _+ K+ f( x
fi( z" G3 S+ |4 u: g R5 r! p0 h4 T
7 {" E; Y1 M0 u2 i [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "0" -a -x "${command}_xc" ] && command=$command"_xc"# g3 t# e$ e4 |4 ?' J* F
[ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a_xc" ] && command=$command"_a_xc"7 p8 d9 o9 E5 Z
#Create temp file if dual process is on, n4 ^, w$ M/ L7 x8 _$ }: V8 F
if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" ]; then / w3 h) O- B2 }+ |" P3 y" W& k if [ "$EXTRA_CAPACITY" = "YES" ]; then ' k' _9 M) W2 _" c R: \8 @ touch $rundir/rpcidfile ( s4 [ }; X) t! k6 |3 F- r. U8 s fi5 `4 g) q) R. {# t
fi% G2 M" q: J; `8 H' Y
fi5 w( u' D9 \ [2 K' D
3 X/ R! G! r7 h7 |6 arun_cmd()0 {" N* [( A# ~) w
{$ l. ]* j, e/ A
command=$1 ) N+ V/ W/ Q/ p! i- Q& g shift$ a1 E; s3 I a, h& o" E
8 u. u2 o& m Y+ S" q+ C
if [ x"$VA_FILE" != x"" ] ; then . W7 r% M# B! G/ M7 z cmdline=$ARGV 9 C/ _- ~: x4 X0 i0 Z5 i# c- ^ else! n1 i/ C+ M$ P$ b6 ]9 {: R
cmdline=$@ & D3 x0 X' o3 O- t; T fi4 |8 Y% _- X" z9 F/ [/ ^; J4 K _
! s$ F2 b: C ?" u, l debug=${DEBUGGER:+"$DEBUGGER $command"}; " B9 @/ x4 r2 p9 W3 [! r7 B7 b' G5 Y- ~0 Q/ R9 W n% ]
# To disable Exec-shield-randomize in RHEL3 U3+ when running nanosim and nanosim_a7 o2 a) t9 c5 W X- d( y9 j
# so save-restore may work. . Y: Y1 ^$ g" }' k; k/ Z setarchStr= " I3 B, y$ E ^- s0 `/ b cmd2run=`basename $command`* D1 u5 a; p( w( z. |, F+ X }
if [ ${cmd2run} = 'nanosim' -o ${cmd2run} = 'nanosim_a' -o ${cmd2run} = 'powrmill' -o ${cmd2run} = 'timemill' ]; then3 u: w+ W9 W. i* n1 l/ f% F1 M
if [ "$EPIC_ARCH" = "IBMPC_LINUX_LINUX" ]; then / r- m; }1 \& h7 B+ t setarchStr="setarch i386 -R "# ^6 {, y' x6 |# M1 S; S4 [
fi5 z3 l) T7 J+ o7 e
if [ "$EPIC_ARCH" = "linux" ]; then# y1 Q( N7 }" i; G7 c, y
setarchStr="setarch i386 -R " , g4 y7 A% j) }3 Z0 n% c fi ; P! k3 a/ j. s8 j3 v# U, X if [ "$EPIC_ARCH" = "amd64" ]; then L9 Q$ w. s# ?9 x! w3 b1 [$ @ setarchStr="setarch i686 -R " 4 s6 L; s- n; V0 N3 D9 {' w fi, Y- V. {& c4 v8 A
if [ "$EPIC_ARCH" = "suse32" ]; then( r: }: k. V+ p7 A3 ~
setarchStr="setarch_suse i386 -R "% \8 \2 _1 a: [7 z0 k3 p
fi - C: @& i+ E( u if [ "$EPIC_ARCH" = "suse64" ]; then " [( v5 P1 ]5 B2 u# g3 f# y3 D setarchStr="setarch_suse i686 -R "$ D5 Z9 _' Q# u- M! R0 H% A
fi) u( M9 D" \2 C) P
fi + y/ ]) c, Y+ j, p, F$ o+ o. Q* k; P& i3 K; N7 L! {+ h: H
ret_stat=07 ~# e+ H+ l$ E, s5 g
if [ -x "$command" ]; then- @) h: P0 i( U1 u9 g
if [ "$debug" ]; then # t- L: x4 \ R5 Z; G2 v1 K N% J _debug_args_=$cmdline& T, _4 U' X) [6 E9 C' F
. .epic-debug3 u: L6 E1 f$ N4 l0 B( ?8 |& N1 y, W
else6 i/ T+ {2 G7 S, a5 |& t
DEBUGGER=; export DEBUGGER 4 r- r C' U! X/ ~ $setarchStr $command $cmdline2 n6 g7 C- H, v4 ]- A4 J% l
fi2 c$ x9 [4 @3 b, |3 F- G) M
ret_stat=$? ; z2 y8 P; O8 X; _ else8 k! w. [1 e( C# a D; l: Z/ }/ r
echo "Corrupt installation, executable \"$1\" not found!" v* @# E. l8 c8 Y5 T5 Z
ret_stat=1+ w/ v- \& F% I5 S' b" C; u
fi 8 f) m- d# x2 \0 }& M" k} o8 ]8 I, M/ j* Z, n Q1 Q0 }9 N+ U2 M; F# \
# keep runing cmd if ctrl file exist & y2 C0 Y6 Y* o1 y7 e" n! J+ ^0 e$ D9 J p
run_loop() 6 U Z D. ~- @. V2 i. o7 ~{ / l0 x/ m# @9 W command=$1 Y; I% d# y2 ] shift* h8 }3 w; T3 G0 \% V. @0 P
' a' F! T8 w5 l if [ x"$VA_FILE" != x"" ] ; then % s4 }$ e8 z0 Y5 W" t7 _5 _' J cmdline=$ARGV + ]4 @ ^2 h" U else ( U8 v( ?2 q% }' m cmdline=$@% Z& D0 a N7 W4 K! F3 U
fi4 q7 u! O1 n5 Q' O; ^4 F
. N' S2 J* R0 i
while [ $ret_stat -eq 0 -a -r $LOOP_CTRL_FILE$$ ]; do; f) r' s$ Q! A: ]' W: d
. $LOOP_CTRL_FILE$$ ( L3 `/ l7 v* N8 G5 y run_cmd $command $cmdline -banner 2+ j: s- D* Z$ k( c+ |- h
done; ) l+ o. O, m$ ]. Z7 q( \. A2 v0 ^6 i8 z" {$ h+ Q# u
if [ $ret_stat -ne 0 -a -r $LOOP_CTRL_FILE$$ ]; then% X- h3 w, j1 _
rm -f $LOOP_CTRL_FILE$$% q+ n, I) q* R7 R9 P
fi % K' S1 L- q1 b* w5 e( q}- F* X; B8 J2 ^+ Y" p e6 H
: e& Q A1 t# v K) T9 _2 }6 h' [) Rhar_check_ret_stat()9 M! k% Q- D" q4 z4 ~
{; v7 H0 |, P' m( S6 x$ e5 H( O
if [ $ret_stat -ne 0 ]; then % C; K! q. j! e) b* D: h$ G: d D
echo "Simulator returned with non-zero exit status. Stopping.") D$ V4 N5 C% O0 y0 \
exit 1 , b6 l. J; v$ | fi* M. }% [' Q; k, p0 _) s+ c; @2 b
} * e) I) h* _3 c2 J 6 j9 f& y1 x+ |+ t+ q% |9 _#4 F0 d& E4 Z, B# K, H
# set stacksize and datasize limit. w( k0 w# j8 F8 k1 e
# 6 R( Z Y y' T( L1 R x9 k$ [! Y3 C3 k, I R5 _, ]( D
set_data_limit# v2 H+ _. d9 x' W( P1 K+ r3 B
set_stack_limit( r0 `7 X/ Q# {5 n! y6 i
6 `: ~, p# e4 i" v p! s6 X#rm -f $LOOP_CTRL_FILE7 l9 w$ Q; I8 ?6 c# g
7 A7 n8 o. F# R3 s; z' c: ?. M
run_main()9 ^1 G& |1 e! h' R* E5 \' _
{ 0 F V5 M$ Z; E" q8 i) Oif [ $is_special_har_run -eq 1 ]; then T$ ? F$ C- y8 g. z if [ "$har_ofile_prefix" = "" ]; then# \( d# K0 E" d# E5 A0 J
echo "Wrapper bug. Notify Synopsys technical support." 8 a9 {5 i$ {' e1 ^ exit 1- o" Q) n% W: |: r* G# Z3 m
fi8 t* V5 e) V& m" v: A
if [ "$har_hilo_file" = "" ]; then6 |5 y c1 W d1 a) r- H% K$ `
# no user specified hi lo file - do both runs / o1 U# T e8 j5 I$ d9 F+ d% o; w run_cmd $command $CMDLINE -har_one -har_setup 5 S; f, T5 d6 `- i, F if [ $ret_stat -ne 126 ]; then# C: F; Q# r J B! N$ c
har_check_ret_stat # \9 b6 l9 ~7 h' o, ` if [ -r $LOOP_CTRL_FILE$$ ]; then# {/ j5 F9 r2 Z1 ^: s$ r' P
run_loop $command $CMDLINE -har_one -har_sim ${har_ofile_prefix}.hl 8 O* e; X, {0 P' A' ^ rm -f ${har_ofile_prefix}.hl 4 l7 K6 J' x& x else ' M; ^/ _ u7 i run_cmd $command $CMDLINE -har_one -har_rmhilo -har_sim ${har_ofile_prefix}.hl3 I5 V, x* [' I% u. K+ z# x
fi , p6 ^1 {, O9 n- A7 r2 n5 v8 }- y: i else & S7 K- Z4 V! ^* T8 h2 g ret_stat=0& P$ V; ^( X5 G0 O
fi 1 _# O1 _$ k1 R* G% S& V else ) S o& `. k3 H! B/ @7 Z6 {/ C' y # user gave a hi lo file name9 w) X- C/ [, W" t% [8 V# v: Q1 h* Y
if [ -f $har_hilo_file -a -s $har_hilo_file ]; then 3 Q# o% ~ T5 k1 e4 b R # file exists - use it - only do sim run 6 j% z- I3 l$ M2 g1 g' H+ P6 S4 b7 ? run_cmd $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file} : y! `( z$ i( }& y$ t; H8 `- f run_loop $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file} , H P4 g5 I. a" u- x0 X9 p else* d3 n' O( s, o% R2 T1 I( t
# no such file - generate it - do both runs& O+ M8 F* I& L! k { f# {
run_cmd $command $CMDLINE -har_one -har_fnf -har_setup 1 l6 {0 k2 y" L7 p if [ $ret_stat -ne 126 ]; then ( x) C0 v1 _5 f8 ]3 J har_check_ret_stat 0 ^; ^% e) r# j& _; \& u2 X6 u if [ ! -f ${har_ofile_prefix}.hl ]; then - d, O* D7 t5 h# ^1 D3 S9 M6 Y" C$ i echo "No hi lo file generated after setup phase. " ; N, t8 p* w7 P) P" [- X- n, {4 }$ w echo "Contact Synopsys technical support." " x' u( Y/ L- [ C2 b/ W2 Y exit 1) E4 u& z2 @, m% F( B# f
else 9 c; l7 _ h1 @3 ~& `! Q3 |. R5 P if [ ${har_ofile_prefix}.hl != $har_hilo_file ]; then, ]: H. y: F% W% `$ _
mv ${har_ofile_prefix}.hl $har_hilo_file& ~. N, b* h, {1 y4 |
fi7 H0 f* x% @( N `9 H4 T1 I
fi " ^. m: u0 S5 o3 G* _3 D if [ -r $LOOP_CTRL_FILE$$ ]; then 2 W! f* e6 f: g: u" w9 W8 O run_loop $command $CMDLINE -har_one -har_sim $har_hilo_file( J9 {6 [- y& m
else * |- s6 t! | X' w7 T; k run_cmd $command $CMDLINE -har_one -har_sim $har_hilo_file9 o( b% ?, q0 t. E
fi 6 h6 _/ Y8 f2 Y3 R1 Q9 j else 7 U! p" ^! ^! \) {2 B ret_stat=0 9 R- i, X9 y1 p T fi2 S, M {9 Z4 J( m
fi5 N3 d( Y2 A; a5 e# ?9 M
fi 4 D+ U* X/ Z9 H8 l1 [" ?else , q- A K/ S& j: M# don't loop if -har_setup n6 }$ r: ?( Y if [ $have_har_setup_flag -eq 1 ]; then5 o6 A# O8 c2 M' {6 A
run_cmd $command $CMDLINE , e5 Y: Q6 B, G2 G3 n if [ -r $LOOP_CTRL_FILE$$ ]; then 0 U: D# }! k# s% ]. X3 b rm -f $LOOP_CTRL_FILE$$( X" S- c" X" |2 w/ B
fi$ s" B1 P: s9 t1 U, L E# n
else( E0 m: k7 `. B6 q) p
run_cmd $command $CMDLINE # N: P o3 d5 x S" q3 C7 @ run_loop $command $CMDLINE" e- i6 q3 h9 T$ ]6 Z
fi ! G- @2 I5 {4 K2 K2 H% c9 ufi( C2 h5 i/ M2 R
: i( _, f3 s( d; F. H+ ^* t; B" iif [ $ret_stat -eq 0 -a $cmdname = "powrmill" -a $postgres = "y" -a ! -z "$workDir" ]; then- h; L! R9 x U7 I% s8 _
pwCreateErrDB -w $workDir -e $errFile* t# S6 p5 O, N. E+ I
ret_stat=$? 9 f! A; l" o e* ]& {fi ! j' S. w, n6 f- n7 x. d}5 x6 P; W! Y6 Q" w$ x7 z
0 N, \8 K& d( ?7 x- acleanup_alter() 6 v7 B- I3 T' z- `8 h{ & X5 V# }* S+ G( D% K* w /bin/rm -f $ALTER_COUNT_FILE 1>&22 P1 h$ z- j' B
/bin/rm -f $ALTER_HK_FILE 1>&26 h% S. M0 A) t8 D' I! L# q
} 2 L5 i. A. A+ a' e G8 z; H $ V. ]4 U4 x7 }& o: w8 g, @$ d#generate alter temp files based on pid' m6 W% i9 v0 n" p# A
ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$- _$ g7 |" n+ S) p$ Q
if [ -f $ALTER_COUNT_FILE ]% i" ^2 h: ]" H5 A
then " g4 S0 [' }' f7 L6 [& O* y1 K
until [ ! -f $ALTER_COUNT_FILE ] / `* X! t' |; Q" |+ c8 u# c9 [ do ' k& x! Y y2 P" b% H ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$$ s0 j, B* M! C3 k3 Y4 n
done4 E3 L7 v/ d8 s
fi * D; [$ t0 X _: Oexport ALTER_COUNT_FILE T' o* D4 X! i$ l. W. e
/ U8 w6 ^' R4 e- j6 e5 ?ALTER_HK_FILE="$ALTER_HK_FILE"$$& g9 i- ~+ N1 }4 ?8 H
if [ -f $ALTER_HK_FILE ] u9 o. X* L* n* p' \2 m' W
then 3 v( z: H- @! z2 {6 u9 D- E, K! V
until [ ! -f $ALTER_HK_FILE ] 3 M# I! q) r: Q+ _" G do " \$ G) s/ j# G ALTER_HK_FILE="$ALTER_HK_FILE"$$ ! V1 M/ H: G7 L$ q6 U6 d) p done- q3 x9 @! f, T- l% J: `+ @
fi ) p! I" g f+ l6 v, p# p( Iexport ALTER_HK_FILE 9 E( ^. r' h% ~% V* U# e : q$ ~6 A7 K1 x; M#generate monte carlo related temp files based on pid * i0 S: H5 s8 r, u% x: acleanup_monte()+ _: d5 I2 v/ Z( h9 C
{; B# V& J. r) A: ` [7 I6 S3 s8 E
/bin/rm -f $MONTE_IMG_FILE 1>&25 b* c' q+ T& d$ i+ Q) f
/bin/rm -f $MONTE_IMG_FILE.gz 1>&2 . D' e8 q- V+ u /bin/rm -f $MONTE_COUNT_FILE 1>&2 # ?) E, `3 ~) C7 p2 H6 n /bin/rm -f $MONTE_CFG_FILE 1>&2( G: E1 U/ I$ A& w& \" l1 X4 i
}7 L9 y- k8 \$ u( X1 }2 V# F8 H
' E" T& E ]) [. }! m; d
MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$ 2 v( m! Z& e" X( k# Sif [ -f $MONTE_COUNT_FILE ]2 G/ b, v* v/ g* V
then4 P+ K% i' S' f' W
until [ ! -f $MONTE_COUNT_FILE ]- D3 I% I7 G, q0 A; t8 L0 l! [
do ' {7 t% b$ x4 G% e$ G MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$ ( M" g/ Z* l8 N8 ~) @. { done( K- M2 [, _' N; a& C8 n" R
fi , Q# ?6 Y# A' U& [7 J0 Vexport MONTE_COUNT_FILE / q& O# m0 l! H3 g p/ U& M( z5 x
MONTE_IMG_FILE="$MONTE_IMG_FILE"$$! @, M( b; T6 `
if [ -f $MONTE_IMG_FILE ]4 {" q' F9 b9 S) s
then9 a" l7 e' z0 I( e: }7 f
until [ ! -f $MONTE_IMG_FILE ] 3 f' m3 Q( ~) ?8 z& }/ k$ w do' z3 o( d1 |: e* G* G
MONTE_IMG_FILE="$MONTE_IMG_FILE"$$3 a/ l" \7 q. Z
done5 x9 O; P1 B$ T4 R( h" j/ Z9 n
fi 3 u' D) |3 o4 l& z, fexport MONTE_IMG_FILE0 t1 N% |3 r* t* a3 {2 c5 V
# k9 C! w8 P& x" y
MONTE_CFG_FILE="$MONTE_CFG_FILE"$$( v3 e, Q/ u) X, w
if [ -f $MONTE_CFG_FILE ] : F, m4 X/ v% F9 t' q0 Cthen 3 N% F( R. k v- B; q until [ ! -f $MONTE_CFG_FILE ], \8 P5 @2 y% R6 m- i5 f# `5 t
do / c" ~2 Q6 ?1 ~! V ] MONTE_CFG_FILE="$MONTE_CFG_FILE"$$- e: Q/ O* ^& e5 Q
done) ]* z2 Y7 R+ D4 t% u" C- |, \3 s
fi , m( I9 ?/ @: ?3 ~* x5 p& }$ q' V1 r
# main iteration 1 X& y$ T" a& T; S; Y* M& wrun_main8 O' q$ ^& Z' `8 u4 d
# j2 I5 x; n! Y/ H# i4 |if [ $ret_stat -ne 0 ] 6 s8 I V& B+ `3 |. d' j% O! _
then - V. [4 u: m. q
cleanup_alter % W3 Q3 k* m0 O. S m cleanup_monte9 e/ |, @& q( e; x4 Z. @3 C
Exit $ret_stat 8 E& _7 M: o9 v- c! k( l" gfi 6 z, O W: V% `. o* f0 Q1 m# v 7 D5 l; T- M: X/ e" i3 ?#Alter related iterations4 |- p: k( p2 a
+ E+ k$ V& O* |
iterations=0 3 E l$ `9 ^$ j7 ^ R$ vcount=0 3 o+ R# B# n h8 L5 N6 x7 [if test -s "$ALTER_COUNT_FILE" 1 V7 f, _+ ]& Mthen ) D# i' n {1 Y/ e; M& j if [ -r $ALTER_COUNT_FILE ]; then 9 C7 z& c( e# K. W2 y2 I/ U8 U4 @ exec 7< $ALTER_COUNT_FILE& t- H( C4 [$ z$ ]0 m* M, k
read iterations <&78 e2 B* k4 o3 U1 Z
fi5 x6 b4 M7 O( u4 @ u; _( _' y& f
fi/ ?$ }& X/ b" k3 t) n+ s
; J& C Y, ~" J/ P- y
trap 'echo Program Interrupt; cleanup_alter; exit 1' 26 s! h3 t* v9 ^8 H) Q. b
while [ $count -lt $iterations ]/ z- v; [' y J) d( ~
do! T5 c) @* X. A% m3 n5 s
count=`expr $count + 1` N D+ d. d, y0 H) `# S/ f- b8 i
ALTER_COUNT=$count " x9 ~! ~9 k. | export ALTER_COUNT4 L3 M0 R$ s4 o* B
& V- T5 s: `- `2 y8 k
run_main8 m! y$ y: j8 ?0 }6 ^1 @
# S% V9 L% ^8 J, sdone - {! \7 K' J8 p* b6 c3 K$ S5 {0 [3 J& {1 X3 w3 T# W& ] j* z
#Monte carlo related iterations " z; [9 A( K: U' ] D {1 y( p' c4 o8 w/ Y3 ]) Z8 imonte_runtime_summary()6 ]6 G, h! H# l7 r
{ . A$ X( L. A% I keyword_1=real& C, m# Q6 _+ G/ s+ J `' d. D
keyword_2=user2 `8 p* ?, P& {! O o
keyword_3=sys 7 h# H+ l5 h1 a, [. T- r% Z" u ofile_prefix=nanosim ) G* m9 K2 J B( L, p! R, z7 v" {5 w+ y# |' [
if [ ! -z "$o_option" ]; then6 ^8 {# \* w- l P
logfile=${o_option}.log * B; _! I0 p8 b) T1 v else / l- C3 V' z# C! w logfile=${ofile_prefix}.log+ l! F/ J$ t& `. W' L) x' d, m% q
fi 5 k/ G! Z3 Y/ Y: ?0 \ 1 h1 m2 t- {: n4 d/ d$ x4 C" Y. a if [ -f $logfile ]; then , y) _' f6 @* X# [! m V echo "*** Monte Carlo Total Run Time Summary ***" >> $logfile ' T! y4 O o( Q1 c. V
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 }' >> $logfile0 {0 f$ Y# E& O3 m. a( ]
fi. x3 s& ]& ]5 C7 z' h* d5 r
}) C7 y5 Z. ^8 ^1 B. q; v5 X* l3 g
7 w- c9 h4 j5 u' t
next_monte=0 & I9 H' U2 n( k' w" l! Q pcur_monte=0 : ?, i# x* B4 v! H: u8 L- l0 Z5 d4 K5 v/ c6 e
if test -s "$MONTE_COUNT_FILE" 7 U" `2 a# {6 `) }+ G2 |then% u% p- n2 B1 N0 U+ s# |7 x
if [ -r $MONTE_COUNT_FILE ]; then . i, U6 ]* g. }0 K- X, m$ W exec 8< $MONTE_COUNT_FILE 3 E# k" ?+ l) {& _7 _ read next_monte <&8" o# b3 o0 l% l
fi 7 A4 r$ X6 D! ^) ifi) ^) W, K+ I" _4 F: }7 K9 Q$ M
4 \8 w$ o, G6 O+ o& S, x3 ytrap 'echo Program Interrupt; cleanup_monte; exit 1' 2) O5 e( J3 _( z. `8 t9 l
while [ $next_monte -gt 0 -a $next_monte != $cur_monte ] ' R- G7 y, t) }$ R) y8 Qdo) p4 l; P1 C1 H2 q; W: B/ Q9 U
NS_CURRENT_MONTE_COUNT=$next_monte3 C- t6 f" g% Z) `# A
export NS_CURRENT_MONTE_COUNT8 `: S# N! s; K, g2 A j