各位大大好: ) o* F# Z' H0 |2 k6 k5 Q 小弟執行nanosim時,卻無法跑出視窗來,有個錯誤可是我不清楚該如何解決?問題如下7 }6 a0 x* E ~% R; a
[: 113: 64: unexpected operator ! F7 \8 f, x. {8 s, U4 A( a/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim: 1: Syntax error: Unterminated quoted string; E1 Q( k) T- J% B/ N
有大大遇過這方面的問題或是指導我方向去解決, 謝謝. Y& h: A* V& {- U0 k& {- A5 A我在猜可能是這個檔案內的文字需要修改 但不知道該如何修改?. {, q ]- j! X* o. Y
以下為/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim 的檔案內容: $ o7 ^4 g f# O( j #!/bin/sh 4 P# b) r# t; |0 T' ]0 r; r#0 g0 g7 U& `! u4 B1 _* }9 q* h
# Copyright (C) 2001 Synopsys INC 3 c2 A( E# b* h7 k0 }! k. P# EPIC Dynamic Simulation Wrapper (DSW) . J6 ^1 @% r; i J9 Z; {" V# $ ?- H& v. ]8 ^8 K9 \3 W, B/ e2 xeval ${DBG_EPIC_WRAPPER:+"set -x"} 9 B+ K) r2 C- X1 ^1 F+ _" D7 Y* W* `, \ Y
if [ "$EPIC_WRAPPER_DVLP" = "" ]; then6 b. n. m* B, A
TEMP_ARCH="$SES_ARCH"8 p& V9 @! K7 p" I) E% ?
else% |! O, p! j, z% B1 x. W- M, U
TEMP_ARCH="$EPIC_ARCH"' l# [! }& C( q" S/ j4 L. N
fi9 y6 {7 d0 I: ?: g% T+ c: V
6 A, V" z. q7 z/ z
scan_for_hva_args() # `% m. K+ `% n5 z2 K* P( p{ % A4 H% u$ E+ E9 w* w {1 ~ /bin/rm -f hva.init 1>&2 ' `" @% T# w' b& P* Q while [ $# -gt 0 ]; do * f1 @- X) \3 J- K+ d v case "$1" in2 I+ Q. s( s: `/ N+ R% |
-vaf) + R) v l2 N8 g5 r- A3 ] have_vaf_flag=1; l3 _' ~% C3 \; q) W: U
have_va_flag=05 O/ D( t& F! [
shift; ; O: ~4 E3 B9 L9 a# x# q continue; , n! H" \3 B. E! K, B# a( g ;;1 u- Q8 w( V" w8 C" V. b
-va) 5 A) l( R. f' |' U$ r have_va_flag=1 2 `( q6 f: E L: @1 ^1 q3 T$ O4 d have_vaf_flag=0 / s9 k7 n+ D# x+ k% z" T shift; 3 I$ y' b% |4 N9 ] continue;8 i9 m" {! b8 K4 Q8 _
;; ) P$ O4 v. ^, ?- f. ]0 x1 I+ p -*)6 W9 m: R* Q3 T/ r2 n2 c7 O+ o9 N6 Q
ARGV="$ARGV $1" 0 V9 A* y+ V8 t2 h ^- z have_va_flag=0, p0 U s" j2 E8 w
have_vaf_flag=0* ^) o7 X' J6 s8 u+ `, K
shift; ; E1 Z a& u, m* g3 v' ~ continue;: a/ I1 b$ j. U. O0 ]/ S
;; 0 I( }) }8 [. ]! A5 Z *)8 u: s3 @7 w+ t$ P
if [ x"$have_va_flag" = x"1" ] ; then 3 a' n! j$ [( _5 N% j) J* f VA_FILE="$VA_FILE $1" 6 G% a) ?7 v+ U* L" z elif [ x"$have_vaf_flag" = x"1" ] ; then ! O! t4 Z* g% o: ^ X="`cat $1 | sed -e '/\;/d;`"+ [" U$ g% U8 W) u6 n2 B9 x. Y& x
for token in ${X}; do " L5 y0 _# e# M VA_FILE="$VA_FILE $token" 0 ^+ j1 p3 G% k" g2 z( B2 {+ J" z4 x done % J' t( `3 ^! f. K5 u5 a& k$ q; ~9 h( _- N' T else0 e5 m- ]5 l$ ?- s& v; |
ARGV="$ARGV $1" 2 B) o L6 z) W8 S! ^ fi 9 E0 U; t9 S' ?3 Y$ W/ k shift; 2 w4 _& @6 W' v$ D/ [# X ;; P3 j8 K t+ Z
esac( u# u+ q" p/ W, Q0 X
done: g3 @6 u$ f2 @) p3 ~: u
9 d* t3 {- V0 _0 T/ l0 N6 S$ L- O if [ x"$VA_FILE" != x"" ] ; then & E0 J# ~+ T3 }7 e7 o## /bin/echo " xxx ARGV $ARGV" ?- A. Y$ V$ a" y /bin/echo "choose nanosim $ARGV ;" > hva.init ) {8 {; Z0 e4 b. i& n- p/ w echo vcs +ad=hva.init $VA_FILE -o simv ^8 U9 n1 d6 x/ n; e$ n: T# \ vcs +ad=hva.init $VA_FILE -o simv b/ j5 I& }: Q' `
exe_status=$?3 A+ }% G& V- [: ~: Y3 i
if [ $exe_status != 100 ]; then / P" b" B3 R- n: ` /bin/echo "" 8 J4 y1 _2 c; I' s /bin/echo "ERROR: Execution of vcs exited with code $exe_status" * V4 [( K, ~* O/ C9 y /bin/echo "" , l6 y& j/ L4 Y9 H6 {) v/ y$ K exit $exe_status 8 E- b6 j- G8 M* `8 X1 w fi 6 E+ V7 e5 x, N5 O1 v4 T7 { hva_files="-n simv.daidir/amsVD.ntl simv.daidir/amsWRAP.spi" 3 D( Z1 `$ o5 Y' N* h ARGV="$ARGV $hva_files"$ @" |4 S4 g# p5 J, r# ^
fi . ]0 o* I& M" o! j( X}7 m% I5 ?* z- V, H* }: u9 p
#------------------------------------------------------------------------- [" e# ~ g; s. H* ^
5 B; p% P2 k! K
cleanup()1 A7 M- E6 m2 Y7 G
{' L' q$ K1 F' c
if [ -d "$rundir" ]; then $ H$ o; j0 C( d6 G1 C. v1 |+ J4 x& ] # On AIX, a .nfsXXX file is created if libModel.o is removed . L1 X$ g& W, R& j6 F! w& S # so .epicrun is not removed because directory is not empty. : b' ?0 \2 ~ b/ ~- s0 d% C& A # Solution is to remove it again if the first rm failed% ~) x( c5 G z3 O) N; K: W6 K9 Z8 }
# (rm -rf $rundir || rm -rf $rundir) 1> /dev/null 2>&1 ; X2 S# Z- E- t2 t, o6 w3 q if [ "$EXTRA_CAPACITY" = "YES" ]; then/ q U! V. H h( v
chmod u+x $rundir/rpcidfile1 V, h; I. z, h8 N' u
$rundir/rpcidfile2 \. ~. f: h2 J0 x+ i, t
rm $rundir/rpcidfile& [# l+ F- Z! x/ c+ I2 g$ @* T
fi / G) v* H2 n+ t/ c9 v rm -rf $rundir+ p% b- {6 S" b. Q
3 I# K( @, e9 X y5 b: d+ X' J
#Due to NFS problem, we have to copy files needed to7 c! \: k- O8 k( x0 V
#/tmp/<temporary directory>, then symlink's files / M& T1 d1 o3 w' ^+ b* v$ F #to the local temporary 'rundir'. This avoids the problem ( _. h& N+ P9 o7 c #to remove 'rundir'- |& Y* n$ w7 N) |' f' F3 M5 j
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then" p+ d( P, l7 U/ u3 u. ?
if [ -d "$tdir" ]; then 2 q( T G, k$ [7 G* t2 O: W4 Y7 I9 f rm -rf $tdir: u: q6 f4 q- t, U* T
fi ( n' W% k& Q+ p& E fi+ i* G# n* l- O9 |3 x
fi 8 L! @8 s& k3 z2 U, j2 f if [ ${exitstatus:-0} -eq $ld_err_code ]; then! |) V- H8 F0 s' w; q# D
[ "$has_model" = "YES" ] && rm -f $cwd/libModel$suffix ! y2 c' @! @3 {% o" ? [ "$has_custom" = "YES" ] && rm -f $cwd/libCustom$suffix 1 l$ |# O/ k; \" L0 }) W# | fi 2 @" Q; ]5 a/ |- p0 G8 b6 ^ [ -f "$EPIC_SCRIPT_MESSAGES_FILE" ] && rm -f $EPIC_SCRIPT_MESSAGES_FILE 1>&2 , m7 I) Z5 O; x8 c; z exit ${exitstatus:-0}9 e/ O7 }7 P/ z# x v5 V; Y- Y/ y+ ?
}( \# x; @0 v; Q; N
8 C) ^4 @# {& \" @! ~3 v$ I) |Exit() 2 P8 ^5 V9 k( k9 u8 v. m2 f* V{, \ _. N# T& ]+ Z* o
exitstatus=$1 ) e0 \7 M( S+ e2 u- I7 h4 H2 w exit $exitstatus+ c6 o7 F5 g' a% m
} ) M8 S" K) v& O. g5 e+ r8 X7 p) O2 w& g3 @
# get_epicrc filename keyword: z4 G( i; s Q& S# J0 ]' @
get_epicrc(), e6 z: Q; o' c C B
{$ L$ _( r. E+ n( `2 s |0 K/ h) h9 [
[ -f $1 ] || exit 0" P: D1 ?# M" G+ K+ k6 \4 d" c
key="/^$cmd2:/{print \$3}"4 Q' T) C+ [9 C4 B% U
awk -F":" "$key" $17 S; i2 W2 `1 C. g# x# q
}" ? S7 X4 X5 ~5 I' t! u
4 K7 b. w& z' ?4 @- G, y/ j
#" y8 r+ {: U0 X; u& o+ I
# set datasize limit to hardlimit 9 F2 j. ?7 Y, V" V6 _7 N; d#/ d3 x% r2 k o0 _ J
set_data_limit() 5 f; l; V2 i( E/ \) `0 ?{ 0 [2 C, ?$ V0 X/ M7 D& f- ] dbglimit=0 ' {0 F$ Z! f) A* e hardlimit=`ulimit -Hd` * y8 s) y' m! `4 [+ @ softlimit=`ulimit -d`$ \7 Y, r: B+ j: H
desiredlimit=3500000$ b- D9 w/ Z2 P5 z
hardisunlimited=0* T* L* F3 f+ H/ z- H4 R! H' }+ S3 n
softisunlimited=0$ v* G$ t C: [# x) P% W f
is64=02 A* I) p+ M3 X4 }( z
w! x2 F8 d( z( m; s* b/ |
case "$EPIC_ARCH" in2 c4 c8 F) Q( ?& q: A- q
*SUN*64)3 B7 z+ `- x+ {4 X4 e
is64=1 $ m0 I# [+ f* X: c& U- L ;; 1 b: S0 b: T: a# A$ I amd64)% _$ Z0 s( D; q: r/ b$ m
is64=16 `3 D" v, X# p
;; ; u" b8 I9 } I& ]4 K x86sol64). v8 _0 e* a4 _
is64=1, G$ D' p. C* v+ i
;; - A0 s1 e% s" _0 e, D$ F aix64) , R5 [) H) [ W. @9 ^; n is64=1 # [' D1 Z# \5 ~+ Z ;; $ P+ G4 R, c& w8 }( y8 p4 J) _ suse64)! M# x/ X2 h" F! ^* `6 o+ w
is64=14 ~( y- r# _; x
;;! @- }4 a0 U7 D4 B8 a
esac 2 Y! p: A7 d4 N. f; V ; Q- A* n+ m, w, R7 l* W if [ $dbglimit -eq 1 ]; then5 G- j$ D- \3 j( q! M9 G
echo hard $hardlimit soft $softlimit; B3 Y, v* n9 D0 ^8 p
fi8 W. `) x6 O5 O; ^, D, Q
; X& u9 M+ T* @ if [ x$softlimit = "xunlimited" ]; then # a6 g- U/ K+ H softisunlimited=1: n: I' K4 z$ S4 o6 F' s: j! p5 f
fi 0 t) R+ C. j4 B7 h9 m- | ( S# f" ?' b8 M s# W' ^ if [ x$hardlimit = "xunlimited" ]; then 9 j S; D7 m4 v0 O. C8 l3 Y hardisunlimited=1 / A7 F6 g" h3 {% O/ Z0 G( a e fi" N: _1 T" | r8 l8 q3 e
- O" }1 i; ~9 _8 Z9 x # 64 bit machine should have bigger than 4G4 j& x. N6 L2 z z6 V9 `, f
if [ $is64 -eq 1 ]; then4 [; x1 c! F' \9 [; Q5 Q- z
desiredlimit=5000000. @" s6 ?1 M9 A+ U6 V6 D; V
fi( O+ r- _4 ~# w* n! F. p
2 c: y8 G8 v, i) V6 U: K6 R
if [ $hardisunlimited -eq 0 ]; then) |5 g9 n6 h. h! f
if [ $hardlimit -lt $desiredlimit ]; then 9 R! @3 _3 ?+ C# x3 M ? echo "WARNING: datasize hard limit $hardlimit K is too small." u' _( k# ?/ W B G! Q, V) i" {5 Y
fi" |( S( |" C7 u {1 a
fi r, t- r* k$ J3 s# t! j+ ~
7 ]* ^: G8 r0 w. Z( L if [ $hardlimit != $softlimit ]; then ) o9 L- h+ j8 ~$ e ulimit -Sd $hardlimit / `2 m S6 P# Q4 C" r4 @4 ^* Y# echo "WARNING: datasize limit is set to `ulimit -Sd`" $ d2 }* Z! I5 V: H5 ~ fi6 d$ d+ s- q, X# E1 u
7 _+ h: ]- M* o8 _* A" J
if [ $dbglimit -eq 1 ]; then" z8 I" A9 {: U2 S
echo datasize hard limit: `ulimit -Hd`8 F3 [9 J0 C m
echo datasize soft limit: `ulimit -d` 6 Y: @3 o+ T. j$ T5 q" H1 ` fi 9 D r1 e# {! | K: `: b3 Z( w} " q: k _2 N" ]. i7 ~; c+ s) h" q
#4 T* T1 x- K$ E( r
# set stacksize limit to desired limit 4 ^, q4 s! x! t* b- O6 F# G* g+ i9 F7 W9 Q8 x5 |4 z0 eset_stack_limit()) V |! X1 _ {7 w
{ ; D5 _* k w2 B4 g& q dbglimit=0; L! A. Z* L" e
hardlimit=`ulimit -Hs`5 B1 P$ a( e( O3 K$ F2 M
softlimit=`ulimit -s`2 C* J0 f8 f& g2 P& V& G4 o
desiredlimit=60000 $ H) _$ Z' ~3 Q/ S" m9 ^; t- S: S hardisunlimited=0 + I5 D/ r0 b$ R8 l softisunlimited=0* b1 R2 @2 P0 I& g# F
is64=0; g) \7 {+ G$ V7 h$ r
! ]* j {' Z8 c. u9 e( q; ]2 ? case "$EPIC_ARCH" in + E( I3 O8 |8 G2 \ *SUN*64) & U6 U: S( E7 T- ^6 o2 D/ _ is64=1 $ i- N& v; I. i- r' H: _4 Z ;; ' Y+ n* W; `2 ^ amd64); u8 R' p4 c" O: e- U
is64=1' q+ q" K3 ?) ^& C# b. B3 Z( B7 D
;; 3 z) C* g# a2 y( B x86sol64) & D6 s( l$ ~# u( [* G( q G1 Q7 h is64=1 $ p& n3 `" K' r% a0 y% |6 ]+ K ;; " H. a: |8 B9 P8 A4 y) S! \ aix64) 2 e, \+ d: K- z$ L+ J is64=1* A" b* T+ g" H
;; $ z2 H9 ~7 a8 v0 J( o2 B suse64)+ U2 j: \5 ?" V2 o& ?& g
is64=1. {/ h; T; \$ O2 h: A6 [
;; 9 ?& F: P4 g3 g+ j' I, U esac# [0 J, R: W5 [) F3 ~
) u, z& o. l; I5 O# V/ yif [ "$EPIC_WRAPPER_DVLP" = "" ]; then7 d1 t: s2 {5 I! \
if [ $is64 -eq 1 ]; then 0 B/ X% J2 q+ ]( t# W' E desiredlimit=2000007 _ {3 S8 }$ {1 y) ~8 C
fi3 e/ R: e" y) L1 p
else - w, _# s9 k1 n. J; \ case "$EPIC_ARCH" in3 n5 F U' D% G" p% F
*SUN*64)2 o* l( S( s8 H: t5 A
desiredlimit=200000 8 l! I# a3 [ [% s# {+ v$ o; V ;;$ i! f. o) x" e6 ?8 [
esac $ k: K# y1 E+ g: A& A* Tfi $ B/ O0 h' s/ L+ z) w4 k1 Z# T 7 J$ Z' P- `7 D) ^* {9 B' K if [ $dbglimit -eq 1 ]; then" t* ^( d$ ^$ U
echo hard $hardlimit soft $softlimit _/ A! U1 w* F$ g
fi3 D4 a* C( ~9 D) [( C4 J% ?
9 ~. m* t% ^: j
#stacksize can not be unlimited, pick smaller number3 e2 ]5 y- O1 {8 ?
4 K) y Q3 _! c2 L% C: C
stacklimit=$desiredlimit6 E) c% h% l7 O9 B- t, G
* X t2 g/ [+ e& H5 V if [ x$hardlimit = "xunlimited" ]; then' ^$ Z. ]" \; K. v+ a! \
hardisunlimited=1 $ v; d' e$ b9 b, D: t \ fi 4 b9 X+ v/ }6 Q# H, {3 ^8 Y/ z/ S/ P0 C4 G* s7 s/ k
if [ x$softlimit = "xunlimited" ]; then " o- W5 k8 D0 [+ o* O I softisunlimited=1 ' o& S4 k7 X( v! t7 B) ?2 S" D/ Y fi4 W2 g" ?0 J0 Q* t. N
; x/ ]1 i+ _6 R
if [ $hardisunlimited -eq 0 ]; then - X% ]' f$ z" o' h" M if [ $hardlimit -lt $desiredlimit ]; then# y$ t" J( k1 r* h$ q
echo "WARNING: stacksize hard limit $hardlimit K is too small." , G% P9 L2 K9 }* `9 t2 Y desiredlimit=$hardlimit % b% [) o7 x* ?) Y7 w. P stacklimit=$desiredlimit 4 B% I! ]: R( d, x; R& O( s9 s, C fi7 T7 i* j. ], g1 W
fi - ~" f# ~; z2 J- r6 S# k4 i9 Z! d, S& S$ L- G
# desiredlimit is set to proper value (< hardlimit) . c# t$ s6 H# q0 k+ V+ S; a# x7 M: l4 h2 k. Z0 d
if [ $softisunlimited -eq 0 ]; then 7 r, z3 F. ]5 [: W2 ?& q9 d( F5 N1 P- } if [ $softlimit -gt $desiredlimit ]; then* T" T, z- V3 t4 |$ w
stacklimit=$softlimit - A* k8 u/ s- j+ |1 y" S fi; V+ ^4 A5 G# a- K$ g2 n7 P) o- `
fi6 t: S/ ~9 ?4 F& N( N6 g0 r' x
: w% _1 ]9 S, N; n if [ $softlimit != $stacklimit ]; then! r* P5 I( T" x8 Z* `% L' t
ulimit -Ss $stacklimit 3 q; \/ H2 T, P |! f- {# echo "WARNING: stacksize limit is set to `ulimit -Ss`" 7 L5 N3 ?3 p O: ~( d fi 1 T& Y4 b5 b7 t. J) H, `# X; l! y4 ~2 s6 ] J* y6 O
if [ $dbglimit -eq 1 ]; then' M) w1 e/ ~: ]0 I0 K9 _9 U
echo stacksize hard limit: `ulimit -Hs` 4 Q/ x6 R7 I0 h0 t$ \ echo stackize soft limit: `ulimit -s`$ L, o- F- B% L! t$ _
fi% x `; N6 @/ y" `$ j4 M5 {
}8 {8 @+ D( W9 }. }, y' z2 `
- u7 n6 F1 ?+ B5 U" H
open_epicscriptmessages() * |3 M0 U& u( z{ ; }; { V* M( R. T# U% p#generate temp ".epicscriptmessages" file based on pid ; }) l1 A O' @' M8 [$ }9 @ x! hEPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$ / |3 ?6 y. R; }" Kif [ -f $EPIC_SCRIPT_MESSAGES_FILE ] 2 _! J( J2 l' [: b7 othen - h' v' [! U. ?+ S
until [ ! -f $EPIC_SCRIPT_MESSAGES_FILE ]4 L! m A0 U' \
do ( s! m) T9 i- [/ H EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$ $ \3 Z7 i, V9 P- y done0 |$ |2 f7 h! t( r" e
fi" _/ g, i( G! L9 F( n2 P
7 O6 u" }& n8 k& G
export EPIC_SCRIPT_MESSAGES_FILE) L7 {0 w) \* w6 @
} 6 W+ N5 T0 h" w2 t# d# V% Y4 R* _& c/ U, W' y6 ^3 j9 \4 @
. Z+ D' [1 |7 v
cmdname=`basename $0` , g% g: o" A+ o2 ~+ X' e9 Ypostgres="n" D" q9 J9 K) |+ lostore="n" & m" Z. }6 K% Egui="n" * s5 Z0 {5 r+ J4 `( T2 U9 L6 wdatabaseOn="n"* k, L' ` _1 }: s, H& Y0 @) p
f_next=0' M, C% E! z. D1 h2 x
f_option=""5 j( g$ i3 x1 p9 J0 i- y( `( U
o_next=0 : s; V5 I6 O4 a9 S- m" ^o_option="" * Q6 r" ]( @ ?9 A8 LworkDir="" : r: k, N. X; r, h/ c5 RworkDir_next=0 : d n [5 k2 ?9 B: XerrFile="powrmill.err" ! A; S. a5 X* v/ [: B4 _& Jwin32flags=""+ U- J3 u: `4 a {4 v" q+ ]
ln_default="ln -s" " A* k. L4 t7 V/ \3 G- s$ `2 h+ p/ g: k6 W& x
har_hilo_file="" 9 }! O3 m+ Y. I9 ~- K) |. Ehave_har_flag=0 & i5 s8 N |. lhave_har_setup_flag=0 ' U% R4 T9 ]7 [4 k5 o2 x9 v- Lis_special_har_run=0 # x% @+ Y( E0 P: Mhar_ofile_prefix=""* o; F# ~! k8 T2 L2 A) E4 [5 z% R
; G/ g2 \' @! [6 jhave_va_flag=0 - ~' a, Z+ l, c8 ^% k! r5 Jhave_vaf_flag=0$ M( T; T: c7 N$ d. a
VAF_FILE=""4 R2 [' j$ p# p5 f* b
VA_FILE=""2 e0 j0 i; p }, x* P1 `: ^4 [
ARGV="" $ m- Z, M1 U& v! Z% `2 B9 n' n9 I" U. X t" b O+ x! m0 ?. R1 z3 Q# ^' T5 s
ORIGINAL_COMMAND_LINE=- k. }) K, J$ Q( g. o. g& k2 e
LOOP_CTRL_FILE=".ns_ba_env" ) w) G$ v9 ^- O& v8 jALTER_HK_FILE=".alter_hkf"- g+ d! U7 }6 {7 y
ALTER_COUNT_FILE=".alter_count"1 V5 G3 Y% {2 s/ E
MONTE_IMG_FILE=".monte_img_f" ; p9 z* [( y# b; R' T5 ZMONTE_COUNT_FILE=".monte_count" 9 I' @* ` C+ f( [MONTE_CFG_FILE=".monte_cfg" : d9 p8 I9 o( I; F# G1 XEPIC_SCRIPT_MESSAGES_FILE=".epicscriptmessages" ) j0 f" M4 X) H, f: H+ O, D' y, D: ~- ? t9 U0 q
open_epicscriptmessages $@+ `* o9 e# s3 ]* _( S( N% b
8 w4 O0 x9 ^$ }# M( v1 Yscan_for_hva_args $@ 9 Q& g; y* g9 ?% L6 y" n, `& u. s# K$ K1 @) h* z
scan_for_har_args(). l: |; F* @5 E5 E
{ 5 k5 `, S8 y, z while [ $# -gt 0 ]; do - L5 ^2 T9 [6 r* a( v* Q( l1 r: w case "$1" in + p6 |! U1 g1 O0 |# h8 L2 k -har)) z$ \7 x0 k3 D& s9 _$ o* e. `* S
have_har_flag=1 9 }$ Y; L/ j- q5 _ t [ $# -gt 0 ] && shift / ~* I; j# j: p/ W if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then ! d6 y) _- p# p& Y# h5 T har_hilo_file=$1 # l6 B; x( W$ y; Y shift : Q$ _- M e( P" z fi 7 Z, q% x. n2 O if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then , ?& B9 F! j. K# v echo "Too many arguments to -har flag. Only one hilo file allowed."; @' M8 G1 w8 ?2 J0 [: b
exit 1' Q0 k8 a& J- h8 ^0 T! P
fi 2 h4 u: A" H6 J, m. I break 1 |. e) Q+ L9 N) h1 z1 A ;;& O o1 K# k: l! U: ?# J
-har_setup)# M2 x9 o2 b- }, x# [) j% e
have_har_setup_flag=11 T. i& ~% t: M9 A: [/ P
break + h1 N, c5 {( v( h6 q; f" D' c0 F) R ;;& I/ p) p- A0 @
*)8 R# B# a! e" a5 u% \( O
shift % u% c! D# q# s1 @( a1 o& m% e7 K" { ;;, D& ~+ C6 s- t8 w
esac : }% {. D* c2 n! Z3 b3 X2 S# U done * Y, F; R0 ]$ |1 s. x} ! e" \* \' E7 t/ {% [ I $ {- D0 R$ B! k: h1 yscan_for_har_args $@* x* n5 ^3 _7 g2 Z3 u' Q
: ^( Y2 j9 I0 r0 V# [( N
for argv in $@0 R$ L' ~! j$ @
do+ d w' T. j3 L
ORIGINAL_COMMAND_LINE="$ORIGINAL_COMMAND_LINE $argv" 3 g, X5 K6 u: j% I- X if [ $argv = "-gadb" ]; then 1 Z7 \8 @" U1 M$ b# M databaseOn="y" 1 }8 j4 ~6 {; p2 Z workDir_next=17 y2 R+ l6 w3 @7 [0 t: Z3 n
elif [ $workDir_next -eq 1 ]; then * M0 B# I/ m- O; P8 L! w. S# P6 w workDir=$argv 2 E" P4 T/ ]" X2 `( Z+ b1 L% y workDir_next=0 7 F/ P# y! P6 m, O* { elif [ $argv = "-ga" ]; then ' Z2 U2 @: K S gui="y". ^4 A; k# j0 I* u( ]
elif [ $argv = "-f" ]; then 0 X. P ~( Z+ G, e3 F' Z f_next=1' [8 }: @# z+ V$ h5 |$ u" s
elif [ $f_next -eq 1 ]; then% J; _- X4 ]5 V( R3 L( A# [% R
f_option=$argv - ] L+ x6 V1 S7 z3 X f_next=0; s/ L2 d; F$ T% e+ v2 N1 k- F
elif [ $argv = "-o" ]; then : V" L6 } M$ v o_next=1 0 Z, k% V5 F) s/ F1 s, u9 L" E elif [ $o_next -eq 1 ]; then m4 a3 X8 L% t! D m* y4 W
o_option=$argv : H% i- y. b( Q; H, g o_next=0 ( C" S, \' o' x, a% U, ^ fi: L' t2 ^$ q: A% ^; Q
done . E- j5 F( _7 I h: secho "Command line options: $ORIGINAL_COMMAND_LINE" > $EPIC_SCRIPT_MESSAGES_FILE 5 Y. m( T% _ E4 w
7 O5 g( w W% {) U0 `! l/ A9 a2 D
if [ $databaseOn = "y" -o $gui = "y" ]; then , d$ A. y0 S, g% e if [ $cmdname = "pathmill" ]; then ' [1 \' ^+ d4 a. o2 b if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" -o "$EPIC_ARCH" = "SUN4_SUNOS_5_64" ]; then & N' p0 R5 A$ [+ Q5 x( F ostore="y"' Y+ G% H5 {9 Z8 M2 a, f7 W
postgres="n" ( ?) b h& ?; A- f2 Q& v ? else) \! o8 O& h5 c3 F% @* a# ?
echo "athmill GUI is supported on Solaris platforms only" 1>&2 * w/ ?) S/ V; L; T7 ^
exit) J/ F e0 n, | m8 c$ t
fi( A4 Y5 w5 B' q3 q. }7 w0 ?
else ( x$ V3 f# p' n4 ]; G8 E, L9 p; b postgres="y"5 f1 `0 e" \/ e$ a& a$ A0 E- @
ostore="n" ( v8 j, [- p' G1 \: p. O. Q6 } fi) c' u2 K$ F0 l* ~1 H4 ^! ^0 j
fi" {4 [% p0 c9 \* G6 i
# K/ r8 p5 \$ D+ P) T4 s
if [ $gui = "y" ]; then4 t7 r+ D# k) L4 ~+ K# @$ I$ ^% x
if [ $cmdname = "powrmill" ]; then1 G' s6 ?# ~5 [' t7 B' ^+ A: i
pwga $@ O c. g+ T# H% W
exit1 s/ V2 ~: V; Z2 [% p+ i! j
fi7 g/ R- m) l! C4 L' C
6 ]7 T8 k( H7 F2 ^3 I6 t+ B% X
if [ $cmdname = "pathmill" ]; then * ^8 `0 ` N! P if [ $ostore = "y" ]; then ! {% F+ x1 d4 w; u# q ./pathfinder $@4 [( y# }$ ^; r6 G4 H$ @
exit+ V: p& J3 Y9 U# m5 g* P6 T
elif [ $postgres = "y" ]; then ; f! V3 U! u% W/ j pmga $@: v# K" v, N3 w
exit! x) F5 x! q$ O) O! @! y
fi - x* v2 R( u( } fi3 M" `3 T7 f* G
fi/ l# `+ ?" q$ J/ w' H# j* r+ d" r
{7 J x1 V; }8 \: J) q4 ]
if [ $databaseOn = "y" ]; then; J: L% j. Q8 _8 c- |
if [ $ostore = "y" ]; then ' s% T: l& R4 c( y* S0 P, G5 H! b if [ -z "$workDir" ]; then M7 ]+ M9 A8 B echo "Error: Missing argument for -gadb option" ( v q1 Q; W9 e6 k2 {3 t& } Exit 1 # ~7 }/ \3 g+ R/ E7 c fi5 O7 k6 [" d1 U5 M
fi 9 W8 N5 T" F, r1 ^ if [ $postgres = "y" ]; then) P# t5 U& [1 G- }
if [ -z "$workDir" ]; then 5 [4 n9 D$ O8 {( N6 F echo "Error: Missing argument for -gadb option"( a; Q: W! ~' A% B8 `
Exit 15 b! P- E- M7 n e( p) p
fi2 R; y6 Q1 s' n( l: E6 |
fi+ ]2 v% b% x6 S
fi ' x2 ]3 z2 g" I4 x W, U0 e5 g9 e3 T1 O' V
if [ $postgres = "y" ]; then 1 E) a3 U9 m$ j. Y2 q 5 ?' n6 U1 }# H! k7 b9 k if [ -r $EPIC_BIN/scripts/gui-init ]; then: O3 u: J) H3 w7 z! S( R
. $EPIC_BIN/scripts/gui-init2 H1 e1 v6 O1 |6 _: K& r# R
elif [ -r $SES_ROOT/bin/scripts/gui-init ]; then, G1 C; N1 P( Z9 {# ~) ^2 n2 P
. $SES_ROOT/bin/scripts/gui-init3 S2 H+ j9 P' l+ M7 n" O% w+ y. T
else3 \9 q) S' Z% a( V) J) t9 a% _
echo " ** Installation in \"$EPIC_HOME\" has been corrupted!" 1>&2- U( \0 C+ ~! ?; g( c- Q
echo " file bin/scripts/gui-init is missing." 1>&2 : k) R P8 g: x( g8 K fi; S2 e& K5 o s' [& t) d6 D" v1 I
/ i8 T; x# g: c" P/ k workfile -tool $cmdname $@ 6 y5 T! j9 b( d1 i5 E1 E& ~fi0 y5 o! S3 M1 i$ g4 V9 G7 X/ D. Y
, e \8 G9 o$ x5 j' b' d2 M0 H K0 ?
if [ ! -z "$o_option" ]; then ) G6 a2 J9 r0 y9 _# g2 T) z5 R errFile=${o_option}.err4 r5 A1 ~, L+ ]8 G* T$ U- {. R6 q+ S9 B3 L
elif [ ! -z "$f_option" ]; then 2 Y0 Q7 r3 p2 t. [2 t3 |5 A( ] if [ -d $f_option ]; then" d# Y% l: Q! C, [1 Y% V
errFile=${f_option}/powrmill.err 8 S9 y m3 t' j: G1 G# @# u5 j6 H else errFile=${f_option}.err# e3 r* M( T7 S: `) t {
fi" X$ i( h* Z' O8 l+ `
fi1 ` h/ `- V' R# \, T. q% m9 L
1 N! W( l' V0 b* G6 N. i+ |3 c ! L' |7 c, d# h ?if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then8 x. z0 H& b# @& \$ K/ x& G. b! X: |
rundir=.epicrun $ F( ~1 q3 S+ i5 v1 j1 Z. Q eelse6 R3 ^. i$ w' F: x4 ^! m
rundir=.epicrun$$5 u( i' N" o% |; Z+ d* w
fi, \8 r* T" L: O& X* @6 O
# T1 n8 r- _! j/ Z) C( ]6 jlibpath="$rundir${EPIC_DLIM}$EPIC_DIR"6 n+ W. |1 ]0 q3 l- n( ]2 a8 m
. {' ]( o2 Q3 w" w; L; k
cwd=`pwd -P` , A+ L: q0 {9 Mif [ $cmdname = "acehdl_w" ]; then! b" o4 g. G- w! i( x1 d
cmd=`basename $0 .sun` 0 y( ?$ j' C$ V: x7 w3 C cmd=`basename $cmd _w` 9 K$ G# t) O+ {else # q7 a" M( k5 H/ g8 | cmd=`basename $0 .sun`% N4 d) I; d f( A* p, l+ g1 I
fi % @ w9 Q+ k' ]& h7 V" r, ^8 A, X1 N4 n6 ~
command="$EPIC_EXEC/$cmd$EPIC_EXEX"& g8 E, l" v& w: c( [, F
[ ! -x "$command" ] && echo "$cmd: not installed!" 1>&2 && exit 10 q4 h3 x, Z( F" e
8 x* ?/ K, d$ @6 R6 D# buildmod extracts -u/-fm options and calls genepiclib & K3 P, ]9 z" Z, k0 L( ~* E# It also set the remaining options to variable CMDLINE2 Z( U" Y" W3 t, O
# look up in .epicrc for -fm & -FM parameters / ]/ ?% h/ B5 F! p2 m* F 7 Y# W# j, J8 v8 Lfmlist1="`get_epicrc ./.epicrc user_adfm_obj_modules`" t6 `# v$ F; S3 _* ?& l9 x' m: |
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules`" O$ U4 A. \6 L
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules`" 1 w5 Y- k: k) k* Z I! w$ l& x0 p 2 E3 ^' ~6 L# CFMlist1="`get_epicrc ./.epicrc user_adfm_obj_modules_force`" 3 U+ n1 k( z0 w, D/ i$ @$ g[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules_force`" ( E7 ?5 Y) Q" S- Y[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules_force`" ! E+ v% a0 j0 e0 a) h4 U" P, b 7 |3 Q, Z+ l! t. n- ?) L4 ^8 nif [ $# -gt 0 -o "$FMlist1" != "" -o "$fmlist1" != "" ]; then1 q/ ], S9 g1 B8 M+ @5 [8 ^
# note that the buildmod script will set the CMDLINE variable! Y! h4 Z; ~% J5 `4 g; D0 K! v! C
. $EPIC_BIN/scripts/buildmod8 V% ]+ Z9 ~6 @" q
3 B, P0 x6 u+ q* i #echo "This is the value of cmdline=$CMDLINE" # S$ i( A( _& W; |0 ]) | #exit 0 ; o% s* s1 ^8 W " \0 E$ h" d6 v" W W6 j2 L* J # if a new timemill/powrmill/pathmill built, run the new one) N4 D& Z2 h; ]. v# {; Z
[ -x "$rundir/$cmd$EPIC_EXEX" ] && command="$rundir/$cmd$EPIC_EXEX"% W6 t; Q" B$ @! C6 ^* t* B6 @7 O5 {/ z/ J
fi 0 C% R1 \" {1 ~2 Y9 a, I) f9 A8 \$ n; Y$ j+ d. e8 O. u
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" ]; then6 I% P. p0 }- i- a/ N; r; {
if [ $have_har_flag -eq 1 ]; then B7 Z. O h" h1 u/ d/ ?
is_special_har_run=1) s, I6 v4 a; Y; y* ?
if [ "$o_option" = "" ]; then $ i q, e \% Y case $cmd in3 N" e5 h; b0 V: S
timemill): w" y9 y5 i- v2 T
har_ofile_prefix=timemill : H @, }$ K' j3 { ;; $ f0 G3 G: @& F5 Q6 g powrmill) v3 m3 F% T; x% ~8 v w$ o har_ofile_prefix=powrmill# J1 b, W9 x! T9 v0 h. S
;; ) _3 I* I }! T D nanosim) 2 S; [$ O& Z' s; G9 C+ @ har_ofile_prefix=nanosim# B7 G4 [( ~# ]8 C7 t
;;5 A9 {/ s9 X' O2 F, v
esac2 ~/ D# A& e+ z. Y
else/ X6 p3 F2 I9 r" y3 Q P
har_ofile_prefix=$o_option * j+ V5 g# I# [2 z' Q fi 1 ~ h* |; ~% F# l; D# K fi2 F/ P* a; v. R6 ^7 ?, d- Y
fi + \% q- O+ p+ j; T; L( o ( u3 S( `8 b9 t3 d6 |1 j# Call Double precision version of the product if -D$ l. u7 e# P5 @8 R- ^9 [" e4 R7 w
# or simulation time > 1,000,000 ns. 5 l6 I9 y4 x7 \# Jif [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" -o "$cmd" = "railmill" -o "$cmd" = "pwarc" ]; then7 j% K9 u; X8 ]
+ J# E0 j1 J. R1 c) U # Now the binary always has the ACE feature9 ?' a& F0 e( p7 l
USE_ACE=YES( [ I$ f- `" m- Y4 y* u