各位大大好: , n. u2 V5 N1 `$ ` 小弟執行nanosim時,卻無法跑出視窗來,有個錯誤可是我不清楚該如何解決?問題如下/ M. W$ H% g5 S' c# k3 v
[: 113: 64: unexpected operator 6 ]' g7 k& K9 s$ a9 z( g+ z; s/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim: 1: Syntax error: Unterminated quoted string' c& P# A: T- K, }/ U( O! g
有大大遇過這方面的問題或是指導我方向去解決, 謝謝. + [2 u0 F+ `; U/ @2 Z. @8 H
我在猜可能是這個檔案內的文字需要修改 但不知道該如何修改? * J& g" _% W7 r b% w( z3 ?以下為/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim 的檔案內容:$ r) u. i( x5 b W" |3 Q
#!/bin/sh0 x4 Z% }* y. e$ w: ]" }% `$ D
# 8 M2 S5 p/ J1 s* e2 q# Copyright (C) 2001 Synopsys INC4 Y, _9 h+ }" w# g5 H- D* R
# EPIC Dynamic Simulation Wrapper (DSW) , |! y# H: ]% I s) E; R# . ^* ]: ?0 `7 P {+ Feval ${DBG_EPIC_WRAPPER:+"set -x"}8 f' @7 y( ~9 L$ ~6 t
& n/ I0 Q' x- Aif [ "$EPIC_WRAPPER_DVLP" = "" ]; then 1 F H3 P" u0 H4 e/ x( F TEMP_ARCH="$SES_ARCH"9 V" v, M8 i4 f% u1 R, ~
else ! g. s1 u* K7 h/ J9 } TEMP_ARCH="$EPIC_ARCH"2 Y8 U# F; F6 M6 r8 N
fi ' x8 n' W2 C3 @; j7 n2 F0 D9 a& I1 |$ _+ o. S4 z
scan_for_hva_args() 5 K) C4 `/ S P& G, J: v% c{: ~+ Y+ z' F* v' K
/bin/rm -f hva.init 1>&29 p) b* I5 @1 d0 L: Q
while [ $# -gt 0 ]; do: l% l) ]7 i7 i6 X( Y" [/ Y( A' g
case "$1" in 8 m) j3 T# j- I -vaf)- O. r8 m: B T* i- c
have_vaf_flag=1 ' z. S4 ^- v8 I9 L5 _. U9 F! @ have_va_flag=0 $ {8 }; w1 ]6 P" e- U' @* ]! j1 m3 q2 f shift;! t- } S* D7 f% l r
continue; : r4 i0 Y, x. j8 ~( L# a$ f ;; ) l" D# h( s. F0 t% u0 g -va)4 ~3 Y" D: A4 P: C8 H/ D% f
have_va_flag=1 3 c9 V" z! a* V7 j, M6 Q& U have_vaf_flag=0 4 v% `" s. Y/ X- f5 i( ?5 Z' j7 P0 [ shift;) d& x. g% B: S- L2 y6 r7 L
continue; 7 @( L1 g( g& d/ x" G% X) Q ;; , D: A4 E2 n+ O* f, v) x7 _4 n -*)0 Z' _; m' U! Q% Z
ARGV="$ARGV $1" ) q4 X4 X5 a& u$ \. q* K! I have_va_flag=0+ C5 g$ _" i+ K5 O5 D
have_vaf_flag=06 _1 `6 V6 ?$ [" @
shift; 6 m9 m) m" \ u2 G/ ]; j continue; 7 t% v3 m" y, Y9 l ;; 3 X, _. l+ n8 Q* } *) V! Q4 R0 C8 {9 z0 A' {8 d
if [ x"$have_va_flag" = x"1" ] ; then 0 d/ V6 y' ^5 h
VA_FILE="$VA_FILE $1" D. g( P& _4 H. q+ u3 X$ X
elif [ x"$have_vaf_flag" = x"1" ] ; then & ~( I- t, j, d) w, b% q5 y- {
X="`cat $1 | sed -e '/\;/d;`" - F5 T9 k5 [! i1 `2 `$ I: ^! D# W for token in ${X}; do3 H( Y1 K; W, {* `! l" j
VA_FILE="$VA_FILE $token" # s1 A" b* d7 `' W$ u/ i! x/ R done ' H% _: N) D7 S, i" u
else, V7 v J ~& C- Y9 [
ARGV="$ARGV $1" ! J1 V8 G. c9 X* ^ fi 0 W2 Q: B! I' [8 c* g0 H) O4 I5 d/ G shift; : ]/ F% j; ]& P, r" L# H5 o7 p ;;- F$ C0 } ] Z2 @& U% u8 ~
esac6 k) M, P4 u) G. o' T3 F
done% B% }) H1 r. p& l0 x8 m
; ~ S( q6 H3 l5 d7 G
if [ x"$VA_FILE" != x"" ] ; then # w, Q! _0 F/ k; Q+ M# R* S$ ~
## /bin/echo " xxx ARGV $ARGV" ' x8 v1 c; e+ {: ` V/ @; j /bin/echo "choose nanosim $ARGV ;" > hva.init 8 T0 x3 Q; B, N echo vcs +ad=hva.init $VA_FILE -o simv4 S/ @, E$ G+ S1 w4 _, U1 f
vcs +ad=hva.init $VA_FILE -o simv ; M& w6 T( i4 C5 A$ E exe_status=$?3 q) s" K) J3 o3 U8 c# t# ]) m
if [ $exe_status != 100 ]; then2 a9 L1 k7 i2 ~; W
/bin/echo ""8 N& T- @5 P/ f$ e$ `# R3 K/ A; H5 _
/bin/echo "ERROR: Execution of vcs exited with code $exe_status"& ?# F5 j! B+ S; \; q6 c% m: H
/bin/echo ""$ H# T5 r7 B) }' G) d6 E
exit $exe_status& p; {, |% X1 Y9 i+ C. L
fi& b$ W9 I9 r/ ]( `
hva_files="-n simv.daidir/amsVD.ntl simv.daidir/amsWRAP.spi"4 T& a# f& w0 E, @/ ?4 a
ARGV="$ARGV $hva_files"/ x% D; g2 C4 F
fi 4 f3 Q: Y+ s: ~' L} 9 H; r5 [+ `: |* k4 _#------------------------------------------------------------------------- # V. ~: Z; R" b4 m5 A) T. P# b9 ?5 l
cleanup()2 k- p- M$ v) d4 D7 J( d B# n
{ $ t6 W7 @$ X9 ^# n; r' S) N: m" l N if [ -d "$rundir" ]; then * ~2 t' j+ x( N! I7 q3 k6 i # On AIX, a .nfsXXX file is created if libModel.o is removed . D9 }$ e0 D1 \6 {- ]# D, X1 l: M # so .epicrun is not removed because directory is not empty. `8 B# r1 f U7 w4 s
# Solution is to remove it again if the first rm failed/ x4 y3 f7 W/ F6 a8 k: k6 o
# (rm -rf $rundir || rm -rf $rundir) 1> /dev/null 2>&12 |* B3 y' k( |# K; K$ e
if [ "$EXTRA_CAPACITY" = "YES" ]; then ( K$ j+ m: C7 }. j' K$ o6 a j3 \ chmod u+x $rundir/rpcidfile3 L: K) o6 N( f% s) `
$rundir/rpcidfile . u1 S7 [' e( w$ P L0 u rm $rundir/rpcidfile / R3 |' ^. h, q# T* V$ v fi) q& W% ^' ]6 J f4 n
rm -rf $rundir* s. |( Q; d4 l" ~
& _ \( P0 ]; C- R
#Due to NFS problem, we have to copy files needed to ; J/ o2 Y3 v. c, u# @4 h( _' | #/tmp/<temporary directory>, then symlink's files $ o% u6 P' x) v- g& a; N/ _ #to the local temporary 'rundir'. This avoids the problem # d% F: N0 T/ F #to remove 'rundir'6 ?0 ]( x- d* C x2 y$ q8 O: ?! T
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then # ^& h- ^, t9 Y: x5 T if [ -d "$tdir" ]; then- O! a' N1 e! N
rm -rf $tdir # d( z+ r5 [& b1 f; G( U2 e fi 3 V) L8 `) d! C X: }0 E K fi # R# U9 v9 q# ?" M0 Z. | fi 0 Q- ^) f( k9 \7 ~3 N2 L$ I( x if [ ${exitstatus:-0} -eq $ld_err_code ]; then3 @- V. `2 M: ], z
[ "$has_model" = "YES" ] && rm -f $cwd/libModel$suffix) C( @0 `9 G3 b
[ "$has_custom" = "YES" ] && rm -f $cwd/libCustom$suffix . J2 ]- L- U+ T. v( q. e% O( q fi$ J& X. @2 |5 V7 R& j" p
[ -f "$EPIC_SCRIPT_MESSAGES_FILE" ] && rm -f $EPIC_SCRIPT_MESSAGES_FILE 1>&2: Q0 e9 k* @: Z7 O1 f: W) [( q
exit ${exitstatus:-0}* i! F8 B* k; }
} - b% E3 q2 n: b0 u/ D7 I- b$ ]$ W6 F; Q+ \& E1 Q0 P
Exit() I# A% h: v+ p{ % t2 \: n1 K1 ~# T6 Y% [ exitstatus=$12 I! G" c }; {: }* f
exit $exitstatus ( _- C! A$ I0 N% e/ h- @& U" O}' h c- e% j* N4 O9 K# ~, ^
5 S p+ p3 C- o& e8 |: s6 Q
# get_epicrc filename keyword3 x# p6 `* b/ N) k7 c- b
get_epicrc()' t/ u0 u' ~" f+ Z! b* m7 e
{& S& Y6 i" o$ G! \. x
[ -f $1 ] || exit 0 2 ^! F6 I' @( p0 y9 q key="/^$cmd2:/{print \$3}"3 |* L, F' V$ n
awk -F":" "$key" $12 g k. o( y$ v e
} ' g* E+ O0 ` W7 B E3 B7 y# M R7 |" ]4 x P3 i! U( h
# 5 M, R! g# R. ^/ c& O0 X# set datasize limit to hardlimit , d* k0 E. e8 w* p6 q& [& h# : y- Q9 A5 |4 M% A5 H; pset_data_limit()9 j$ _1 v; m1 R6 w1 M; u- P
{; B# M. p) `; k
dbglimit=0 3 Z8 `' H1 U8 e7 k1 j7 B hardlimit=`ulimit -Hd`+ V+ T# I4 a& K% n; c
softlimit=`ulimit -d`8 Z- u4 ?# c3 I+ A
desiredlimit=3500000. v" h G& w t, Q9 A
hardisunlimited=06 T* M8 n) x3 R) v9 S6 U2 ^
softisunlimited=0' |) k9 L% ~- u% r. I5 K
is64=0+ M( X: ^% ~0 m7 W
* t. ^ Q1 s" X# U& {, Y5 B3 T
case "$EPIC_ARCH" in # D) M; V, d- p0 l3 D' t *SUN*64)6 U, _% w7 }. i
is64=1; M5 C# ?7 t( ?3 P
;; : C& R$ C, I2 O8 o* g7 H; _ amd64) & S, Z% D* O7 E$ i2 y7 [; y O4 Q2 D is64=1 1 E0 V. D1 l9 Y4 j7 Q ;; , r' J! E" Y$ Y1 C; {9 `( D6 G x86sol64)! F' a! y$ H7 h) j) U2 R& \. V7 Y
is64=1% D- G# a8 Z" {' Z$ w0 f9 L' E* R& c
;; : g$ v# n1 c* [% r0 h aix64)' s# l0 N. \% u9 m8 M# m& o; R
is64=1 9 a: K3 x/ t0 W9 |4 ^3 T( [ ;;/ R7 S/ D% ?2 \2 C9 g& q h
suse64) : k4 A3 W+ M0 t; K7 l is64=1 * a/ E q P/ I* L. E# c2 s ;; 0 ]8 X5 E* c& @. P esac. T A: a- X3 I1 X7 |" y" i2 O
# H$ T; F* N# J/ d5 E
if [ $dbglimit -eq 1 ]; then9 t! k" a3 |9 A; l1 s
echo hard $hardlimit soft $softlimit * d. g( Q2 ?# b! i. E. P fi / O/ _( g/ @2 O/ ^4 V! r * s/ P; y$ D1 F if [ x$softlimit = "xunlimited" ]; then7 G$ U6 l$ e( R9 \9 f. W1 Z- o$ `
softisunlimited=1 6 J/ K- F6 X* n* @2 K fi& U5 U( N: {; E$ O8 b) g9 I
* B% x+ [' a; r3 ~4 n; v3 I if [ x$hardlimit = "xunlimited" ]; then " H" |* [- K4 y# w3 ~" e$ n hardisunlimited=1! g# {& Y, A7 a; t1 _/ ?/ Q% ?( }
fi - X/ v- P" W! y ; v/ n1 @4 b* U/ L+ T8 S # 64 bit machine should have bigger than 4G, g8 p, l2 H. A$ t
if [ $is64 -eq 1 ]; then 9 T: _4 {( k' h" v, [0 ` desiredlimit=5000000 e0 x/ [# c: x3 Q1 W6 m& `
fi 9 Q6 D* B, W! _7 f( l' W3 s) n& E7 X3 E; l' B* b
if [ $hardisunlimited -eq 0 ]; then* ?- ]. K# k7 \9 v+ X3 v
if [ $hardlimit -lt $desiredlimit ]; then * ^# ^! A9 }9 q8 g echo "WARNING: datasize hard limit $hardlimit K is too small.", Q# v2 w( z3 w7 m' S8 r
fi 3 c* a8 g8 a( ~0 \, @3 _# B, E fi4 Z/ Q% I, p, V
. L3 M6 p& v4 s1 n if [ $hardlimit != $softlimit ]; then , ?' @, Q1 D, N ulimit -Sd $hardlimit 4 e+ c9 D. v" `# echo "WARNING: datasize limit is set to `ulimit -Sd`" / t( X6 i% L# b5 o+ q2 I fi' Z+ K4 A7 [( U0 a
9 R, ~$ n' H& V, u4 d: H
if [ $dbglimit -eq 1 ]; then 7 @0 g8 {. W, ?0 L4 D echo datasize hard limit: `ulimit -Hd` 3 J8 j0 o* G: {; ^' r echo datasize soft limit: `ulimit -d` ! G3 u+ K( B0 C: l2 q/ k$ y7 t fi! K! E i. U( q. j# T* N9 ]
} ! P" P) s# b) f" a; { & c- l1 i) u' l/ k1 i! R. j#* U# j; t4 U7 c: a
# set stacksize limit to desired limit 6 L# q! C4 n9 L2 L# / J& q$ V T' Eset_stack_limit() 0 I, V R: b2 n9 n: m. w- s{9 u `+ J4 `7 y% f1 H5 x- s9 c, O
dbglimit=0$ c4 w" |% ~7 M" p$ x0 b
hardlimit=`ulimit -Hs`2 Z7 s& D: H5 w" T+ c
softlimit=`ulimit -s`. o7 C) T9 C+ o' u6 L" B
desiredlimit=600002 ^% T7 j" K( \3 f/ Z4 k7 }8 X8 v
hardisunlimited=0 . P0 z6 r9 y. c$ R% ]8 j8 y softisunlimited=0 ' s( Z% B$ x& q! v# T is64=0 4 f# W6 z4 `/ ^8 i( x0 r! [# K / E1 W4 S2 i! V3 p case "$EPIC_ARCH" in ! f, j0 r% v. [0 l5 i* Q *SUN*64)* Z. x/ `) t. M' [8 {' U! v2 j9 k s
is64=1 8 i) \/ P9 ]! ^* R+ R: e0 g: ] ;; + s" C% J6 Q+ t3 ?6 h3 G2 F amd64) 9 p4 N8 P G$ }9 o% U is64=1, \2 d8 F/ e. L9 R' d: ]
;; / J/ q1 X$ D! A x86sol64): F0 E0 ?1 l2 o
is64=1) @3 f3 L1 m) y0 ^( p9 \, M0 H
;;. b+ t" m# \- p" N1 O- i" F, D- i
aix64)1 b7 h/ `+ U% z! s$ ?* o
is64=1 $ b v! Q# m0 P! u$ ?: h3 T% ~4 b ;;- ?- v; D5 ^+ h
suse64)) c* {$ p6 Q ~: G8 F
is64=10 g. ^: Y$ g; @. ~& R2 |/ |
;; ; n' T5 k9 X2 \ esac: i! x+ x& y5 i& s' Y2 ]
& i5 W; t8 I, `( d9 o s
if [ "$EPIC_WRAPPER_DVLP" = "" ]; then5 E) R4 e' _/ Y
if [ $is64 -eq 1 ]; then % ]! C5 `. o2 i( n desiredlimit=2000004 x5 H0 v6 d5 X+ Z+ v5 W; E
fi- m/ K7 k ?1 Q. v0 o, a/ j! C
else ) f; {/ p% v4 j2 H& i case "$EPIC_ARCH" in + D5 T% z4 L! m *SUN*64)5 i7 n+ I( J9 A" ^
desiredlimit=200000) G' T O |0 l0 r
;; 2 n2 T) M9 X' p! j0 q+ o) Y esac/ |" c% y+ f( [/ O% c! A" C
fi ; j. {* l0 P9 ]8 y6 ^" W 7 S8 o5 x3 ]; `: p* v& O7 K if [ $dbglimit -eq 1 ]; then5 n4 t' O) T8 z7 I
echo hard $hardlimit soft $softlimit ( z! P2 `, X8 j( i' G9 l/ S7 K fi 3 q7 C6 O7 B6 g; S/ s% a0 y2 I3 v 8 `3 {4 I7 m# y, \- `( V #stacksize can not be unlimited, pick smaller number- J# L/ y& X I; z2 |
' p! ~2 j, k' e% ^- R4 `' y stacklimit=$desiredlimit5 h* ]- z( c7 A- {
' z p. [* Z& v2 M if [ x$hardlimit = "xunlimited" ]; then 1 `$ _$ X- \& ]8 x' U8 l6 Y hardisunlimited=1+ _- Y: c* _0 a0 i
fi 8 t$ T/ h8 f! {) ` _3 {9 O ) o" U7 T* Z% g. ^" ] \0 Q if [ x$softlimit = "xunlimited" ]; then , N/ p# }* U6 V7 U softisunlimited=1 ! W4 p- C- M$ r* G8 e# P fi- H5 }$ ^" z u; Y* F6 I9 h2 M) d
5 p* e* w% [" s# U
if [ $hardisunlimited -eq 0 ]; then 6 z/ A( p0 ], J e if [ $hardlimit -lt $desiredlimit ]; then8 F% ~& w7 |9 w0 J- H
echo "WARNING: stacksize hard limit $hardlimit K is too small." 3 e5 E( R2 {6 f9 T+ \4 a) b desiredlimit=$hardlimit+ |2 `0 X5 u# f: V7 e* }- i3 g
stacklimit=$desiredlimit u+ M) w/ H6 B" k# S fi % t# i, n8 H% i1 J1 @7 G. [9 H' {# Y fi$ d+ I8 {5 t! q( j7 P
2 c1 r6 c: c9 }, D2 S/ P
# desiredlimit is set to proper value (< hardlimit): S6 r# M5 ~. v2 ^" ~
5 e: z$ i; A4 n; w2 y* R if [ $softisunlimited -eq 0 ]; then) f. l) `6 J, g7 d% \ F4 |
if [ $softlimit -gt $desiredlimit ]; then - Z8 A2 D) S5 ~1 S# ~) P( w stacklimit=$softlimit 1 C2 j4 ~! ~: G- L6 F. e7 T' e/ H fi ' i" @" W' P. K0 Z fi E, |& h$ D* A5 K" ]9 F; D+ V# v( F N0 M( T, J4 z" }5 S
if [ $softlimit != $stacklimit ]; then 8 T$ ^- }% t' z7 n" B ulimit -Ss $stacklimit3 b4 t+ K: B* j
# echo "WARNING: stacksize limit is set to `ulimit -Ss`"5 M% @; ?5 ^9 X; a
fi: k! B8 N3 F7 `1 R2 M- D5 H
$ p; \+ [6 X/ L5 R+ V5 u6 d- R
if [ $dbglimit -eq 1 ]; then- P, E+ E3 H* `
echo stacksize hard limit: `ulimit -Hs` 0 \+ }$ ^# E6 ^2 `; u, \ W echo stackize soft limit: `ulimit -s` 7 f) t1 D7 |" U- n2 X6 E2 } fi + P8 W; O6 j' w! O}& M9 Z! n7 v7 C$ W8 C; h
. P% f, t6 R5 L' ~ @
open_epicscriptmessages()) s0 s" x5 b7 W+ |3 m5 O: s
{ 8 A; g7 N* Z5 U: T#generate temp ".epicscriptmessages" file based on pid# [: i+ H3 o0 V
EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$. U; |& t3 z) O
if [ -f $EPIC_SCRIPT_MESSAGES_FILE ] 2 z+ C8 r# o/ [; B- [$ ~then $ Y7 H* ]" h( a! l until [ ! -f $EPIC_SCRIPT_MESSAGES_FILE ]" Y4 e% Z8 ]# z7 o. y! ~
do8 q/ W) ?5 i' s& n3 u/ u5 X
EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$) s3 J9 k2 {7 ` {/ Y/ @" v
done ?' i( B, o, M7 [% I
fi ) ^7 G$ m3 x3 W) c; {6 c; G$ P$ P0 T) `+ g9 N: l0 {! o' ?5 m
export EPIC_SCRIPT_MESSAGES_FILE5 n5 k& n2 h: v( J2 t: t
} ! r& J) R8 P: n* S" y( @9 r+ |( t ; P' O! l) N1 {0 y* H5 x' U8 K3 d% [
cmdname=`basename $0`- t$ _3 {; Q+ ~ N K8 K$ ]! _
postgres="n" ! i' D! B# a2 [/ b1 M- yostore="n"$ k9 \4 f6 B$ t; J' E
gui="n"6 q! m: J' g" N- F5 k
databaseOn="n" . V& P) g2 t, F% J* B0 }: a) K' Of_next=03 q, I* t W5 |5 C1 m( H* n' H
f_option=""1 [) f5 i% ?5 q7 p
o_next=05 j* w. I9 O% x( y5 R
o_option="" " D+ l" c5 u! s1 o5 h! [. cworkDir="" $ b6 [! A% M& g) V4 N6 qworkDir_next=0 - F/ ~9 N) {( w3 m; I- i% H# HerrFile="powrmill.err" 1 k2 O- ]$ X5 A! \. W" A5 Ywin32flags=""$ t. W6 p; L, u# L# r ~
ln_default="ln -s"# t! c. X% w9 d; e1 d+ n$ h5 q
- T( |6 P( _! ^. W1 ^+ h- t" |har_hilo_file=""+ a, i2 T t1 U6 F2 k2 u1 d
have_har_flag=0 ) K( W* v T6 zhave_har_setup_flag=0 - q% M1 O6 z$ m5 fis_special_har_run=0. ]6 z; N5 V7 J2 R$ Q; v) s
har_ofile_prefix="" # T: j# S4 p& V * R; B9 p7 F2 p& T3 C0 fhave_va_flag=0& S/ K3 P- H+ ]" L
have_vaf_flag=0: F& t4 }; _6 y3 w) x1 ~
VAF_FILE="" w+ }+ b9 r- j7 _
VA_FILE="" $ P6 Q5 L' ~2 a) { d/ ZARGV="" ; D3 o5 Y9 c4 t, X: B- X; `! R 8 ]9 F& \" [4 JORIGINAL_COMMAND_LINE=- R# ~+ @& t( U3 T7 y! H
LOOP_CTRL_FILE=".ns_ba_env". k, ~5 h6 x3 T" u8 _. u
ALTER_HK_FILE=".alter_hkf"4 z1 p( q2 R/ E3 I# o" R5 i
ALTER_COUNT_FILE=".alter_count"6 d; e8 i9 N* I b" I; k
MONTE_IMG_FILE=".monte_img_f" e$ u( M' a# m: pMONTE_COUNT_FILE=".monte_count"7 n. o. J" M' X; j
MONTE_CFG_FILE=".monte_cfg" $ Q. I3 ~: F2 ]" h# m% K% CEPIC_SCRIPT_MESSAGES_FILE=".epicscriptmessages": _: Q: s' ^8 ^' _# Z0 b' J/ y
% M9 x) h- G( b" |* Z
open_epicscriptmessages $@ % d U, j( } O# ]- P* F* O, M5 Y" G' `
scan_for_hva_args $@ & `) p( d4 N; u1 c* h4 Q7 c6 M; Y$ o+ ?
scan_for_har_args(): ]& }3 [1 d! q; n
{2 L4 Y- ?+ D# b
while [ $# -gt 0 ]; do * E% G9 [3 z1 g/ ~9 {" B case "$1" in ) {/ k" t% n# M% f -har)7 ]' j) L6 c ]* @* ^8 m) ~$ C4 Y, x2 N
have_har_flag=1 8 m) e$ E. \) E# ?1 I9 ^; W* _ [ $# -gt 0 ] && shift . ^- M5 C$ S4 X* W if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then' `; W6 G, @1 K: `/ N
har_hilo_file=$1 4 j/ H2 m% ?, O shift* l/ s# D/ m2 H c9 o
fi % T* p& D5 R6 c if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then 7 x4 _- X$ C* k( d" j echo "Too many arguments to -har flag. Only one hilo file allowed."6 B0 i4 ^) I5 p( _( @: v+ }7 Y
exit 1( p+ U- t1 C5 O7 G( }/ i: [
fi ' g5 W" F0 F0 k" z) T0 I4 a break : o( p6 K9 w& h3 \7 n7 g ;; 3 t. G. @% v) k9 b, N3 W -har_setup) ; X% f! G& ^' P3 @6 g' t& C have_har_setup_flag=1 $ x/ w0 v$ M& N& P& d0 i2 y* b break3 S. Y9 s! \$ C6 E- P$ m L
;; 0 ?0 w" b9 E0 c *) - A; ~, o' s0 v shift 1 h8 \. ]/ ~* w8 }6 C7 O ;; 4 G' P3 z6 k+ y/ j/ y; N) q3 d* ~ esac) _% m/ d/ d6 S5 l
done! h4 f x# i3 i. s% D+ ~8 S3 R
}) F/ k/ G+ |: j7 ~& D
$ y r8 `3 R% V" p
scan_for_har_args $@* f8 n: d+ b1 Q
; Q/ B9 p' j( v5 @3 m9 V3 q# Ffor argv in $@ ' I6 _/ u9 f3 s1 W+ @( Udo 1 J" h- q7 D% v$ ?- }+ r ORIGINAL_COMMAND_LINE="$ORIGINAL_COMMAND_LINE $argv"! y3 c' R$ [% {, k h' |; F
if [ $argv = "-gadb" ]; then - ]8 q2 e. ]$ x9 l* g8 k9 Y$ S5 X databaseOn="y"8 e) c2 T6 R5 s# M1 B
workDir_next=1- a' ^, B6 O. L! S9 w7 v; Q' H
elif [ $workDir_next -eq 1 ]; then" c: X$ {+ R' ?9 o5 y
workDir=$argv 1 G" W4 v# S6 H9 x6 f3 T workDir_next=0. b7 m* ^3 J) i. b
elif [ $argv = "-ga" ]; then2 F% N$ ?$ b$ H% F8 V. g
gui="y" " e7 `8 n3 o- T elif [ $argv = "-f" ]; then 8 p$ v' G5 p" q+ v, k f_next=12 k2 |. {0 \2 Y: ]) h7 r2 @ u
elif [ $f_next -eq 1 ]; then+ `+ \, o" h! P
f_option=$argv 4 f6 K- ~( r* W- D% Q; ^ f_next=0! m! H+ R! R0 m7 p N
elif [ $argv = "-o" ]; then# n& h1 D0 i9 ]4 r) A( p2 ~
o_next=1- F' B- f( A) q! Q& ~- ^
elif [ $o_next -eq 1 ]; then " x: i, P; h7 `& i7 A: h o_option=$argv+ K6 w0 U, T# h, X7 H; k7 k1 B& Q
o_next=0 - w) G6 [1 ]4 d: q# V& { fi: T0 E. S9 G- G! s# S: o3 n4 p
done& U8 e# [# d3 P- Y# K1 ?8 [
echo "Command line options: $ORIGINAL_COMMAND_LINE" > $EPIC_SCRIPT_MESSAGES_FILE : T, A% M( ?- K
$ e* U; A4 ]$ i# f3 m7 u7 xif [ $databaseOn = "y" -o $gui = "y" ]; then & _4 Z2 I' j2 \, {& h2 _ if [ $cmdname = "pathmill" ]; then9 o; {% C5 O$ G- B
if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" -o "$EPIC_ARCH" = "SUN4_SUNOS_5_64" ]; then" Q a# y/ h- D" B/ I6 F3 m: o
ostore="y" 8 Q1 {5 @3 T$ c# l postgres="n" $ I& i1 F* T8 q* w% ^ else - l: E7 C Z) A echo "athmill GUI is supported on Solaris platforms only" 1>&2 , |4 J6 F6 f. `& V6 _0 Q exit - W1 {$ Z, H+ b" Y3 W% v fi' {& ]1 ?3 ]( C% C
else , }$ G! @. S- b& f) A7 g2 W" ?% V) B7 v postgres="y" ' }4 ~: H7 g0 f) d! S/ L ostore="n"6 b8 _: U/ `+ \9 w; R* h
fi * O, R; ~2 Z6 Y/ t' }& hfi ; H& y# v5 s _) |( M8 N, {% \9 p/ O! n
if [ $gui = "y" ]; then 8 T6 A4 }, w) J0 z if [ $cmdname = "powrmill" ]; then6 \# ~9 W, C2 q- J0 u
pwga $@ 3 D: V. m7 B# N4 M exit! Z. B" p, I! u6 j/ t. {
fi4 C! O# n/ i# m, l5 P/ y
+ T$ w1 n9 p E* a: X* [* {& r
if [ $cmdname = "pathmill" ]; then $ N% r( ]; m f* o$ Y" c9 J if [ $ostore = "y" ]; then % k. U8 O$ P& K1 ~# e- @) m ./pathfinder $@ 4 I4 I; x* k# t1 L- G( h exit6 t, ~% d$ F$ U8 u6 f
elif [ $postgres = "y" ]; then 5 L3 r+ n" R0 x$ f3 n- D& b0 l pmga $@7 b/ t! r+ W: S L
exit z% @: M( o! l2 R% s
fi 8 o4 o* b0 m% T1 g7 _1 J1 a7 L+ \ fi " I, ?$ r' B& |' u, Ffi' H R+ {- P9 s) ~& q( D. i
: {% u$ k$ P0 I- R( t& bif [ $databaseOn = "y" ]; then$ k7 I5 R) I% U* h1 V, x3 O
if [ $ostore = "y" ]; then / W% K w4 P6 K1 U if [ -z "$workDir" ]; then. o! E; \% p5 Y
echo "Error: Missing argument for -gadb option"1 S* C7 w' K9 {
Exit 1) k% X7 ]9 e8 d- y) V
fi 4 r: l5 F: e* T2 A1 m) q0 T fi# r, S0 ]7 m7 [* F4 l! F/ g! ^+ ?
if [ $postgres = "y" ]; then 3 J5 _/ U8 Y; i! Y. T; s: H0 ` if [ -z "$workDir" ]; then ' H; K q6 e& s+ h( ~4 Q# C echo "Error: Missing argument for -gadb option". j" q! ]1 J% Z! `$ M
Exit 1 / u o0 V: V# b8 r+ [ fi* L% m( Y& B7 ]* l
fi . m# j9 P8 b7 }: J+ ~6 Y1 J1 ~fi: x4 J2 q9 v( A8 h/ K4 P# u
8 t/ \! u* v4 u# j0 l1 T4 e% j: s- h1 }if [ $postgres = "y" ]; then 1 E& Q; k ~# c+ M# o# s- \2 j* d1 _
if [ -r $EPIC_BIN/scripts/gui-init ]; then 2 ^7 A4 u+ D" B . $EPIC_BIN/scripts/gui-init ! C& Y- B7 v8 f* B1 d" V elif [ -r $SES_ROOT/bin/scripts/gui-init ]; then$ j8 r6 q! v6 \1 Y2 j& u
. $SES_ROOT/bin/scripts/gui-init! b$ m5 y- b t4 |& K. K% ^
else( f1 c$ O' [0 n% ?/ D- ?
echo " ** Installation in \"$EPIC_HOME\" has been corrupted!" 1>&2. z2 p# z6 y8 w A# R) k" W0 w! N# X
echo " file bin/scripts/gui-init is missing." 1>&2 & Q6 H. ~/ w) m9 J1 Z fi% N& B6 z9 F; |* z
( Y C" v# x2 L workfile -tool $cmdname $@( u7 C# ~$ ^/ y$ @. m% a- R5 ]- q$ k
fi3 G- l! A4 i, n' E# M( L
$ P6 f m, P7 N# q: Bif [ ! -z "$o_option" ]; then ! ]6 a: b1 i) w5 R/ D4 n errFile=${o_option}.err ! B( y+ C& Q8 ^8 ]8 i: y! Q+ relif [ ! -z "$f_option" ]; then 9 N) L* @% S! {0 U5 B; _! L" T1 c: C if [ -d $f_option ]; then" ?/ J3 g1 a' l6 O, I3 f# k
errFile=${f_option}/powrmill.err ) T/ x5 M0 e2 w$ T+ Y' }! p B1 l5 S else errFile=${f_option}.err - k d9 N5 x( {0 G7 M( ~" F, h fi : C/ Q4 r7 O0 C& ^( Afi 1 B* |' }' U6 Y6 c5 Q Z1 W 2 W5 f1 r8 Z( x2 u H9 r 8 u: Q: J6 r5 R: Iif [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then ) V% a- ^- F+ B `: x rundir=.epicrun " {& B& J; [$ T8 {4 E3 Celse- W1 a% }1 S3 r; e. L" m
rundir=.epicrun$$5 d# x! a' l6 ~/ l
fi ! B6 a1 ?/ [3 d K3 c0 c8 S( H* F
libpath="$rundir${EPIC_DLIM}$EPIC_DIR"/ V5 B& a! V) V, W6 j
3 X- M3 ?1 ]; g% {: g E
cwd=`pwd -P`( m l! O& h; Q2 @
if [ $cmdname = "acehdl_w" ]; then 2 ~8 m% J% C) @: K& U cmd=`basename $0 .sun`- e# i5 u) p& F
cmd=`basename $cmd _w` $ H9 s. p' p1 y0 w+ s6 h2 jelse P/ ~+ P6 e& b3 M; y0 _ cmd=`basename $0 .sun` $ v, p* c8 s ~/ Q9 \fi* ~2 I7 w: F6 {# L% D
5 w2 ~6 X* g* @6 i) U) L! Pcommand="$EPIC_EXEC/$cmd$EPIC_EXEX"2 E7 z. ?& b+ |& r' E
[ ! -x "$command" ] && echo "$cmd: not installed!" 1>&2 && exit 1 / f8 d3 U* d e2 i3 V) _9 i/ L% |5 m# W8 Q/ K1 n. t
# buildmod extracts -u/-fm options and calls genepiclib ' q; S' ]. K( {* O6 T( d# It also set the remaining options to variable CMDLINE) v: ?3 o" \5 J
# look up in .epicrc for -fm & -FM parameters ' `) J- B6 I! m5 `! _- B4 b0 R " Z6 y9 \1 u6 K- K1 zfmlist1="`get_epicrc ./.epicrc user_adfm_obj_modules`" ! r. t0 x2 \) r1 T1 \0 U[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules`"1 i. \( j/ g7 K" H! s! s5 Q' u9 A
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules`") K, C7 U. R& m
6 I! i' F! d: A+ {& ~# z
FMlist1="`get_epicrc ./.epicrc user_adfm_obj_modules_force`", [. L/ Y: u* ~6 J7 e7 _
[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules_force`"6 @/ B. D4 J( f; ~( A
[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules_force`"$ F* Y' W) H* l1 g& U
( _+ E' @, h0 C( r# ^if [ $# -gt 0 -o "$FMlist1" != "" -o "$fmlist1" != "" ]; then ; }8 q9 e+ p* V # note that the buildmod script will set the CMDLINE variable' s+ r" k2 Z8 W Z; A/ J) ]
. $EPIC_BIN/scripts/buildmod. j- Z" ^* p0 R* G- g
1 L* D* @* M. d) L+ N+ G# k
#echo "This is the value of cmdline=$CMDLINE" % S9 N( \% }. v" F1 m3 R #exit 0 , F$ S, n7 E; o1 H9 w3 u0 ?2 M L+ U0 ~; U2 G0 G3 }) b1 m# s
# if a new timemill/powrmill/pathmill built, run the new one" a7 h% A* q6 m! Q Z2 d; L2 N- @. w
[ -x "$rundir/$cmd$EPIC_EXEX" ] && command="$rundir/$cmd$EPIC_EXEX" 0 _# I* S. O! H i6 O" k9 H1 g! ^fi' v5 H2 Y; ?+ x8 [5 l9 Q9 m
4 ?" }/ S' e2 n! K" I" F+ J
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" ]; then 1 l# {0 j; b" g" |! d! x0 E/ }9 a5 r if [ $have_har_flag -eq 1 ]; then( \3 V! e% m3 @
is_special_har_run=1 & g2 V5 w4 n/ t1 r7 @# ^' c2 ^6 n! _ if [ "$o_option" = "" ]; then + a5 O& {( j7 o, v+ f. o case $cmd in 5 k8 u! S3 M$ }3 [% a+ l3 R# G$ z timemill) % q& W, U$ W- Y( ^) z: g0 N5 V3 R har_ofile_prefix=timemill " y1 r7 l. N2 R2 J ;; N x5 X; R% P& W
powrmill)- a: x+ v7 v) C& q$ @
har_ofile_prefix=powrmill , d: R: V, z4 T. ]' A ;;- ^3 B0 v2 k- r3 X4 A: C7 Y9 a2 y
nanosim); M. a) L, ?: T, x& u8 Z" o
har_ofile_prefix=nanosim+ W' X' ^- M* i2 r
;; 6 q( r5 d F7 ]) ~' U- a/ Z/ l esac 8 ^$ S- P" U1 a5 S- H: `- w5 J( y else& X7 J! y* M! H& {7 F
har_ofile_prefix=$o_option$ Z x& y* ~6 \- L. l; C
fi& e9 w1 R$ |' O: r* y
fi 3 C( j3 R8 D1 \( Lfi" [: X1 U% q4 ~. X/ C
& k B r& n8 f1 D7 n# Call Double precision version of the product if -D - o- M4 `1 H. v$ g- n) ]$ T. d# or simulation time > 1,000,000 ns. 9 M/ _2 |& N7 Hif [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" -o "$cmd" = "railmill" -o "$cmd" = "pwarc" ]; then9 X ~. X: C5 Y' W; V3 j# n
~& L# [4 y" H5 P E # Now the binary always has the ACE feature 0 T+ O$ T! R& \5 g USE_ACE=YES% U2 X: H' t; R. @0 \9 p6 V
3 j/ [6 [+ a3 h4 W! c
HAVE_DP=NO 9 v! ^0 E2 q; I EXTRA_CAPACITY=NO $ u3 X+ q4 s3 k, e9 H7 n9 Y DB_REAL=${FORCE_DB_REAL:-"0"} % M' V4 n! h& }# _, ?; S5 @" |6 O 4 Y8 q" I2 e) m# I2 i$ L # Enhance for ACE ease of use( d1 p- o+ Z' ?7 e' r
# If no command line option or only a -T option, do: H) q1 C! l7 v* @
# 1. set -A option5 X) i( \ E l4 b# c& v1 }9 B
# 2. assume input file to be hspice4 R: k* e7 I- E W7 h6 W& C* ]0 Q
# 3. set -o to input file prefix0 ^# C4 }8 u. d0 l- h
# 4. set -z to input file prefix" d9 E; b5 V9 G) s$ B0 G
# 5. set -c to default config file / G3 \- y. h/ c) U! M6 V. o netlist=""7 D$ g: R% y4 j" z' i
minusT=NO # P- a$ x# p9 c! | ] useStdCmdOpt=0 4 v0 ]8 }/ t* D/ T& p! I. J prefix="" 4 h2 w7 q: y6 v( r circuitType="") `& m1 l. \/ M6 h' E4 A5 H
for opt in $CMDLINE " U# C3 S7 c' y2 y do % p0 o8 Q6 e. M case "$opt" in $ x' L/ ^) N3 m. Y B
-T) 6 U7 r( U d- `* F( r minusT=YES @, g8 D# o" k5 ~% b, e ;; * G! K* T5 S- c+ v l. Z -*), z U+ _ T, ^& C3 S" z- X+ m
# using standard powrmill command line ( H4 u1 K& F. w1 z# g8 |) \ useStdCmdOpt=1( @1 n% M+ g) k
break ) Q, s- ~( F2 P) i4 V7 p! ~ ;;2 P4 f5 m1 D% A
*) Z5 f, b" ]! A7 z) K$ h if [ "$minusT" = "YES" ]; then" @' Q- O: _! j, X9 g# N* I
circuitType=$opt , n2 \" J' A* c& T/ L minusT=NO # reset flag" F; a% @$ i* u, I& E s# m* i
else , Z2 B) ?% t+ x: p
if [ "$netlist" = "" ]; then 4 b( D3 g0 D. W8 q prefix=`basename $opt`3 c. R3 g X2 ?- a
prefix=`expr $prefix : '\([^.]*\)\..*' \| $prefix`2 c0 _6 B, u i* ~% n0 L1 G# S
fi5 N7 F; F# i3 \7 {% X5 T- Y& ?
netlist="$netlist $opt" 7 ?" D; r; \: {( Q- n/ q fi $ t9 O' J9 a; E; P! ?+ r ;; * q2 f& ]8 l# p; d% g1 j0 e; \ esac1 l, |/ z. I9 P0 Q2 u2 s
done- F0 s) i( ]6 o8 b3 B7 C1 j3 L
* E% M2 A0 s7 K8 O. B 0 p" u* I- k/ Q8 x/ R* ^% @ if [ $useStdCmdOpt -eq 1 ]; then2 v. z7 q! c4 ^# h1 @8 ^
# use standard powrmill/timemill command option ' h' f- U+ E4 q' f7 u2 ~9 y for opt in $CMDLINE) |( l/ ]2 @5 ]$ c
do + T6 A9 Q: n! @ J/ K case "$opt" in 6 H n: {* A. P) m8 Q5 [
-A) % U( L( U' ?4 s% n DB_REAL=14 J2 F5 q4 y. P$ O3 M9 F& y0 Y: L
;;1 I2 \9 Y: c0 c- \) _& _% S
esac) ]1 M5 @3 C# P% a2 }+ ]' v
done1 t3 M8 A& X6 U4 r
if [ "$netlist" != "" ]; then . @5 C: h0 t: J+ n. e/ n6 }+ a CMDLINE="-nspice $CMDLINE" 6 O/ H% ]7 b9 s fi $ \) y5 u- x2 P" I0 d: ~ else 7 G$ b6 u: f/ f+ U6 z if [ "$netlist" != "" ]; then6 o4 c3 J) Q% {: d) |( x/ H% G
EPIC_DEFAULT_CFG_DIR=${EPIC_DEFAULT_CFG_DIR:-"$EPIC_AUXX/etc/$cmd"}* f9 n/ _: i( j* B7 f+ L4 c
# construct new command option & x8 J) T; }5 B' c! a if [ -f $cmd.ini -a "$circuitType" = "" ]; then $ C. H, f2 s- M# c CMDLINE="-nspice $cmd.ini $netlist", V1 B, p& p! T2 q% u$ I( T) t
else# n2 ]& A: S: O1 i: `6 _
if [ "$circuitType" = "" ]; then % {8 w3 x" z1 W1 u1 Y$ o5 G circuitType="msana" 9 w+ w, ?/ E+ e: O fi . g3 b7 j' I( {: ?. D6 m- t CMDLINE="-nspice $netlist -c $EPIC_DEFAULT_CFG_DIR/$circuitType.cfg"; k9 y" b" |: \7 W
fi& |% t/ |9 U' {1 m$ V$ _+ {
CMDLINE="$CMDLINE -A -o $prefix" ; {3 v, B+ n! J3 t# x DB_REAL=1 $ }' `+ o) l+ o" e/ K7 r echo $cmd $CMDLINE6 p+ p' ~( z* z$ e3 a+ b, x
fi6 Q X7 r: I. l# n
fi) d! S) ?) H8 F3 f/ {
fi # cmd is timemill or powrmill or nanosim or railmill or pwarc" _! s6 z+ T& F' N0 o, s9 n/ g7 T6 q: p