標題: 版本ubuntu 11.10 軟體nanosim 無法執行錯誤? [打印本頁] 作者: leaf1989 時間: 2012-5-6 01:58 PM 標題: 版本ubuntu 11.10 軟體nanosim 無法執行錯誤? 各位大大好:' {6 g8 w1 n' a* I/ q
小弟執行nanosim時,卻無法跑出視窗來,有個錯誤可是我不清楚該如何解決?問題如下! w2 ?" s# Q5 C* P9 p6 r
[: 113: 64: unexpected operator4 T# H; o! I+ G( z
/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim: 1: Syntax error: Unterminated quoted string # |7 J( V o3 D' c有大大遇過這方面的問題或是指導我方向去解決, 謝謝. - r# I: k) E: R我在猜可能是這個檔案內的文字需要修改 但不知道該如何修改?$ p. j3 v5 Y0 g* [6 ~8 G
以下為/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim 的檔案內容: - g) b* w. u" V5 U #!/bin/sh# n7 C [4 w2 r1 o
#+ g) U# k3 \* d
# Copyright (C) 2001 Synopsys INC6 w' D9 s; f$ L' F. E$ L4 |4 z
# EPIC Dynamic Simulation Wrapper (DSW) * J% a, p9 _3 K# I7 [& M( N" K _, k5 R
eval ${DBG_EPIC_WRAPPER:+"set -x"} " z9 v' ?$ Z1 C' r6 v5 M$ h3 J! A0 g, j: c# y r
if [ "$EPIC_WRAPPER_DVLP" = "" ]; then/ X7 _- n5 P1 _+ w, j; Q3 g# v
TEMP_ARCH="$SES_ARCH"0 K9 Z. t- d! f5 h
else# h L( d2 Y! {
TEMP_ARCH="$EPIC_ARCH"# P" i; s. [1 R y1 O0 y, Z' v
fi . k0 E( W& n: S2 t4 M+ U; o& `5 x4 a5 E2 V: j6 T! O5 N
scan_for_hva_args(); R" V! z3 V, v8 O
{ # }6 X# a4 k. R/ @. W: b+ l6 } /bin/rm -f hva.init 1>&29 o+ ` s P8 F" ?( x* Y
while [ $# -gt 0 ]; do ' h9 Y& E; }0 T* a+ N case "$1" in 7 J9 t0 \8 a7 ~4 _# H/ N9 n -vaf) ' {: c9 ~+ y# _# A4 P have_vaf_flag=1 6 l3 R' j9 y$ p# E have_va_flag=0 6 g- s: o/ S( b4 b* O5 Z4 f shift;" z9 p a9 ^8 c9 m" v8 O
continue; ' N6 `- e$ @9 D% X+ ^9 p ;;7 z. F4 W/ B# E" X
-va)' J* b' Q2 s; K5 b
have_va_flag=1 / X; ^' J- O- @* Q3 m( `* v0 r' c have_vaf_flag=0$ k4 J( e" w! ]3 k+ p0 u
shift; + W3 W8 f0 R7 I7 y5 n# A continue; / T: J( @) w4 H8 a6 m E ;; . ?4 n) V( `. _" n$ H1 V* y -*) ( v& w, g8 S% i2 [6 c ARGV="$ARGV $1" ' \4 B& }: s' v! L have_va_flag=0 % h2 m5 D1 J/ A9 U* g0 @: V a have_vaf_flag=0 $ U: R! ^# @+ d( v% R: M( T: H shift;9 a9 l" e6 Z* B) e3 @
continue; 8 J1 A0 B% a& _* |7 s& `: [ ;;+ P1 \+ N; L, t5 @- n7 {, s+ h
*)6 _ b$ ~* p9 t4 N3 [
if [ x"$have_va_flag" = x"1" ] ; then 1 O: Q* i; G/ H# ~+ |( L" l# f VA_FILE="$VA_FILE $1"# T6 }8 J, t" [8 M; q5 U7 T9 H
elif [ x"$have_vaf_flag" = x"1" ] ; then " O7 x$ \1 D* G% ]3 u" F; h X="`cat $1 | sed -e '/\;/d;`"# {1 U2 k. N; M( m+ I/ D; O/ ]( ?
for token in ${X}; do : ^) ?! w% s& |' H7 ~ VA_FILE="$VA_FILE $token"1 H8 o% f- [3 P6 z/ t8 `
done 0 E* x3 T6 E9 x1 e$ l# K6 {
else ! K+ C, m+ i( ^/ s ARGV="$ARGV $1" 1 w* _6 z4 z5 e6 f0 y6 g" b fi . \" R: R+ a* l- i; r# J$ l shift;( M: X0 C7 T/ U9 j& ]8 b; r
;; % C! E, U, c6 k5 _' Z0 m8 g esac 4 v; ^( {( d+ D) w" f) g* ^ done2 f- W2 M/ @- S7 Z M: V
+ k3 ]. x: i8 | if [ x"$VA_FILE" != x"" ] ; then 2 y8 ?/ i8 g$ \) t P## /bin/echo " xxx ARGV $ARGV"" f. `% P, l7 o( h
/bin/echo "choose nanosim $ARGV ;" > hva.init 9 r6 J' b& |3 v echo vcs +ad=hva.init $VA_FILE -o simv 7 ~& {% X }* o$ p0 `+ R vcs +ad=hva.init $VA_FILE -o simv0 _. r3 E# A; P! H
exe_status=$?9 g# P: C, _5 x' D. f
if [ $exe_status != 100 ]; then 2 G5 u1 U S6 E( @ /bin/echo ""5 `3 M/ H+ T7 o
/bin/echo "ERROR: Execution of vcs exited with code $exe_status" ) D7 d8 f( u& z /bin/echo "" - \' d( N; @- e4 ~& W3 u8 W exit $exe_status7 W/ {2 X9 a. x% ]3 e' R4 M
fi- D0 i8 |. ?, r, v! ~) Z
hva_files="-n simv.daidir/amsVD.ntl simv.daidir/amsWRAP.spi" 7 A, N3 e: z1 ?" b- x: W ARGV="$ARGV $hva_files" 3 {! Y: k/ a5 Y* k3 T+ T fi ; Y; E) D* [: ~! E3 m} ; B( M2 y9 L _( X#-------------------------------------------------------------------------7 v; d4 A0 M/ ?) @ c
U* Y9 f9 \; M$ _4 F+ F. s) p% W
cleanup() # z: W! X; ?$ `$ C/ c8 T{ 4 l- I6 ^/ G$ R" S1 V if [ -d "$rundir" ]; then0 t1 T- F( f5 C0 z, M3 i" l6 h0 u
# On AIX, a .nfsXXX file is created if libModel.o is removed + Q4 Q o0 a) |3 v- Q; ^3 F+ o # so .epicrun is not removed because directory is not empty.9 o! E' K2 l8 J# e" h" S# V
# Solution is to remove it again if the first rm failed r3 G) Y! u# f' r # (rm -rf $rundir || rm -rf $rundir) 1> /dev/null 2>&1' d4 s$ Y4 Q) T; V) [7 E
if [ "$EXTRA_CAPACITY" = "YES" ]; then- F$ d+ [8 |( K5 K% T+ s( i; z
chmod u+x $rundir/rpcidfile; s6 l. H% ^3 J9 ?5 U
$rundir/rpcidfile; a6 ?( ]: S4 ?: Q
rm $rundir/rpcidfile 1 j5 `# b1 ~' A9 I' ^& V fi2 S; F3 i- ~, t' V( w. \+ V
rm -rf $rundir5 [, k7 o$ `( h. `2 P, R8 Y
( ^; O! C2 z' K b
#Due to NFS problem, we have to copy files needed to ) A1 C5 B2 A6 a6 O) m' a: A2 z #/tmp/<temporary directory>, then symlink's files9 E4 ^( G; H% a% h& B
#to the local temporary 'rundir'. This avoids the problem) Y% v3 P+ t" j8 u
#to remove 'rundir' : A, b7 P# Q* s7 j if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then 1 `/ }7 ` k& ?/ h3 ^ if [ -d "$tdir" ]; then. [& L P1 S% x! Q
rm -rf $tdir ( A/ V% J3 I* B$ X v1 B2 J fi* \2 \; X2 k/ V B$ C* z+ B
fi1 P. B. m( v/ Y! ]
fi 0 X4 i C: T' T, f6 N9 q+ e if [ ${exitstatus:-0} -eq $ld_err_code ]; then5 }7 [" l* G/ ]) `; C; q9 n. O
[ "$has_model" = "YES" ] && rm -f $cwd/libModel$suffix: L, v) D: ?/ o8 ^+ ~0 C3 x
[ "$has_custom" = "YES" ] && rm -f $cwd/libCustom$suffix, S6 F3 k! ^6 G6 j5 P3 ~
fi1 j7 `- {% c- Q1 `$ z* N
[ -f "$EPIC_SCRIPT_MESSAGES_FILE" ] && rm -f $EPIC_SCRIPT_MESSAGES_FILE 1>&2 3 s; a: J5 l- Y% Z7 r exit ${exitstatus:-0}) q$ ]$ ?( K% Q& z
}! z8 Y. e1 n& G6 m
) C0 k* c- u" E. p$ ? q# {
Exit()7 E; @+ B& }" I2 M
{ 7 k5 O1 d* f6 |, {0 |9 A exitstatus=$1 - N& C: l3 S% s8 `( Q. F exit $exitstatus 9 E7 H |& s% C}' r- j% K, w( a$ @% Z
; z2 E' o" u& U0 z# get_epicrc filename keyword / L V* X( d9 fget_epicrc()8 [# y* H0 p8 h) O/ r9 g
{. d. o) E5 x6 R) T; P. ]
[ -f $1 ] || exit 04 `( _. c. F4 w8 f& D$ L
key="/^$cmd2:/{print \$3}"; g" _4 S8 U) j
awk -F":" "$key" $1! u! L, R3 p! h7 m
} 2 \& S* P! l D& F n" q, B$ i5 k
# $ \3 {( d/ _$ B: {# set datasize limit to hardlimit/ Z9 V& W5 k& g' G7 L; ~
# 5 Z6 Y( F$ X, I4 ^set_data_limit(): y" ^4 H- r) x! M# Q, Y
{( B. f9 b8 N1 C7 N4 Z
dbglimit=0 5 T- o- a2 z; r) H( v* L- X6 ` hardlimit=`ulimit -Hd`0 x0 t: S' Z1 p Y9 W9 M6 i, T1 B
softlimit=`ulimit -d`% ~& q2 Q( B, [4 R! G
desiredlimit=3500000' z; P$ Z0 z, @- n
hardisunlimited=07 ^. V v' @$ k; a
softisunlimited=0% n5 D L" i7 m' x2 E+ h! o
is64=0 , g: A0 K- B$ A! { 3 j0 ]) m9 @: s' p case "$EPIC_ARCH" in' N. `, s' B+ ~6 Z. Q. B
*SUN*64) 0 h6 p8 N( X/ o* G is64=1; {0 W- D$ _6 Z
;;/ R2 {9 |) t9 D3 }: F
amd64) : F9 Q) G# R: Z, i6 W& E4 I is64=1 H) G5 ]' J4 R( c6 ?# U
;; ; A- t& i8 R9 y* [+ K1 w x86sol64) 2 S0 G& z% ^' S4 w4 W& Q is64=13 [8 U) K7 S" H" a: w& z
;;$ w3 K9 K% b V: p$ y
aix64) . Z" B1 K5 k0 Z% r7 h' t is64=1 ' w" Z& n# }: U$ c% L% |6 c% M ;;) D& u& S* _; k* k3 W' ~
suse64)% r1 e1 C. z! \- V5 S4 T
is64=1 . t6 W3 K! ?) @) T ;;; S3 P0 p2 ~6 I: P$ M$ ]2 l
esac ) Z) {) F6 s, r( @. y' m7 ? ! r1 e* t4 [% K% c/ T if [ $dbglimit -eq 1 ]; then * u0 d% p" l8 M2 q% m echo hard $hardlimit soft $softlimit4 S& X" n' |6 R. ^0 a1 V5 k
fi 3 H" m, j- V. K+ B * v* l) B. h* G0 c0 ^ if [ x$softlimit = "xunlimited" ]; then 2 W4 U g* U+ P9 H7 z" y, e softisunlimited=17 {- `, H" U, s
fi ; I' t- M" ^5 ^ K {$ H7 f3 I" [/ `9 I2 w T5 a9 s1 o8 T( f7 _
if [ x$hardlimit = "xunlimited" ]; then $ {& b M3 K2 B- ^, ]$ l5 O hardisunlimited=1 # _9 B: d4 w0 ` ?% c! W1 V fi, B- f. J6 d2 g8 a+ O6 S5 o2 ?
7 \* l! w- c9 \5 J
# 64 bit machine should have bigger than 4G5 h. X' J( r. x( q# L
if [ $is64 -eq 1 ]; then4 H5 p4 `. E' n3 k( [# x: P
desiredlimit=5000000 7 w I H' U$ O l fi# y7 X. S; c ?: S
/ P3 f- k" b9 r- r4 C8 `/ \8 M if [ $hardisunlimited -eq 0 ]; then 7 E& x! l! ~( e2 }. r8 R if [ $hardlimit -lt $desiredlimit ]; then . b* g' E# \0 M echo "WARNING: datasize hard limit $hardlimit K is too small."- m9 I4 ]4 M. o$ n/ y9 G
fi 7 w+ I4 J0 N) n5 r6 G) ] fi 8 q, h. W3 z! C$ n( e1 D3 d& `* H, k7 e7 d$ H4 z
if [ $hardlimit != $softlimit ]; then " H4 a1 v1 }4 L; Z3 k" T ulimit -Sd $hardlimit( h2 H" T- U4 `* }
# echo "WARNING: datasize limit is set to `ulimit -Sd`" : g, L/ p% ?* g n( a% |7 O" z fi& q- j8 R4 K$ T2 H& y! u
3 R) ~4 Q5 R/ `/ k I" r
if [ $dbglimit -eq 1 ]; then 6 M4 ^; ]5 p# M9 {/ j& b$ C7 X echo datasize hard limit: `ulimit -Hd` : x! i, O+ D3 {" K( y echo datasize soft limit: `ulimit -d`4 X9 Z- p- o# w5 U
fi9 ]+ e5 a5 u. _- s, O
} 5 [$ V9 E% r$ g5 U' `% g% ?5 x. j6 ]: D
#4 ~8 v* ]2 \, J5 f+ T* p
# set stacksize limit to desired limit" T0 i( W5 \1 q
#1 f8 r! ~0 k5 M$ ^
set_stack_limit(): g9 [) j) ], s) e* n* Z
{ # w, [( d2 x" H+ ]9 q dbglimit=0 , d. `& x H1 t/ ?$ U+ x2 s hardlimit=`ulimit -Hs` 7 R, R |6 m+ K* T7 g softlimit=`ulimit -s` ( M# x) j6 G* Q% C% f/ x/ p, q desiredlimit=600009 M4 q1 h! v! ^# }! B7 P6 {
hardisunlimited=07 K9 ] n/ o5 |, |! b E+ s
softisunlimited=0( x% B# _& m6 M
is64=0 Z% h8 u% ?9 }2 p! j9 u4 X3 X ' e0 u* d9 ]9 X1 w! f3 Z; p. @ case "$EPIC_ARCH" in {) C- T6 N9 J8 W
*SUN*64) ) \5 I& Q+ V. o! s2 e4 |/ n( [ is64=19 t3 q9 m" W/ u; r0 b1 ?
;;0 m* K% ^8 B8 d; y' i3 b
amd64)& z: Y5 g3 b% _* w% ~/ R5 M3 w
is64=1 : N, U! B+ [4 t/ k ;;) s" k) G c0 F% x
x86sol64)) P' G) t9 z% a# M' ^
is64=1 ; P" d6 p" ]/ h3 @: v& R ;;! R1 w( H5 m. [
aix64)2 z W+ S( i' u# I6 u
is64=1 - g: |+ S* i+ D1 j0 [ ;;3 d2 C& P& d8 R
suse64) & O: H& Z6 y: c0 e# x is64=1( o( W6 l1 r. O5 }9 \$ v
;;6 X3 O2 z, g$ ~2 F' G2 T3 T' N
esac* K( @/ p6 M7 {* x! @9 E- X
, h" b8 u0 v1 t+ zif [ "$EPIC_WRAPPER_DVLP" = "" ]; then2 O; _: N- a) J! O: E! ~
if [ $is64 -eq 1 ]; then0 O( S! m6 a+ M) Q$ I
desiredlimit=200000 . K4 z4 z; C# T! T fi6 X1 e7 W7 `* I! q% e
else : W- Q3 a2 G) l0 ^ case "$EPIC_ARCH" in$ k& ?. U' U, u6 q' ^+ M* i
*SUN*64)% Y: g8 C, T+ ~9 z
desiredlimit=200000, m u+ E/ M5 T) S% o9 ~7 C' q
;;& g/ K* l' S+ |5 t
esac9 J6 g) Z; {9 Z' l' C0 R
fi 1 p t6 ^% ^9 _3 o6 Y/ c2 k ' h- m0 S) u3 y& @# b; _/ ^0 m if [ $dbglimit -eq 1 ]; then 1 S0 b6 U8 S$ w' o, |8 @ echo hard $hardlimit soft $softlimit 1 c+ t/ R3 ~1 t- d9 O fi ' B2 ]* O& S+ a8 i1 h % G% `2 W! _! X) X) _1 X* ^6 l. ]+ U #stacksize can not be unlimited, pick smaller number & @: L& d( b- m6 y& n! N" q6 D: f; _+ e* V
stacklimit=$desiredlimit" p, C: [% L4 ]6 x; u5 a7 l& G
4 z( @" ^* \/ Q9 J
if [ x$hardlimit = "xunlimited" ]; then ; k( Y) W1 J2 N# w& \$ U" ^1 n3 L8 ^ hardisunlimited=1 $ x* m# U$ M- a* Z5 R fi ( G2 t$ ]# g ?0 V$ V' f d+ I ! [) Z! m- R8 I if [ x$softlimit = "xunlimited" ]; then , w" c4 {! s m softisunlimited=1 , j5 d! O g+ [* g0 \) X9 M' W fi ' }% Q$ Q; b; Q6 I$ L* E8 k2 H7 b0 w( m: _7 g) v
if [ $hardisunlimited -eq 0 ]; then % H' F* R: c) }# T% ]; L z if [ $hardlimit -lt $desiredlimit ]; then ' F8 T7 Z$ [* Q% d5 ]+ c1 Z1 o* E echo "WARNING: stacksize hard limit $hardlimit K is too small." : o- _3 j* }4 N. i0 O: `3 t desiredlimit=$hardlimit- u6 T3 u* l! _- L6 A% D
stacklimit=$desiredlimit 2 f* A+ ]: T) v/ D( r fi - v) {3 `# S5 y fi1 a* E( X+ Z2 e. a
: R% E9 A4 s: T5 j. a m5 x # desiredlimit is set to proper value (< hardlimit) ' `. |& }6 J6 o+ Z: T- h 4 a5 c; x( d9 ~- K9 ~/ l S% R: m6 t if [ $softisunlimited -eq 0 ]; then ' u1 `$ P m0 l* [ if [ $softlimit -gt $desiredlimit ]; then - U- f9 u) M3 D. z stacklimit=$softlimit % y2 n* I6 _0 P- k fi ! v4 G5 i2 j# N8 _+ ^5 R fi( v8 \+ N' Z F! n. o! S+ S4 A
2 \, ?" H% K( c% l( l" {* ^" E if [ $softlimit != $stacklimit ]; then1 z! M2 @2 g" {' I, `
ulimit -Ss $stacklimit9 G* ?, z/ O1 p
# echo "WARNING: stacksize limit is set to `ulimit -Ss`"0 s' S" x+ W; H3 \7 i
fi# F. E, n: v* t; P# D# X$ i9 @% w
4 ?5 z3 V( M3 ]4 I5 p" P4 H if [ $dbglimit -eq 1 ]; then 8 R( X8 v$ [3 Y% L( b8 `; h9 ]4 y echo stacksize hard limit: `ulimit -Hs` 7 E. ]5 l0 d6 L4 T" w$ i0 P echo stackize soft limit: `ulimit -s` 6 P" Z5 A) W6 ] fi6 `7 D5 `9 _6 f1 i/ R. f# t
} : s. ?: c9 u0 e6 Y5 W1 b h# c! I0 L# L. G. o% [4 E8 I
open_epicscriptmessages() 7 c, K4 h" `. Q" T+ X. P6 d! b{4 Q" q7 n( T7 z* V( D- M
#generate temp ".epicscriptmessages" file based on pid ( p+ ]; h$ I( o/ y7 |EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$. Q1 H$ h0 N/ W8 r. t4 a' y
if [ -f $EPIC_SCRIPT_MESSAGES_FILE ] , v- Y4 v: Z! B1 r: Kthen 1 {& A; Y e3 f; `+ m, e
until [ ! -f $EPIC_SCRIPT_MESSAGES_FILE ] 0 y, I6 Y# c' y9 J do . v6 N3 t0 I. [# ` EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$* m: P% _! T; i! g6 T
done; B) z/ Y6 P, C& L
fi 7 |: k- v& Q+ h8 c* a. [" `8 a- y& W8 k. Z" `- }$ H
export EPIC_SCRIPT_MESSAGES_FILE . t& y7 D& x0 Q: j- f} " _2 y7 s( z! z* ] 7 ]" W4 ?; a5 R) ?- `, _" K % F) W2 T7 E$ V5 A. Hcmdname=`basename $0` ! C0 u/ a2 t) s4 }* `- Q0 J" U* v; Apostgres="n" & Q/ b- q+ u; t2 postore="n" 7 I. { {8 m( }7 Y# Mgui="n" # G8 F2 [1 A4 R' a9 N, T5 o, MdatabaseOn="n"3 x/ Y$ ?, e V$ P# |: D, `
f_next=02 B) D, M. J4 B+ O( O& v
f_option=""" i4 }0 |* ?3 p! W/ f3 k. C
o_next=0 & P$ f, g. L$ Y- b; ?o_option="" 2 T, M& ^, M' F2 S4 c5 zworkDir="" + Y* A$ D; @5 V: h8 KworkDir_next=01 y* Y1 y Q4 \4 Q; n9 T0 A0 ^2 f
errFile="powrmill.err" & l7 \4 S' f* r$ Dwin32flags=""- b2 E- u+ N" i2 F( L1 E8 k
ln_default="ln -s" 7 H' G+ \% n$ G5 T 7 f2 t, o& N' Ohar_hilo_file="", U" Q0 A0 ?- y* Y J9 Z
have_har_flag=0) a3 v# D- l, J8 w
have_har_setup_flag=0 0 q% k4 m6 x# ]+ Fis_special_har_run=0/ D* `/ M. K' u
har_ofile_prefix=""8 W% _: {6 z- G% N, a# K
8 {/ M V0 ?+ O: T# s- I
have_va_flag=0 , r/ o, @. O, J A( H6 L# Fhave_vaf_flag=09 `% W H2 N+ }$ O R) P
VAF_FILE="" O0 _4 L7 b) \5 U
VA_FILE="" " A- ^2 @1 g/ DARGV="" - ~, v3 W$ h: A f! y- H- w g2 ~/ i8 H, T& c! g- b! AORIGINAL_COMMAND_LINE=3 R7 ?, ~, [- x& M
LOOP_CTRL_FILE=".ns_ba_env" / Y \$ l% |2 g2 jALTER_HK_FILE=".alter_hkf"7 T0 A8 _, C& H- y
ALTER_COUNT_FILE=".alter_count" , d' d) q% [1 t- hMONTE_IMG_FILE=".monte_img_f" * t" E7 X1 t( w+ g1 a1 OMONTE_COUNT_FILE=".monte_count" ) W% F8 J: `2 B% _/ d6 N xMONTE_CFG_FILE=".monte_cfg" + ^6 G |$ j% ~) v8 U _: qEPIC_SCRIPT_MESSAGES_FILE=".epicscriptmessages"# I5 }8 ^" N5 l. S5 b$ B
, e5 U4 T& t0 g! ]8 M/ Y4 oopen_epicscriptmessages $@ 8 d8 R- B' p4 y1 x* y 5 P+ i! }+ m) Zscan_for_hva_args $@ 0 S0 N2 s1 ~' w9 m/ |0 i' F" }: l) ` y' z2 r I2 _; C" K1 s
scan_for_har_args() 3 \/ j5 I) Z3 E1 ?/ U5 l# D/ O5 I{ 9 |$ u# j2 l+ c9 ~+ ~6 t while [ $# -gt 0 ]; do & Y, ]0 ?% b) J case "$1" in6 j9 A$ z! M1 E3 M; i6 L
-har)" u% G# W8 D% B. e7 x* n& f% T
have_har_flag=10 i: ^# ?& T; q- ?! n% K
[ $# -gt 0 ] && shift 8 q, T) p1 w( ?0 e* `1 | if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then 7 Y" N2 U: |# F1 X har_hilo_file=$1 . H# C1 ?) }$ v- `! [* ^ shift & D+ s* @+ J& C5 d( ^ fi1 v# m& L# x- E' T% a8 `
if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then; K7 v2 J, u1 M
echo "Too many arguments to -har flag. Only one hilo file allowed."" _: R/ V" W* {4 I8 @! G
exit 1 3 Y a# w9 @5 ` fi 3 k r: C5 u0 Q) L break, f+ `- m, Q4 g4 Z9 t9 M
;; v4 C8 w$ u H. w( v- f
-har_setup) $ a& l1 g+ r$ L3 n$ O; J' o2 |0 E6 z" n have_har_setup_flag=1 7 e" Z d$ G5 K, a+ C( y1 U( x+ G9 [3 w& C break 6 A) o3 L& X$ Z* J( t3 ?0 j( W ;;. @5 z6 g: `' }; U Z
*)7 h5 k( W& s0 d4 I2 n
shift 6 ?5 q* Z \2 W h: O ;; ; Z0 `3 |6 L) B esac # t! S; v0 _ F0 Y' ^ done; t+ z- m j8 w c! n
}9 T( L4 A/ d# Y* Z6 N
$ u+ T: D2 E1 @: l3 h
scan_for_har_args $@ % V, @) w/ ~2 H/ S M " t9 }' }( K$ W* T1 |/ ^+ {for argv in $@ , i: O% M/ T4 s& `3 Q; G0 vdo ( C9 q7 H9 B: Z3 @3 Z/ } ORIGINAL_COMMAND_LINE="$ORIGINAL_COMMAND_LINE $argv"( i! b- d/ K& S2 H% ?5 n5 f1 U( j% \
if [ $argv = "-gadb" ]; then0 h& K1 C" v" ~2 }, E% ]
databaseOn="y" 2 G: D( U( h0 j- D7 [ workDir_next=1 7 n& [4 @/ ^1 Z' x& i, f- m elif [ $workDir_next -eq 1 ]; then . H: B$ j% N8 N& X workDir=$argv 3 K5 [ l# V. N1 b, \ workDir_next=08 }) ~# f! s1 N- k; d A
elif [ $argv = "-ga" ]; then" |* p; ^! L7 T0 r/ j8 }' ~
gui="y". p; i1 K3 p5 w" e6 z" j3 L3 y
elif [ $argv = "-f" ]; then# M7 M7 {- `% h8 s) r5 Y" @
f_next=1 & g2 p8 Z0 ~- r1 b elif [ $f_next -eq 1 ]; then0 B2 x% A% U; i% H
f_option=$argv $ Q$ V5 e& A: L1 [! r* [ f_next=0 & a1 b# D, K3 b5 T" p elif [ $argv = "-o" ]; then5 t, \7 H9 c( c/ C
o_next=1 f; R0 w- U7 |8 N4 t2 |$ D/ q elif [ $o_next -eq 1 ]; then, E( ~: t- t7 [7 N/ }4 k* u
o_option=$argv3 g1 q* Q( J( \4 l/ ^
o_next=0 / g: t3 i1 M5 Z fi: D0 s) e/ Q" I, d. h1 Y4 h& d
done- \+ i* C: a4 C# S! a
echo "Command line options: $ORIGINAL_COMMAND_LINE" > $EPIC_SCRIPT_MESSAGES_FILE C1 F7 T1 N: D/ _' m+ w+ P: q( ]- z5 f) \) \9 G3 u6 m# r @. S
if [ $databaseOn = "y" -o $gui = "y" ]; then 7 B) ?5 L+ R$ z& l7 y. K3 s if [ $cmdname = "pathmill" ]; then% |. C* D3 A1 f6 f P
if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" -o "$EPIC_ARCH" = "SUN4_SUNOS_5_64" ]; then8 Y3 T$ D3 x$ y' J0 u9 {
ostore="y"# k4 }7 X# [" e) l6 u9 b' W: x
postgres="n" # w- B1 U$ f& s3 w+ Q1 r else . N, t% R$ R8 B- r' g* N echo "athmill GUI is supported on Solaris platforms only" 1>&2 7 G2 } d) N: }' h exit5 d% i5 K, v, G: s; t6 M0 k
fi' |& H4 u3 l) {+ H( n$ Q! u
else + z! m3 @' E8 K postgres="y") g* s: Y0 e! R3 h9 t
ostore="n"4 ~* D+ c" D! `$ ~; I4 X7 a
fi % \4 Q: b8 ?( N" Pfi 2 ~. t$ J8 J) [6 I/ \; W; m, L+ A4 T
if [ $gui = "y" ]; then 1 p9 |+ n0 i) U, T+ S" d6 p& j$ y \# d7 E if [ $cmdname = "powrmill" ]; then & L$ |: Y% t4 N' n0 r pwga $@+ B0 k8 F* E5 J% T) o& l0 F1 j" y
exit w: X0 B5 W1 V, ]& K' P m- e
fi ; a4 L' c' j4 Z3 L4 g + v0 I) M9 Z$ X0 e& O7 ^5 h( w
if [ $cmdname = "pathmill" ]; then # h: V& U5 |; ^* ]! d, Q if [ $ostore = "y" ]; then! J& A. h o3 A) B. M& G$ q
./pathfinder $@ " T3 d/ u# k3 }" q, {! L9 k exit% j* h# e5 |- A& E8 ^7 Q& ]
elif [ $postgres = "y" ]; then) G* n( b9 @) s5 ~$ b
pmga $@5 u' m3 P1 A% j- J* U( d! }
exit( i9 U+ @* K! |, [4 w/ u
fi / p% f2 D D; k( t4 Q9 d6 v fi. z% _. q0 V+ C: b
fi% X. [9 Q6 n+ x# V* s
: r5 y# h( R# d" a( k4 N. iif [ $databaseOn = "y" ]; then) T7 d7 \9 ~" U+ v' P& r# ]
if [ $ostore = "y" ]; then + w6 z. [: J. l. g9 V) _ if [ -z "$workDir" ]; then 8 K p# _* D: v1 S# G6 T echo "Error: Missing argument for -gadb option" 7 ?& ]( J) u1 g( S0 o Exit 1) `8 B3 c9 w1 M' R
fi 6 M5 m" q0 I( P: G fi 7 I2 v3 G$ _2 @, |' C( M if [ $postgres = "y" ]; then ' h5 J! ~- t2 G! R8 i if [ -z "$workDir" ]; then 5 E h0 d9 _3 G echo "Error: Missing argument for -gadb option"" y; I* V1 |4 d; C2 N
Exit 1) d( S# H2 \" }- W
fi ; r& W+ I- Q1 l0 A- c3 ]/ C fi& x& ?3 p9 b3 q! h0 b* }8 j
fi. t1 ?6 L& w( j: y: n
`) _3 z1 ^3 J; ~! {/ m
if [ $postgres = "y" ]; then ! H8 n/ y2 H/ D2 G1 ]4 B0 D' A( U4 v+ p9 I- a6 k
if [ -r $EPIC_BIN/scripts/gui-init ]; then ! `' a) G6 _8 A6 \2 \ . $EPIC_BIN/scripts/gui-init, F0 H4 _) S7 \- Q
elif [ -r $SES_ROOT/bin/scripts/gui-init ]; then, Z; p$ u) L0 v% U" X" ]
. $SES_ROOT/bin/scripts/gui-init/ }* t, @5 c9 ^8 z+ E7 l5 @" ~1 R
else . d2 v3 j. e4 O" V) M" F+ T echo " ** Installation in \"$EPIC_HOME\" has been corrupted!" 1>&2 & d; i% f: p0 k! l( r( L7 T9 O6 b echo " file bin/scripts/gui-init is missing." 1>&2 ( v* ]0 G0 N4 C1 ^$ W, O! x fi ! _+ E) r9 F7 M / `& I1 L# J, K( e workfile -tool $cmdname $@ # k% z. @$ P( W5 Qfi. R h0 L& X7 a1 w9 g
O% j% z# y" zif [ ! -z "$o_option" ]; then3 d; z5 X8 f; E7 Z3 w+ p
errFile=${o_option}.err( t- L2 }* ], X) K
elif [ ! -z "$f_option" ]; then3 x8 J' D5 t g: O7 w" s1 |' h
if [ -d $f_option ]; then : ? F6 ~+ w3 I: ~" c& \0 y errFile=${f_option}/powrmill.err 1 s3 n- A9 |- |! U- u+ ~8 K, | else errFile=${f_option}.err N+ h' Y. K: n5 M/ `+ r6 y0 g( Q
fi1 x9 H g0 P+ G& _. ~) j
fi 4 I$ V/ W9 T" S) j/ o9 N1 c3 x: y; a/ Q6 {: `0 i Y
* m' _1 n: M* m8 @$ t. q# x& \
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then 1 D4 j7 I% I7 b2 o* v( E0 i rundir=.epicrun8 }1 z& l+ V! g( z
else# O, l/ h m6 s5 ]
rundir=.epicrun$$& R# \0 X$ d/ ^. r3 q: O k7 C( y
fi 0 P, s! [/ F8 q; `6 Z9 \ # u8 ?" J! W# J) V7 U0 c* Slibpath="$rundir${EPIC_DLIM}$EPIC_DIR" , h4 [5 u- ]# J) ] # e0 R! f8 f% L) U1 b. }5 @0 k7 I" Qcwd=`pwd -P` * B1 q. U$ z U. _5 u8 A; _/ y$ ]if [ $cmdname = "acehdl_w" ]; then( O& {, r. ~5 e- @/ h
cmd=`basename $0 .sun` / R! k$ K( @* \) H3 c1 X cmd=`basename $cmd _w`/ P+ U- \! M; r* J9 x" a+ X
else W0 r+ j, Z2 P2 d
cmd=`basename $0 .sun`& k0 u6 c4 B0 n2 d
fi* V* U7 z. \- c$ s! N
* q5 g ^. w8 h; y4 d2 d% c: v
command="$EPIC_EXEC/$cmd$EPIC_EXEX"( \! u+ M) p5 R* n9 f
[ ! -x "$command" ] && echo "$cmd: not installed!" 1>&2 && exit 1 - W: w1 X6 U0 n- `* _7 r& m0 A `) r+ L& P }7 ]( Z2 A
# buildmod extracts -u/-fm options and calls genepiclib& ^; P L0 N" L" W, j$ i+ H: [
# It also set the remaining options to variable CMDLINE # L4 B$ h% N4 W7 R# look up in .epicrc for -fm & -FM parameters$ B' a" R# H$ h( \0 F; ^% H
6 H) B3 n. k. ~( D+ tfmlist1="`get_epicrc ./.epicrc user_adfm_obj_modules`" % [ g) o! X1 J2 O/ S9 b; ?& _[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules`" + p1 z& t9 e" r, O) z- ]8 m/ w+ L[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules`" " @+ E' v4 P2 i9 {! ? " j j( {5 a1 s) P
FMlist1="`get_epicrc ./.epicrc user_adfm_obj_modules_force`"2 J& f2 r6 e1 x
[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules_force`" 2 d' _. u2 E" R% A1 D3 z[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules_force`" 4 M4 ]! e, S. w1 A( v; n' m, L& y V0 q! u9 V- o* P3 ?8 c
if [ $# -gt 0 -o "$FMlist1" != "" -o "$fmlist1" != "" ]; then 6 U' t) ~ w' P& m' |' d # note that the buildmod script will set the CMDLINE variable 6 ~5 y: o' @, @- Y0 v . $EPIC_BIN/scripts/buildmod n7 O* Y8 L# x: }: g$ `& R4 e# ~+ {5 ` {: u) Z
#echo "This is the value of cmdline=$CMDLINE" 4 y f/ h- J" o {* b# ~ #exit 0. c+ ]( v% ~! q0 ?4 v, T; H+ W
/ e; f+ R0 d* j$ L- E$ Q. D" T' T p. j # if a new timemill/powrmill/pathmill built, run the new one6 ~( ^! C( t! Q1 `2 A
[ -x "$rundir/$cmd$EPIC_EXEX" ] && command="$rundir/$cmd$EPIC_EXEX" ( q3 O% o" u: [9 B( gfi 5 a) M; Y! u. F: w) J 5 ?0 a7 t( T" g) Y# H* t/ x2 Pif [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" ]; then / a, c, W5 j! }5 Q( T0 m if [ $have_har_flag -eq 1 ]; then # y r/ A9 Y' O6 ?' v" S0 w is_special_har_run=1! f: l& C( Y* e1 k6 ?
if [ "$o_option" = "" ]; then$ X2 U5 [# q. Y _8 h/ Z
case $cmd in- _* x; @7 i0 q& v
timemill)' S, S( _8 [" u8 g0 l5 c" ?
har_ofile_prefix=timemill 2 q5 L/ {4 U4 K. ?& O; l ;; ' ~" F% Q5 }5 Y% k powrmill) ' K& ]3 `- @6 g) j. a8 ], [ har_ofile_prefix=powrmill T. p1 z" O& s; i _' X
;; , V8 L: Y% b- K; H. a nanosim)9 H& |" X7 Y; @9 I
har_ofile_prefix=nanosim! @# X w' ]! \0 ^
;;7 F7 x7 C/ n, S- c: r( f
esac- x- ~1 T7 I {) N2 b" A
else 6 B; R/ y% M. S9 g har_ofile_prefix=$o_option# c4 f% e1 l/ D: `6 V" `; b& n
fi$ N' U8 @- t% o! r9 Z
fi- _% N! f' f7 h4 v% V
fi5 j8 t1 y6 J1 F3 c0 [- _! q9 H
8 J" f, X) z5 e; w" ]% z# Call Double precision version of the product if -D2 R# b8 a" ~ O9 g) E, O: r
# or simulation time > 1,000,000 ns.5 ?! E9 l; W: Y' X; {1 q( @
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" -o "$cmd" = "railmill" -o "$cmd" = "pwarc" ]; then " e( Z! w9 Z: |6 P. j' F R5 C: I0 n- d6 S, @" q) h" O/ ? # Now the binary always has the ACE feature 0 N M0 d: B% Z/ p6 H" ~. P USE_ACE=YES ; }6 g1 q0 C; P/ t J0 r0 Q' U0 n7 P! Z" P HAVE_DP=NO 6 p: H7 L) g8 D% N$ }9 Z EXTRA_CAPACITY=NO! l4 {0 f R1 Y
DB_REAL=${FORCE_DB_REAL:-"0"} ) D7 m0 }0 l$ t6 _) a $ o! f: o/ {4 Q% x# b0 Y # Enhance for ACE ease of use* |; e' M# J6 r% z9 T
# If no command line option or only a -T option, do: 5 G4 _/ g d# T- g* `" V! q # 1. set -A option) N$ P) \& {$ K2 u+ v$ \, Y4 o- t
# 2. assume input file to be hspice 1 u; F& O/ u, g: D8 I8 S # 3. set -o to input file prefix # V1 `! Q0 O3 s3 E # 4. set -z to input file prefix* I! x9 q+ }6 t4 r% `* F. Z1 b$ }
# 5. set -c to default config file ' r# @4 B3 x5 X# C# Z netlist="" + k7 \3 ]0 y- G0 t7 [% }' Z, s0 |9 d minusT=NO) ]6 M6 I' q7 g; Q9 \5 C
useStdCmdOpt=0" V5 k: f# i6 b* V! j6 Q
prefix=""% M9 `0 C. B9 ]* u
circuitType="" 1 J1 l: F/ G, p) I1 T for opt in $CMDLINE * P1 I3 q8 z: ~! a6 V" |" M do( L" d. M1 J( e4 n# F
case "$opt" in 8 P+ l7 Q/ T! N$ H* M4 ?/ z
-T) 6 ^( C a5 z" p' R* ~+ e minusT=YES 1 z7 f7 ?, g# w# i2 A7 [% K ;; $ j" X6 c+ E, m8 [ -*)7 t) N1 |( _# F
# using standard powrmill command line5 b' |0 G; b# k1 A
useStdCmdOpt=1 ) L! I+ D \0 T break " l% G" Z# _% ^& ` ;; 6 Z% j7 g; i9 }4 r' M *)1 n( u% c7 p1 o* [% j& h
if [ "$minusT" = "YES" ]; then; S) Q0 T$ R+ W7 \1 H
circuitType=$opt / P; F1 P1 h. N6 Z# |/ `3 a minusT=NO # reset flag * A0 z& q; i" _1 n6 K7 p& j else * J, `& V U5 o6 g' [( \# T$ f$ ]7 o
if [ "$netlist" = "" ]; then ! t* x3 e1 L/ o/ v prefix=`basename $opt` 7 A$ z% e) v; @& F& i8 F( | prefix=`expr $prefix : '\([^.]*\)\..*' \| $prefix`4 B4 b* s; s* H4 g k) w6 z) V
fi % F+ \$ P8 f0 N7 J" A+ y# t( U4 d netlist="$netlist $opt"3 X9 u1 P# r/ x$ m ~& {# |
fi$ u0 W) N0 C5 `& r* z& p
;; , T( J, w' r4 }% x8 x esac: f1 N/ z: n5 G
done6 l- P6 Z: _6 P% U' s: X( {
- u! o" w+ @( e2 N% H
+ m" r/ X) J! w
if [ $useStdCmdOpt -eq 1 ]; then 9 [& h; I3 K# W* k* H2 g* z9 B # use standard powrmill/timemill command option- L8 d+ e2 `5 j
for opt in $CMDLINE+ G3 [7 E( {' w
do 5 l9 P2 T+ z$ Z$ H case "$opt" in " S. F e4 L9 H7 n2 s" Z
-A)( T! j* z( U9 p! ~
DB_REAL=1 : k1 X# W4 L2 k' O& m9 }" g- Y ;;0 _* W9 B* ^+ a/ s- J$ T
esac3 h3 V. G1 e! c6 X+ H+ Q
done+ v# n5 A6 ~( H6 J2 R6 K' N
if [ "$netlist" != "" ]; then 5 t, M* \6 k& H( B& Q# I: }0 v CMDLINE="-nspice $CMDLINE" ) i" h) ]9 J( _" v1 } fi / I9 M' Q; o$ ] else * P/ X. N+ I; a if [ "$netlist" != "" ]; then 1 A6 `* I, ?8 } EPIC_DEFAULT_CFG_DIR=${EPIC_DEFAULT_CFG_DIR:-"$EPIC_AUXX/etc/$cmd"} 0 K F. ^. b- ]3 N1 D3 C # construct new command option 8 d$ e( A6 L( M3 V1 J, D if [ -f $cmd.ini -a "$circuitType" = "" ]; then ! d; c W8 C5 Q) C CMDLINE="-nspice $cmd.ini $netlist" # s9 j4 e+ \8 g; ]7 Z* {- ] else; E4 T3 ~6 l: L* Z- {
if [ "$circuitType" = "" ]; then 1 \4 f: l- Q% N9 O circuitType="msana" a- t2 |, x) z7 d# C8 P; f fi- k! h0 }2 d* q
CMDLINE="-nspice $netlist -c $EPIC_DEFAULT_CFG_DIR/$circuitType.cfg"# P+ ]/ H# E1 D/ K: a. V+ Z5 [
fi , k, y8 L: T* E. y$ \" C! w CMDLINE="$CMDLINE -A -o $prefix"; m" v# u1 a/ _* a; c d- x, a
DB_REAL=1 ! n! l: \/ h, w& H$ \ echo $cmd $CMDLINE9 o5 t) `0 Y- I2 x3 x
fi* }& d& f) S( C, a5 G1 ^! n
fi) e+ d. `2 q) Z8 s
fi # cmd is timemill or powrmill or nanosim or railmill or pwarc. N8 W& n7 K5 ]- f8 [7 \( L; e; x
5 Q/ l( e2 V3 j2 C; ~$ Z
[ "$HAVE_DP" = "YES" ] && [ -x "${command}_a" ] && command=$command"_a"( _4 l0 L4 m8 _8 B& P+ V; S( ?) U
[ "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a" ] && command=$command"_a"7 u, `* F$ e, l) R
[ "$USE_ACE" = "YES" -a "$vlog_design" != "" -a -x "${command}_v" ] && command=$command"_v" ! ~' b5 Q& [$ K* ^; K8 a* @: r ' I, z7 S. X6 `7 p; z( T/ o& Wif [ "$__engine_wrapper_called__" != "Indeed" ]; then & T/ L) Z+ O4 C9 P# W __engine_wrapper_called__=Indeed 5 [& H) w% m Z) o9 b4 A if [ "$cmd" != "amps" ]; then $ J/ N2 d9 S9 I5 b" z8 K export __engine_wrapper_called__ 8 Q5 C7 g: n" f" J- l9 @: ~ fi " z+ A1 q9 \; v" S4 f, C # T8 u; }: [7 f5 ]2 d/ H: d y$ N trap "cleanup" 0) M# |( P* `, P& j$ _
trap "" 27 U; o$ ]) R0 x7 V. n8 t
# }) H$ A2 v. t3 P. P. q% H2 w
[ -d "$rundir" ] && rm -fr $rundir 6 e, I. e2 U3 @6 B [ -d "$rundir" ] || mkdir $rundir 0 e8 l& |) _+ X7 B) W# }' c* H # D, {$ N$ q7 g case "$EPIC_ARCH" in 7 w. o) K; z E) X* |. M *SUN*64) - G# F* S" [% |2 i
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"/ G6 G' H$ }1 n' Z6 q) h
export LD_LIBRARY_PATH 6 h0 S1 l* G; w& |7 O" [ suffix=.so" H: t$ k6 p- r) r
ld_err_code=127, V% F7 l9 }! [! _% V9 [
;;6 E; C1 ?3 H- y, s* p2 D
*SUN*4) / c- [& v9 L; } t LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" $ u' X$ @5 @$ g- c" L# Q" T% V export LD_LIBRARY_PATH 7 e& E* `. O7 ^* n suffix=.so.1.0( a) S: c, G. p1 V
ld_err_code=127 4 E) W% Z! f" I# G% i9 B4 H9 f# s( S0 } ;; ; i+ ?* u" c( Y4 z/ o *SUN*5) ) k1 X8 W7 e: m: q6 f LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH" 5 H5 z; |* x' r# e export LD_LIBRARY_PATH8 y/ q3 {2 K* Z p
suffix=.so, v2 o: O+ @6 L
ld_err_code=127 " @ @' N3 S" Y7 q* U- z ;;$ q& B. r3 T9 P* w* V @
x86sol*) , H' B& B$ J! b4 N" k
LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"- H' |" x% E* D# ]5 t* K
export LD_LIBRARY_PATH ; v% v- O @$ j8 V+ i, e3 l suffix=.so . @; a, {/ U0 c+ u: b7 n% F3 f, n ld_err_code=127 ! W/ n5 n5 y2 x ;; 7 K/ r, Q# M& _% c; A4 z *AIX* | aix64) 9 ~( j) h/ e) v* N* O, z. W
# When genepiclib creates shared objects, it creates a import file and 7 v0 H! [! Z) q7 u6 g
# uses timemill as program. So at exec time,program timemill is needed " A# [5 n& e* A- I! J* ?' W
# in LIBPATH I* M2 d0 X0 O7 [ $ln_default $command $rundir/foomill4 Z! w* i" @% p
LIBPATH="$libpathLIBPATH:/lib:/usr/lib" + m$ O* U. t3 a5 d0 v: l% x export LIBPATH' S M8 |& j* b! J b$ M8 }7 ^
suffix=.o $ t: B0 z/ r- R# n8 @- M0 }( g ld_err_code=8 T3 }( e8 S( Q4 o1 r0 d
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then & ^: g" e% |& Z! z tdir=`echo "/tmp/d"$$`2 _* `$ Z) E: v: o9 l! f
[ -d "$tdir" ] || mkdir $tdir1 G4 q8 d5 y3 P& A3 v
if [ -f $EPIC_DIR/libCustom.o ]; then 6 l4 \8 x' y9 U. ~! E7 T* ? cp $EPIC_DIR/libCustom.o $tdir/1 Q2 {, g! f+ d. J
$ln_default $tdir/libCustom.o $rundir/ 8 |& U8 [# A% |. Q fi0 @$ R/ l6 q% g# E2 Z; Y/ |
if [ -f $EPIC_DIR/libModel.o ]; then + e6 y( q3 ^: C5 M cp $EPIC_DIR/libModel.o $tdir/# W) X, N1 X3 ]+ R D. X b' w
$ln_default $tdir/libModel.o $rundir/7 e1 h$ [4 c5 G3 G3 m: ?
fi 4 X% ^' s! c5 |+ H6 z, \ if [ -f $EPIC_DIR/libFuncModel.o ]; then " X& P! |: l$ e+ c1 g cp $EPIC_DIR/libFuncModel.o $tdir/ g$ y$ R0 N/ @5 N! ^2 T( h
$ln_default $tdir/libFuncModel.o $rundir/ & g% G* \* b8 `* A fi , X0 P7 W0 [; D if [ -f $EPIC_DIR/libFuncModel.34.o ]; then % ]# U: b, ^9 I N* Q cp $EPIC_DIR/libFuncModel.34.o $tdir/ ; s) H |4 Q% V5 n+ H $ln_default $tdir/libFuncModel.34.o $rundir/ . \) t1 Q4 a4 Z% i! P fi 6 I5 c3 F7 ~0 l: d# [1 [2 s fi 5 ?4 L$ A: V7 Z* t$ G+ c3 A #Set the IBM flag to enable more shared segids7 ~$ w( I- p. E8 g4 @1 C3 i
EXTSHM="ON" {! n) P$ [: ^) ]0 w export EXTSHM2 l, l3 S5 Z E' ?2 b
;;* [2 A+ \0 i2 N( y0 |9 t& f
*LINUX*) 2 o2 u: p+ J9 |, c5 T: S" G, h% A suffix=.so 5 a, G! o7 \$ D4 }: i5 i0 F5 p ld_err_code=1 ' i2 l g+ u* T ;; - {( X M/ t8 i; K0 K6 N5 ^) {+ {* B *amd64*) ' {- C: }0 m( t; B, P suffix=.so 3 H0 [- V5 G) n5 n) j ld_err_code=1 $ c' a9 G3 r9 N! l- y" R) ` ;;0 K" V/ [2 x1 a& @8 l |
*suse64*) 5 _- }0 r- d# {; M) k. }2 ^6 k. m suffix=.so , h3 \9 g9 c! S1 `: U ld_err_code=1 . Q3 P/ D) _: @* k ;; 5 e) L- I: Y9 V/ V *suse32*) 5 G8 f1 S2 X5 q! }9 s" g
suffix=.so - H. X7 b$ l6 G ld_err_code=1 / b) C4 f7 E) M! ~; o$ `4 | ;; 4 M& I9 a6 L p: O* a esac* A/ D* h& |; I
. T3 K( ~1 \& H% E [ "$has_custom" = "YES" ] && ulib="$ulib $cwd/libCustom$suffix" % R- q% g3 P4 |' i7 Y5 j' K4 Y [ "$cmdname" != "timemill" ] && [ "$cmdname" != "powrmill" ] \' b$ n, z" t% Z3 K' ]6 M/ v$ \
&& [ "$cmdname" != "nanosim" ] \: e7 b7 t& _5 s4 d5 Q
&& [ "$has_model" = "YES" ] && ulib="$ulib $cwd/libModel$suffix" 4 g T' F" R$ h0 G [ "$_VA_" = "YES" ] && ulib="$ulib $cwd/libva$suffix" 1 |& u2 E6 V' i7 @* [9 x K! A( ~. P) E8 {& w
#Look for command line option for libFuncModel.so2 Z+ W( s) C( C& }
# user_library_next=0 1 K) H" A! I, y/ r% k$ G, V7 c has_fmlib="" d# u" [5 _" k& G7 k
for opt in $CMDLINE, v6 O { Q3 v
do 6 i5 L7 s& c1 y0 _, M9 }5 ? case "$opt" in * v3 o, F% r5 D$ l" y6 {, `
-fm) - q) x3 \0 B$ Y, C* J0 I CMDLINE="$CMDLINE $cwd/libModel$suffix" # }7 ~' e& a; S2 _, O ;;" p7 S& _) R2 j. |
-fm_user_lib) % O R B: B d2 U" i7 J has_fmlib="YES" % p3 \1 ?0 Q& O. z& R' I; Q6 U3 V# |# user_library_next=16 z% C! L3 L) u$ s2 z% {' J
;;" |$ X! s7 H) P9 y# n m
-xc) ' D, |) D3 l! Q! d9 ~+ P* M if [ "$EXTRA_CAPACITY" = "NO" ]; then& i5 Q' j, P: A' E
EXTRA_CAPACITY=YES 5 h; a7 S" L5 f1 e5 y fi- }2 h* d7 g) A$ w
;; 3 @5 H' [& t7 z; L9 o8 v# @# *); }1 h( _3 u$ K" {+ S
# if [ $user_library_next -eq 1 ]; then4 p9 ]3 A* Z0 O: Y1 m0 d+ k- l
# if [ -f "$opt" ]; then * t7 ]# M9 f0 O! R1 e# libfmodel=$opt 1 ?4 f9 t2 f2 T; z8 R( @* ?5 z ~# else ( C% y0 y" ^, G/ m: ^# ~' C/ j u) F# echo "-fm_user_lib: Specified file not found"* g8 X$ h: {3 ]! Y) g' m- l
# echo "-fm_user_lib: Specified file not found" >> .epicscriptmessages * F+ C% Y5 r6 n# F2 V% I6 v# fi * M7 a4 O, e$ d/ @1 @# user_library_next=04 f9 C, }8 |8 g+ `
# fi/ A& k6 s, k1 {# |+ P* L. g/ u: W
# ;; & k3 p# k; d6 H# f esac6 \& D5 E+ j! C* W( `$ C
done) q+ i4 D. Z; k+ m3 y' ]
6 N s+ Y9 f* X if [ $cmdname = "timemill" -o $cmdname = "powrmill" -o $cmdname = "nanosim" ]; then , u- l$ K& W! t) O6 O flib="" y# i0 q: W, E2 V
if [ "$has_fmlib" = "" ]; then $ v: S" C7 y. i* e" b8 ~6 W: f. } flib="$flib `get_epicrc ./.epicrc user_libraries`"$ t: y) m2 }5 j5 \5 r9 w' r! |* g
flib="$flib `get_epicrc $HOME/.epicrc user_libraries`" 1 V- y. V, c; C4 ?$ U+ \: x flib="$flib `get_epicrc $EPIC_DIR/.epicrc user_libraries`" 9 L3 ]% {3 k: E fi8 o4 Z8 L3 G7 \
fi % ^7 {1 Y7 `( O5 r3 o! y9 t- h% z9 a3 p
for i in $ulib$ V( R9 X! [' s! n: J7 s
do 9 k# u6 H* p" S [ ! -f "$i" ] && continue - N+ c9 f) I5 K+ {* ]/ ^ dir=`dirname $i`; cd $dir; dir=`pwd`; cd $cwd 0 f. @" x" g) t, @4 h i="$dir/`basename $i`"6 `4 J ? B; g
case "$i" in9 c8 |) ~ L& k! Y
*libCustom$suffix*) [ "$libcustom" = "" ] && libcustom=$i;;0 R$ ]* v1 H: y9 N* T% ~
*libFuncModel$suffix*) [ "$libfmodel" = "" ] && libfmodel=$i;;! C+ o2 |/ `9 r+ _
*libModel$suffix*) [ "$libmodel" = "" ] && libmodel=$i;;: d6 v$ N4 y8 p% |2 d" l/ N
*libva$suffix) [ "$libva" = "" ] && libva=$i;;; O$ A, Y9 n( k2 d% r0 ]3 m3 k V
esac+ P' U: g4 Q, T
[ "$libcustom" != "" -a "$libfmodel" != "" -a "$libmodel" != "" ] \3 G$ d: k' H- J3 ^3 [
&& break $ H5 J9 T& d4 g/ W9 _0 Y done * z* |9 X1 U: x) j' _' K + F2 j, c- m3 s5 D # symbolic link shared libraries to .epicrun$$ 0 b5 _6 S5 `1 @5 W5 L/ {4 { cd $EPIC_DIR; epicdir=`pwd`; cd $cwd {$ K+ S4 Y: Z) a) v) G; s
if [ $cmdname != "timemill" -a $cmdname != "powrmill" -a $cmdname != "nanosim" ]; then " {% G8 |) T& D! G8 b: Z if [ "$libfmodel" != "" ]; then ( w3 I3 I/ U% r; C [ "$libfmodel" != "$epicdir/libFuncModel$suffix" ] && \ : ^# ]; Q. E+ }8 x echo "Using $libfmodel ..." && \ 5 [7 _ h6 b. N, h1 M: e echo "Using $libfmodel ..." >> $EPIC_SCRIPT_MESSAGES_FILE , ]& }8 Y: L! M' \( L3 ?* _ if [ -f $rundir/libFuncModel$suffix ]; then( R" x% \) |7 G
rm $rundir/libFuncModel$suffix: \% N# ^' K9 D& P0 G! h, @ c9 ^0 d. C7 A
fi* Z9 O! J" ?/ I4 \
$ln_default $libfmodel $rundir 3 [1 w N, |: J8 a
fi" l4 {; @0 R, c* |2 c$ S# L
if [ "$libmodel" != "" ]; then 2 I1 b6 U& ^/ g ~ [ "$libmodel" != "$epicdir/libModel$suffix" ] && \( i1 P) F9 X7 s/ Z0 U) l
echo "Using $libmodel ..." && \ ( p* F2 ~3 Y, ?$ z& t echo "Using $libmodel ..." >> $EPIC_SCRIPT_MESSAGES_FILE9 e" N$ M3 v, x, W8 s, G
if [ -f $rundir/libModel$suffix ]; then2 J# g9 n, t6 b: z6 ]
rm $rundir/libModel$suffix h% S2 X- U2 ^- h% m/ H fi& G( |- f4 r+ q: Y' l% h+ e' q# P
$ln_default $libmodel $rundir : ~+ I7 V3 d& h- H) H1 a& i5 ]
fi 8 B, B$ g/ W+ \ fi . i }/ u: R4 Y# C if [ "$libcustom" != "" ]; then: b7 e; g! c% j0 Z$ r0 _, O& V
[ "$libcustom" != "$epicdir/libCustom$suffix" ] && \ 3 q. |/ ?5 N; r2 p1 s- E/ Q echo "Using $libcustom ..."5 V5 D& E3 c7 f/ ^+ x# s7 g9 t
if [ -f $rundir/libCustom$suffix ]; then% B i" R# B* k3 v7 T
rm $rundir/libCustom$suffix 8 }3 U8 [6 E8 b& f/ L Z fi( L2 |1 r0 q" r" i2 T1 }
$ln_default $libcustom $rundir r; S$ D* W4 o4 } fi , E, K; J' m; f8 M5 s9 ? ( _! c6 y8 l3 r+ a5 @ if [ "$flib" != "" -a "$flib" != " " ]; then Q5 b5 F& K- u7 G: f
CMDLINE="$CMDLINE -fm_user_lib $flib"; |- d+ a4 u- \' p% s: o
fi + \7 k7 N1 {) n: j, K; P2 |1 T0 q9 _8 c7 d5 e& A- S
if [ "$libva" != "" ]; then/ H" l+ C: G; P$ Z( v! {8 ]3 B% t
if [ -f $rundir/libva$suffix ]; then) z: k) M- E: `! R) }5 E" ^
rm $rundir/libva$suffix6 Z! x5 s; f7 t2 B* q
fi 5 m6 @4 M# u* A& g $ln_default $libva $rundir / V; Q( \- s( a1 {9 V! k0 Y7 g6 G fi ; l( O0 l# A$ f4 A$ w' e5 R' S+ G6 H
: M6 o3 `% Q+ m, X0 ?5 F% ?& ?9 K' ^
# VCORE design library ( U* j$ ^9 B( L! d if [ "$vlog_design" != "" ]; then( j! @0 D4 y4 m( O$ c
$ln_default $cwd/$vlog_design $rundir/`basename $vlog_design` & W5 Q0 S+ g! [9 Z0 ^ fi" o1 `4 T% j w7 Z
7 L0 ?5 Z, N) r+ u4 {* L if [ "$EPIC_EXTRA_CAPACITY" = "1" ]; then / ^6 ]9 I2 D' q6 x EXTRA_CAPACITY=YES 1 N& U% Q9 [8 s! p+ |# k9 k fi 4 e( B' c% ^$ [" k+ H 8 ^, a" X3 \6 ^1 l; U% f. y" Y [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "0" -a -x "${command}_xc" ] && command=$command"_xc" 1 K0 K# v6 B: c* j5 K u! H: c [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a_xc" ] && command=$command"_a_xc"+ g" ]) F4 O/ P5 g: h$ d/ I
#Create temp file if dual process is on 2 n# X! J# v/ J7 h, f8 C if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" ]; then , u! Q/ f0 S: I4 T if [ "$EXTRA_CAPACITY" = "YES" ]; then / I: C3 X# w% U8 I6 A/ o. Y touch $rundir/rpcidfile0 G; W) S! \6 ?6 v% @6 D0 C# r0 k9 e
fi8 [* c7 N4 G" V. Z6 @" k& S# `
fi 1 x2 g! ~! ]& ofi, l6 b# M# S8 m; {
/ T4 w) y; B( t0 @$ b# ^
run_cmd()$ c; i- w F, T2 x8 \7 \
{( o, s& f& n$ W6 `8 D- X8 }" a
command=$12 e# H' [: s. q* v( }
shift4 D% A% P: F7 g- G, e1 S; v2 \' W
& W; P# l) m2 n! _
if [ x"$VA_FILE" != x"" ] ; then 3 \3 W) y( f& h4 W cmdline=$ARGV8 j9 p3 x& h4 j: O5 p2 q
else , h( I" t4 K; V. N% { cmdline=$@ : k: M4 h5 F/ d2 o( c4 q. X! P8 _ fi % ^8 c% K; p. i8 d& t, m6 n; |+ P- R" |
debug=${DEBUGGER:+"$DEBUGGER $command"};0 b, |' f" d& L6 N
! t1 r X* ~$ k6 R
# To disable Exec-shield-randomize in RHEL3 U3+ when running nanosim and nanosim_a - W: J& U8 I2 R4 Z" C7 o- _) T # so save-restore may work.) r; s3 p% ]1 h5 i1 ^- e
setarchStr=! C u. }/ i/ T6 I# ^, T
cmd2run=`basename $command` ! p, y: B6 M5 q$ { if [ ${cmd2run} = 'nanosim' -o ${cmd2run} = 'nanosim_a' -o ${cmd2run} = 'powrmill' -o ${cmd2run} = 'timemill' ]; then 2 O2 |8 _' l3 C o( N if [ "$EPIC_ARCH" = "IBMPC_LINUX_LINUX" ]; then 1 b# S* Z1 u) D/ e! |( D% J% S setarchStr="setarch i386 -R " - X( Y$ n& s8 H fi% X% p) F3 h* ^6 d I
if [ "$EPIC_ARCH" = "linux" ]; then , Q+ u3 J" O# |0 @* D8 K setarchStr="setarch i386 -R "' T, N: `6 x% I" _7 Z) i) `
fi + |, r+ @! `0 Y/ I if [ "$EPIC_ARCH" = "amd64" ]; then , P/ n5 g+ c4 J% ?1 } setarchStr="setarch i686 -R "+ z& e( d X5 M {* |& N1 C4 |
fi2 a$ d) D# c. A- F+ x
if [ "$EPIC_ARCH" = "suse32" ]; then' u' n: R" `8 W1 p) O
setarchStr="setarch_suse i386 -R " 7 u p1 C" {0 H' y* o4 R fi# l4 ?: d) m" i) I, \6 G( ~
if [ "$EPIC_ARCH" = "suse64" ]; then 7 x* z* P7 T3 t! `7 }0 c9 { setarchStr="setarch_suse i686 -R "9 r. v& V2 [, T8 V2 C0 }1 Q
fi 8 a, ]) \# m1 D+ u4 K& C8 a fi + W# M9 {6 r! X6 j$ G3 r8 b$ |& l( m0 [: I; Y
ret_stat=09 L' u; H$ y$ F7 I; {( W9 E9 x
if [ -x "$command" ]; then. I# ?8 k) D6 }9 f4 _
if [ "$debug" ]; then ' d8 ? `8 m* E6 _# j. B5 q5 K _debug_args_=$cmdline, e( K8 C! u" E- b
. .epic-debug ; t. Q. ^) }8 Y. u" H! r) ]) W else t m9 m# P* J DEBUGGER=; export DEBUGGER 2 r7 W% O: I: r+ [( i8 S $setarchStr $command $cmdline; m3 \2 A: \$ h/ @5 b
fi0 _- c \7 t/ J3 u$ z
ret_stat=$? + h! m' U: ]+ j2 X' d4 { else - O u( a( [( ]- r; _ echo "Corrupt installation, executable \"$1\" not found!"8 a& `) \( o8 r
ret_stat=1 " p9 p2 S( o$ \: C* F# K9 R3 ~ fi 8 E% F f' v8 }}- [7 s3 B6 j* Y
5 c- e& w8 w: r# \! S
# keep runing cmd if ctrl file exist `# f$ ?: \6 r }
1 d# K/ d! h% V# Z, d/ S
run_loop() / d' r' ]& H) _! ^. a2 D( I{; W; L0 Z& Y5 D1 l
command=$1' o) N8 o( u1 S. e0 b9 v4 N+ N
shift2 S. u# i$ u8 u2 o
5 T) [1 s9 p u* c
if [ x"$VA_FILE" != x"" ] ; then ; S+ {' f3 j, d& l cmdline=$ARGV( q$ E- l D7 O7 V1 R- [9 E4 N2 m
else2 n) G+ q3 C" }8 Z
cmdline=$@7 q5 |$ i U9 K# L, P! n
fi , g3 Y) B6 T2 z" q& a9 W# J" O! v# x H' n- X
while [ $ret_stat -eq 0 -a -r $LOOP_CTRL_FILE$$ ]; do ' \# w9 R+ G& m . $LOOP_CTRL_FILE$$ . g! h! ]; N% \3 a4 P4 Y run_cmd $command $cmdline -banner 2 - ^" F) t! ?9 y3 r& H& E; h done;# z& D( S Z# P. N* y% \: T
( s5 J& B/ l$ b# {% u s
if [ $ret_stat -ne 0 -a -r $LOOP_CTRL_FILE$$ ]; then7 N' r- |, G2 n: `4 K7 n) n
rm -f $LOOP_CTRL_FILE$$; C) N1 p% m. o# s
fi% e4 j8 k+ [- Q' T# T6 ^
}. N$ T0 h# x. g# C, I- f+ D
3 l5 G5 R9 h/ ~0 I) }- x" |7 \
har_check_ret_stat()( P8 i" k* c( X
{& U1 m) ]# V' V2 n, n
if [ $ret_stat -ne 0 ]; then " H" y' m B! M8 O. c! R echo "Simulator returned with non-zero exit status. Stopping."4 ]) P9 G2 a! f
exit 1 6 T( U# S9 J, K fi6 @0 k$ [4 }- `0 M
} 6 m( @5 A$ E$ d3 i, T O " b, d* H3 z$ L7 e3 h" s8 l: ~#8 @* E. ~; R3 B3 K, g( o
# set stacksize and datasize limit " h. v& T" N) z( B( E# # y% [( A5 h1 Z* r# C% U 0 D! M3 J4 q5 `; j1 mset_data_limit 6 M' Z4 [4 F7 }" D. ~set_stack_limit% S3 C% Z1 w$ O
" S( n+ ~ q* a# g#rm -f $LOOP_CTRL_FILE ) x; v3 R( d- G0 }6 K5 G8 D7 Y9 F1 `/ ]
run_main()- ~ n! D$ h9 E) @/ P6 I* {7 l
{ * }/ a/ z! z. {# Eif [ $is_special_har_run -eq 1 ]; then , g& m. `! Z+ U, m( U1 l$ }$ M if [ "$har_ofile_prefix" = "" ]; then ! {# I$ }- Y, M: S% @1 M+ k echo "Wrapper bug. Notify Synopsys technical support." ! i7 V! U3 P5 L) t$ P exit 1/ Y, ]" g- V0 N! }1 I
fi $ v! D+ ?$ ?/ I4 E* y# B if [ "$har_hilo_file" = "" ]; then$ r, e5 W6 z" v0 A5 n, c
# no user specified hi lo file - do both runs ) a9 y4 b. Q8 o/ O run_cmd $command $CMDLINE -har_one -har_setup3 e; c4 ^% V. |- j! T; d$ e
if [ $ret_stat -ne 126 ]; then & q9 v$ k2 [* o% g- ~ har_check_ret_stat* h1 o7 \6 S! g% w1 R1 w# Z
if [ -r $LOOP_CTRL_FILE$$ ]; then 4 H! e& o; h: K z+ d run_loop $command $CMDLINE -har_one -har_sim ${har_ofile_prefix}.hl) c$ V' J9 |! ?% g0 c, J; ]
rm -f ${har_ofile_prefix}.hl ; S1 ~2 v7 Q) k5 P else * b9 y$ G5 Q6 a* o0 {/ C3 j run_cmd $command $CMDLINE -har_one -har_rmhilo -har_sim ${har_ofile_prefix}.hl 4 }7 N/ J+ F; `; e& E; s fi+ t" j9 P/ [9 `
else . L9 h! Q) t1 O$ N ret_stat=0" e! \ d8 B& n
fi+ b" T( T! [7 `- M8 a% j+ x
else7 H6 d' b& ?& D% O7 c/ W* I; C
# user gave a hi lo file name1 p H. T- v, y2 g0 L |
if [ -f $har_hilo_file -a -s $har_hilo_file ]; then % l5 |* A: Z1 G& f # file exists - use it - only do sim run 6 ~2 V; w7 e% D! u* c* ~, @, m run_cmd $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}' ^1 u8 M* w' E% d4 W$ b
run_loop $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file} - G6 T" n( o; I/ U& g% I/ H else, \4 Q+ k2 i( F' x2 d
# no such file - generate it - do both runs 4 G* J0 w' }) ^1 Q run_cmd $command $CMDLINE -har_one -har_fnf -har_setup) d6 G9 j9 v+ s5 Y ~0 J' l
if [ $ret_stat -ne 126 ]; then ; p4 a% q' ]" K& B* q% F T har_check_ret_stat l: r. g1 z; a3 u8 V' [! s
if [ ! -f ${har_ofile_prefix}.hl ]; then% |# Z( t3 p/ I# {
echo "No hi lo file generated after setup phase. "! N/ ^) O; I$ m4 B
echo "Contact Synopsys technical support.". ?' J# E- v( f- `5 Q+ x7 U
exit 1 * o' |: K! }$ z5 W' D else$ G' p) w$ z2 c. z. Y
if [ ${har_ofile_prefix}.hl != $har_hilo_file ]; then3 e7 m% g: x4 `- ]
mv ${har_ofile_prefix}.hl $har_hilo_file 2 D8 w7 p- Z& d fi ) d, ~; \- V4 y' G Y( T5 j0 } fi 8 w, w9 r7 U" w# q$ K0 {& y if [ -r $LOOP_CTRL_FILE$$ ]; then, I J7 J5 j0 N7 C3 Y8 S
run_loop $command $CMDLINE -har_one -har_sim $har_hilo_file& [. H' t4 S7 m( l
else $ s ~ I8 ^& @ ~. [! _ run_cmd $command $CMDLINE -har_one -har_sim $har_hilo_file6 _: G0 N5 D3 h! G
fi : _2 w& E& u, P3 x. E$ J2 Q3 N- u else ( t" h7 s+ |2 s/ v1 x2 c- u
ret_stat=0 5 S* f" ] a* i5 {8 U/ W+ F fi 3 x1 }% }% _% f3 d! ~ fi 0 d- g8 _. M9 z& S fi ! B: A2 K& `* j3 [else 3 A: q4 G- q$ Z3 \% ]6 d' d# don't loop if -har_setup % d7 y& o1 [8 Y* n" h+ |0 D3 P if [ $have_har_setup_flag -eq 1 ]; then/ }- {4 x; L& m3 p
run_cmd $command $CMDLINE 5 J# m8 N. F: a( T, ?" F if [ -r $LOOP_CTRL_FILE$$ ]; then + T7 j3 Q+ g! w9 t rm -f $LOOP_CTRL_FILE$$ / ^4 M6 G7 }. A fi9 I7 d# C' ?2 O1 q7 W; [8 ]
else 7 P5 J& j9 b; Y: T run_cmd $command $CMDLINE ! S0 p0 \. u6 `& J! p7 q. Z/ f run_loop $command $CMDLINE 8 L1 v' i4 f. H1 y; s fi / g: h5 m+ E; D. Y2 ?fi3 A) R5 B3 @( Y( l- e
- U! ]6 ^- J+ }$ J B9 y
if [ $ret_stat -eq 0 -a $cmdname = "powrmill" -a $postgres = "y" -a ! -z "$workDir" ]; then% e: V/ j5 ?9 h) n9 P) w0 O
pwCreateErrDB -w $workDir -e $errFile4 k0 E9 L5 l3 b5 E% h0 ^2 e
ret_stat=$?5 d: V- g8 G) ?9 e' F, c/ A' b
fi 3 z, a I1 L, D# l% ?. H5 O} 8 O- a# A1 f: L/ D- | & @3 S- y- u4 Y! M7 z# d% Z: K" dcleanup_alter() & o+ s7 x) ^4 P y0 q% }/ F- P{+ g% X v) R! E; d
/bin/rm -f $ALTER_COUNT_FILE 1>&2 8 n' n6 y K$ T7 {+ z /bin/rm -f $ALTER_HK_FILE 1>&2 $ V* S1 X, x) o, b0 u- N3 X} 6 E/ ^2 T- \- D; R3 L4 }2 C8 l/ m( ~) i3 |6 ?- D
#generate alter temp files based on pid " G! B9 C4 Y' x$ iALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$ 2 e9 q s" y; N6 B. Lif [ -f $ALTER_COUNT_FILE ]7 l+ R6 `4 @+ r& J
then 7 v# S% r8 V4 ?6 g
until [ ! -f $ALTER_COUNT_FILE ] ) B& O1 F3 ~9 `% y do 1 b, g/ `7 b1 W ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$* r. @& t8 Y/ W# C9 y6 t2 G
done # D( N( H; E3 t2 o D2 P Kfi) ^1 y5 A s; b7 U ?( O. Z% f
export ALTER_COUNT_FILE * L; a1 p' g; A. p1 D0 C % q! f" E2 @5 a3 H0 OALTER_HK_FILE="$ALTER_HK_FILE"$$ 6 V1 E3 S% Y- ^if [ -f $ALTER_HK_FILE ]/ `1 k6 f- n/ P* V
then % `& p2 m- F b6 \- w
until [ ! -f $ALTER_HK_FILE ]) V4 y W( {; l1 T8 |; V8 ~
do3 d4 A, z! I' M+ _
ALTER_HK_FILE="$ALTER_HK_FILE"$$ 7 g0 O# g2 H3 D# J4 a/ |% n done 3 ^: ~2 Y4 |. _8 efi3 O! L, L, Y8 H" [4 s
export ALTER_HK_FILE 8 _1 W6 ?9 {7 i/ I6 T1 p1 }. Y! r, z1 ]
#generate monte carlo related temp files based on pid& e: |. v9 V4 `8 o
cleanup_monte()/ e( b5 ?5 Y; P _& M- h
{ ( B' j0 F7 b; w5 d+ x /bin/rm -f $MONTE_IMG_FILE 1>&29 q1 q! r( M. m! o- k* O# t9 _
/bin/rm -f $MONTE_IMG_FILE.gz 1>&2 ( e, n% I, J) G /bin/rm -f $MONTE_COUNT_FILE 1>&2 ! u! y( o; L6 A% K# Q /bin/rm -f $MONTE_CFG_FILE 1>&25 e" `6 D P, H( ?: O
} v, u1 o# E# p+ i' b2 e9 T
+ t5 U, q) p5 d2 X& P; a* fMONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$; n$ G: f; _. V! {6 w$ y8 w1 \, ~; U
if [ -f $MONTE_COUNT_FILE ] * e( p; L! u7 G- m+ ?5 [then9 |7 h- e0 q& S) u/ \6 O
until [ ! -f $MONTE_COUNT_FILE ] 8 j- s- x1 T. k do/ L/ ~ ^) \; Z7 G* o1 h
MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$ - X5 N! d) Q' M; \0 O& w done. S' v9 C3 I1 l( P
fi# C. q3 J L0 q
export MONTE_COUNT_FILE$ X1 K5 ?: b" v5 f
: ~ d" M1 Q9 rMONTE_IMG_FILE="$MONTE_IMG_FILE"$$ ' W8 c$ S6 a. c2 jif [ -f $MONTE_IMG_FILE ] ; n. X+ h9 l% fthen1 a- U2 E5 ?5 l9 b
until [ ! -f $MONTE_IMG_FILE ] ! d S# B! E+ g9 |& S8 ]4 ~6 u7 U8 y+ F do& ]/ O& e7 {$ f9 V. K; T2 a7 p
MONTE_IMG_FILE="$MONTE_IMG_FILE"$$ $ _& ~: I3 `' d: ] done 0 ^7 k, J# B% ~& qfi ! h6 y/ y6 G( Bexport MONTE_IMG_FILE % ]4 m$ k- B6 t: \3 O/ Y+ x& A" N6 ?+ }7 Z/ w7 a! F
MONTE_CFG_FILE="$MONTE_CFG_FILE"$$ ) T' ]$ f& D- Sif [ -f $MONTE_CFG_FILE ] ; T+ M3 |. [* u8 v5 @then , v' b& Q* Y7 v& n# ? until [ ! -f $MONTE_CFG_FILE ]( g! s2 j, [5 j1 K# } F# N' e
do' V4 I" R2 Y; H
MONTE_CFG_FILE="$MONTE_CFG_FILE"$$ $ v' x+ y/ f$ O4 F done : a3 s* R* w) c4 rfi 3 e' t/ Q, _5 V0 Q3 l. P 6 O2 s( k5 E* Y* j( C" g# main iteration- K) U5 F5 x2 A
run_main & B6 R3 Z; B( s' x; s6 X- O) ?$ y; l/ ?, C
if [ $ret_stat -ne 0 ] ! Y, W6 z3 i$ c, s! S0 u
then 3 D) i: D* ~5 g7 Q cleanup_alter . M1 g& b0 c5 N' X o4 p( Q/ u( u cleanup_monte 6 O! v3 C! z8 K2 e: U& k Exit $ret_stat \7 {' h/ Z) U0 e
fi" O% U7 Z, U( Q# p2 G( ]6 t# {
; r) m$ ^6 B1 |* x8 J9 W#Alter related iterations 2 ]2 D8 c1 Q2 Q8 k5 w" k" b: L1 Y h8 w0 U
iterations=05 z! @7 j$ @! L* z# V+ Q
count=0 8 ` @9 z/ Z( P) l1 {# _if test -s "$ALTER_COUNT_FILE"5 m) w$ K/ Z# X1 J: X
then8 N. W4 h4 |3 K7 h6 s
if [ -r $ALTER_COUNT_FILE ]; then 2 V/ y' L8 `' n+ K: r9 d6 E exec 7< $ALTER_COUNT_FILE( f- b# t- E R3 Z% {* d& B
read iterations <&76 j7 Y/ O" t1 E t
fi5 B9 M! Y7 W2 A5 E
fi1 i$ B& A, I% h5 O
, V- P! z/ e3 r. y4 U# i# F1 i
trap 'echo Program Interrupt; cleanup_alter; exit 1' 2 " A8 T& E- A; ^% zwhile [ $count -lt $iterations ]. N% t; a6 \5 ?# c7 t
do / D- a3 p* P) _1 x6 n count=`expr $count + 1`* C9 x' @0 U/ b. d5 Z) z. H1 ]
ALTER_COUNT=$count $ Z4 V" I/ c( `% n export ALTER_COUNT 2 P) X% B. R0 }( [ 0 Y+ T% J3 o& n& K run_main ( V2 A$ [1 P2 q) {+ g0 o; e 2 V6 o; S. T! j; s) K5 q8 H" X( Tdone4 v9 l, u3 C3 q
& P# d, h2 Y9 J% A2 l
#Monte carlo related iterations3 E( I' _" h! o* \
* m: x, }8 q' G9 [! c5 y( t
monte_runtime_summary() ! [' p7 J" s" }( B* A0 l{# m0 D" O: T% W2 X8 ]+ u/ A3 A5 T
keyword_1=real2 x( G# t1 _$ t7 q% |$ ?6 F
keyword_2=user7 o$ ~& i' r8 ?" D q1 X
keyword_3=sys : y0 u' U( X: Y9 y$ K3 e: h! q1 Y ofile_prefix=nanosim & C% |' v0 s* d# ?+ s, t" F3 [ I( w ]+ \2 H0 d( y6 \/ q
if [ ! -z "$o_option" ]; then + b+ r2 B3 y& {2 z! t4 p8 h logfile=${o_option}.log) m% j$ k3 A$ @4 g* ~
else- I6 E- o! d0 V6 }0 o2 o
logfile=${ofile_prefix}.log1 j5 R+ \. r# z
fi 8 S3 D" D3 C1 d1 {9 |# T/ d, G/ E( h
if [ -f $logfile ]; then: O% _3 n5 M8 T" v8 R0 a
echo "*** Monte Carlo Total Run Time Summary ***" >> $logfile 0 f7 c* b% I& j! s2 q8 Q- [3 Z 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' B8 m! ?! c- ~, Z
fi * q Q3 i. A$ K0 Y8 x" |$ Q} 4 _. ~; T! J6 P P# t0 k 3 S3 R1 u4 h) E2 K% c( }! M% S! {5 Qnext_monte=04 s) q6 z+ Y9 m$ R
cur_monte=0 2 Y' T% z L/ b. i) u1 T! W$ R5 D2 ~+ s$ W8 C
if test -s "$MONTE_COUNT_FILE" ! I* \8 @# X7 H+ D1 Y" O7 c+ m+ lthen ) B$ Z/ B! R* \' B* A K0 Y7 R4 l if [ -r $MONTE_COUNT_FILE ]; then + |) x1 T/ C, a- @: ] exec 8< $MONTE_COUNT_FILE 2 S3 g! h1 t. Z \ C3 S read next_monte <&8% \' \4 \9 b$ i9 V/ B
fi) j0 q7 H; A5 t1 }2 f
fi 2 |% x5 P' f. j! z: m6 }1 g& h4 F( P
trap 'echo Program Interrupt; cleanup_monte; exit 1' 2 s" w2 q0 G8 c% u1 X1 L) kwhile [ $next_monte -gt 0 -a $next_monte != $cur_monte ]. i) A- s# Q8 d$ O+ E D
do 3 D& n! ~2 j5 s t NS_CURRENT_MONTE_COUNT=$next_monte / ^& U& K/ O1 n( G export NS_CURRENT_MONTE_COUNT3 {5 l$ e" j4 ?2 x+ q, R- C: v
) N% K# W; `' O/ n echo "restore_ckt_state save_file=$MONTE_IMG_FILE" > $MONTE_CFG_FILE # |% o1 R+ ^8 A" k0 S, t8 e CMDLINE="$CMDLINE -c $MONTE_CFG_FILE" , u9 A: [8 r5 `6 z8 j' s: c' |- J! u! ] run_main % `5 t6 }: I! q8 N 1 [* K( l$ O1 c N3 r4 x cur_monte=$next_monte, A) ^6 s' a- ?5 e0 e! b
exec 8< $MONTE_COUNT_FILE, Q/ ~1 Z1 [0 R- O/ L
read next_monte <&8 # {0 O+ p0 T/ t4 Jdone & [/ Z. K6 f/ ]2 _1 N) Z' J, L , b8 d" O# Q( I: ^+ K yif [ -f $MONTE_COUNT_FILE ] . ]" a' }; Z3 `5 k9 Kthen . K* U* H3 p1 J. a- z1 c monte_runtime_summary : f3 E F8 W$ j# Kfi * m# J' d2 K# \) d" t& R. ` ( n3 L4 }+ o! ]9 R9 X) Qcleanup_alter 0 B9 C; b# J7 A8 ~cleanup_monte0 ?0 R: t9 H# }% K# @7 C9 K
& m1 [ ~" P PExit $ret_stat作者: jerryyau 時間: 2012-5-24 09:22 AM
nanosim有說支援ubuntu 11.10?為何不用RHEL5,這才是EDA的主流linux os