Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 7992|回復: 1
打印 上一主題 下一主題

[問題求助] 版本ubuntu 11.10 軟體nanosim 無法執行錯誤?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-5-6 13:58:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10Chipcoin
各位大大好:
  G  M2 N7 `  M5 I7 D                      小弟執行nanosim時,卻無法跑出視窗來,有個錯誤可是我不清楚該如何解決?問題如下3 u5 C3 E6 g8 I# f
                      [: 113: 64: unexpected operator4 n1 |6 ~; _) q) J3 @
/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim: 1: Syntax error: Unterminated quoted string3 k( L2 M' i2 R+ l
有大大遇過這方面的問題或是指導我方向去解決, 謝謝. 3 T2 A! v) G  T8 V* A# t
我在猜可能是這個檔案內的文字需要修改 但不知道該如何修改?9 H  K% H* |( j
以下為/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim 的檔案內容:
( @% Q( g4 ]8 }; {# s& G    #!/bin/sh
; X3 ]# h, V. l4 T& O/ G) q#. T9 Q! R/ U0 o' [' F, K: Y
# Copyright (C) 2001 Synopsys INC
# C8 c* c0 {' ^( x# EPIC Dynamic Simulation Wrapper (DSW)
' z; O  n6 e( o5 N( J. r#
8 }2 _) `- F: yeval ${DBG_EPIC_WRAPPER:+"set -x"}
5 f# d( ?- `: ^, z' i' x% K# I4 Q2 l- s& x6 R! \8 d( |
if [ "$EPIC_WRAPPER_DVLP" = "" ]; then" S/ R( O5 E+ W2 T+ r
    TEMP_ARCH="$SES_ARCH"0 T$ b% i% Y+ A) @$ [* W* d: K
else
4 t- ~# P- D( {* m    TEMP_ARCH="$EPIC_ARCH"2 `. l! u0 s* N9 C4 {( }
fi, Q& I4 r' r5 R5 R. e+ a+ h7 n+ H% r8 F$ u

9 |. ^# C6 x/ @" h# @$ zscan_for_hva_args()2 I: C# n" F( S. t6 B* {% k9 d
{
' A6 B5 g& ^$ ^& S7 K  R9 x  /bin/rm -f hva.init 1>&24 i: t; X; r! b1 G
  while [ $# -gt 0 ]; do
9 T# r* \3 j  J1 L- i    case "$1" in0 J7 ^# M2 M$ N
      -vaf)
9 ?2 x  ]8 W8 _* \           have_vaf_flag=1
- o& [* f1 Z0 U0 h; S6 @           have_va_flag=0% q% B7 V9 b5 Q! M! O
           shift;* g5 t; S9 Y" y
           continue;- W# _- ^0 a+ G5 Z
        ;;
; O/ H7 S' p# Y- }& d0 Q9 Z      -va)
. z/ J% x: M; b# Y, f           have_va_flag=1
% G  T$ F1 v* m; _4 u$ X           have_vaf_flag=0
: }6 @. z/ t! R7 i           shift;) K7 U8 E2 f; [
           continue;# Q& C& u- O& ?  Y% D5 A6 \! ?3 d
        ;;0 j7 z0 F+ Y! x9 G
      -*)
" S  s& [7 U' `! ]           ARGV="$ARGV $1"
9 a2 a: r( p; X; z7 `           have_va_flag=0" Z" q5 j1 e, t$ |/ |
           have_vaf_flag=0
+ ?: u' g( C/ F8 m/ \2 N3 r           shift;& F' w( @+ D1 x" c& E  {8 b! d
           continue;
# X- D) V$ q1 j0 C/ |; ^6 l        ;;
5 D  w9 f- J2 ?& p. }      *). }5 Q& W+ H" n# ^
           if [ x"$have_va_flag" = x"1" ] ; then
# S% Y% l$ i/ n0 L$ i+ N6 s              VA_FILE="$VA_FILE $1"
5 {9 `9 U% U/ A5 ^3 c- v( c( d           elif [ x"$have_vaf_flag" = x"1" ] ; then
8 o7 l3 K2 ~( r4 I# j' p, B% G              X="`cat $1 | sed -e '/\;/d;`"
' L( c+ a4 `! D' [2 c3 ~              for token in ${X}; do: P% N2 D4 b+ o  @5 V+ X
                 VA_FILE="$VA_FILE $token"
8 T1 U. n% B5 b1 B+ w              done
, x3 {8 v. V& f5 a$ b' i; e# p           else5 K8 o2 |& v7 o( `& `4 F( e
              ARGV="$ARGV $1"
# L) B5 D$ R3 l7 Q: R           fi; h4 Q0 V, u$ c7 H. [
           shift;* u5 t: c( I& i7 Q* K% m: E% a/ w
        ;;' [% r* p) ~' s
    esac
0 o9 C5 J: S% S# ~' O9 z  done
. T: s( @) g( z6 X* Y0 |( c+ }) c, O0 d* z" L2 q/ H7 Q
  if [ x"$VA_FILE" != x"" ] ; then
0 {) k& y- l/ W: X6 w" ~##     /bin/echo " xxx ARGV $ARGV"" w2 b; t7 @8 |* G/ S
       /bin/echo "choose nanosim $ARGV ;" > hva.init
& B- H, @* }% {/ ^9 A1 n. t6 w       echo vcs +ad=hva.init $VA_FILE -o simv, ?0 n: L  T5 [4 o
       vcs +ad=hva.init $VA_FILE -o simv
' P. a7 {) L* o4 V* \8 f       exe_status=$?' a6 y  L+ S5 x. k! X
       if [ $exe_status != 100 ]; then
& J7 c4 j+ @9 j! G* I" n; C          /bin/echo ""
5 P3 ~! N, }) }6 K& E; i: y, @          /bin/echo "ERROR: Execution of vcs exited with code $exe_status"/ F8 t: R( [6 y% y8 g
          /bin/echo ""+ e# J5 R% Y  U9 L/ N0 k; ^* }
          exit $exe_status
9 q- d, l* O$ R( c) w( \( v3 s2 {. r2 T       fi
) h1 `) H" l2 I" V- L  p       hva_files="-n simv.daidir/amsVD.ntl simv.daidir/amsWRAP.spi") E; a5 T; q& a( j5 F1 `& S
       ARGV="$ARGV $hva_files"
3 i& \# W, o7 b9 r  fi
9 W8 C+ Q8 C4 }8 f' }}
( n7 ^* O* b% z; [#-------------------------------------------------------------------------% C8 W# ~# Y0 p6 Y" l
6 ^" b) Q, ]: ~2 q  o* m
cleanup()1 Z0 X4 O) f) \! m& D
{
5 G! S3 b) t# {5 B! ]+ P    if [ -d "$rundir" ]; then9 g( C' k) @1 ?8 ~4 j0 v
        # On AIX, a .nfsXXX file is created if libModel.o is removed
' T# N5 s6 @+ y4 S. Y6 r        # so .epicrun is not removed because directory is not empty.
6 V  O! B6 @: E( |: i; R        # Solution is to remove it again if the first rm failed% o1 W& o3 `5 \+ g4 _; g, s
        # (rm -rf $rundir || rm -rf $rundir) 1> /dev/null 2>&1
6 q' Y8 p5 Q( H( \% @; _7 l' n- P        if [ "$EXTRA_CAPACITY" = "YES" ]; then5 b& I; q, }" f; t- a$ ]$ a9 g
        chmod u+x $rundir/rpcidfile
3 E3 f% \7 |2 \5 C4 F/ Z        $rundir/rpcidfile
4 O2 B; W/ t; K# K        rm $rundir/rpcidfile
) l! n) U: G% U9 B2 B8 ^        fi
- ~+ r' {+ Z  H; w8 v' L        rm -rf $rundir
$ d5 _$ N7 ]! y1 F! K7 M0 |, J  V, u, \+ H3 v( T# y! ^7 t
        #Due to NFS problem, we have to copy files needed to% ?% j5 C1 I# ]; t- h$ V  |
        #/tmp/<temporary directory>, then symlink's files% ~- Q* n+ w' u' Z, k+ \. x+ P( d
        #to the local temporary 'rundir'. This avoids the problem7 `; A/ I4 |8 l& U2 ]
        #to remove 'rundir'
9 n9 k. G! j( H! A* q+ n        if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then
) e2 c# }( S; u5 t/ K          if [ -d "$tdir" ]; then5 H8 U$ \+ g; I4 ?% _- b3 Y% d4 X
            rm -rf $tdir
' _4 k5 [4 X5 Y: z9 O3 f' c          fi
2 D/ r& n' E% D        fi8 ^3 \, ~  J& l7 E1 [  _) X
    fi
2 ]+ e0 q3 a) J/ Y# p    if [ ${exitstatus:-0} -eq $ld_err_code ]; then# d7 B' ^+ Q/ |: N6 |) a. P+ J: q
        [ "$has_model" = "YES" ] && rm -f $cwd/libModel$suffix0 [3 S' x5 ^  A; P' D
        [ "$has_custom" = "YES" ] && rm -f $cwd/libCustom$suffix
9 J% @; ^. q1 x    fi
* L) Y; m* W2 _5 a6 I5 Y" Z( p    [ -f "$EPIC_SCRIPT_MESSAGES_FILE" ] && rm -f $EPIC_SCRIPT_MESSAGES_FILE 1>&2
9 a% C- J* k. b1 p5 ]  W; a! z    exit ${exitstatus:-0}$ h* i# L5 r$ d. R* a$ ~
}  u0 w' s& m4 A6 x$ f% V/ g

6 a! `3 L6 b/ T' G# _; Q. b# tExit()' Q% ~* U6 f5 H9 c( H6 @1 a$ p
{
; y- t5 B, j: F    exitstatus=$11 i+ W8 |/ Q3 z  w5 p& ]$ k" r
    exit $exitstatus* [" F/ d! ]* Z
}
/ l2 p4 y: @8 a+ M, o$ ^2 _: [
; X* h$ C0 K# r) @6 i  B# get_epicrc filename keyword
, Z1 C2 U/ R2 D/ p4 ~& H3 c2 I8 T7 Rget_epicrc(). v+ p% j0 Z* n5 Q
{
" E& b! a( T, i6 E" v' y* m    [ -f $1 ] || exit 04 c- h, }, x0 v1 }% g! O3 R
    key="/^$cmd2:/{print \$3}"
8 Y" b% |$ ]  A& ]+ e" n( r2 `    awk -F":" "$key" $1
; Q! z- ^7 X1 n. `1 p) e+ y}; w/ F- p  }! B! \' N
( ^  Q; u" r6 C' ]9 E* K% @
#
4 d+ j* q5 L( }& j0 B' Q# set datasize limit to hardlimit8 A" k4 Q7 l6 P
#
8 G1 |2 L+ o5 {1 e3 a( Uset_data_limit()
, N" {5 B( N0 }' j7 B{
1 S7 \/ j$ V+ r; s4 s) W    dbglimit=0
1 |: b0 @: ?# d7 Q9 j* l0 s    hardlimit=`ulimit -Hd`- N/ r' L5 m# ]8 e2 I
    softlimit=`ulimit -d`
% l/ Z1 D8 Q  |  v    desiredlimit=3500000; a. \. F# ^; B4 h
    hardisunlimited=0
# Q# K6 p& x3 H: r2 i    softisunlimited=0. J! F+ }1 D' x' V
    is64=0
$ B0 H  P8 ~" E4 K
8 H1 S! Y0 Y% R1 h    case "$EPIC_ARCH" in
5 Z# P# g; D. B    *SUN*64)8 M& t# \) h& t' J
        is64=1
. V( V& }) i# u. Z" A        ;;
9 d( ^) {( P4 t; `    amd64)" W. s6 _& M+ M) e; m
        is64=1
/ E; T! L0 A3 g/ ?0 i1 L9 p        ;;
. S+ U6 g# A. h2 ]; w3 W    x86sol64)
) B# {* ?8 j4 ^" X9 p        is64=1% \0 _% T( ?+ \  f- [
        ;;
" n& E+ ]& ~% o; _% }    aix64)4 x4 ]3 h% W, U/ Q+ i6 l  v6 i
        is64=1
" f" T+ p* j! M& d( v        ;;
$ J5 t  b8 B. L2 ]    suse64)/ Z3 d/ _, b, `" R
        is64=1+ Y1 ?. i& Z( X
        ;;
6 S) x2 r& a; F& R- u4 q% q0 o    esac! v! K  y, W& P1 y% a1 V% C& _

2 T1 C+ |: G; G    if [ $dbglimit -eq 1 ]; then
/ s8 J: l, p3 g+ |        echo hard $hardlimit soft $softlimit
% Z/ c8 m/ O( P" \! c5 K& C7 |. s    fi
4 u6 y6 U1 E9 u( g
! f( I& k5 |* V0 i    if [ x$softlimit = "xunlimited" ]; then
( _& n7 C3 ~4 ]# A* N* }! C$ S. L        softisunlimited=1
0 r) v, P9 u! E+ Z% N2 B    fi3 q- q. T2 Q3 v8 P

+ a' n; M" h4 f" s, J1 Z1 o  V  x    if [ x$hardlimit = "xunlimited" ]; then
! y0 O2 P% p' q0 F7 ~' J        hardisunlimited=1
& j) ~: X# L9 {! t& k# [    fi7 P! }; R  h3 _
% k+ @* ?) y4 w+ ^2 k
    # 64 bit machine should have bigger than 4G' e( |3 Q1 B- W6 t4 ]' j% h9 |% J
    if [ $is64 -eq 1 ]; then
/ [; W8 P* r$ ]& `0 l" v/ A/ A3 i        desiredlimit=5000000: T! Y& V4 v8 n4 j8 a
    fi
* ?7 F5 ~" i& o* d% t6 m3 z  x3 q: G7 Z& V+ E1 F
    if [ $hardisunlimited -eq 0 ]; then9 X  v0 {8 K. |0 w; E8 z! g
        if [ $hardlimit -lt $desiredlimit ]; then2 c, W# n$ D/ Y( Z
            echo "WARNING: datasize hard limit $hardlimit K is too small."9 |$ w2 ^. X. z8 H* [
        fi
. K  M) V  l) |( f% J; t    fi9 L( {  O$ h+ e/ a. g) O" T& `

; ?7 R$ y* [4 I7 @. K    if [ $hardlimit != $softlimit ]; then
2 K2 e0 c7 M3 a        ulimit -Sd $hardlimit
* X# C! K/ V/ Y& k#        echo "WARNING: datasize limit is set to `ulimit -Sd`"
$ n" e' B( x  t( L: B: h6 S    fi
, `( R/ E5 }4 e, w! z
# I/ y1 f+ o/ @8 I$ G/ N: y/ w5 ~    if [ $dbglimit -eq 1 ]; then
0 X' L! `' y/ ~: V        echo datasize hard limit: `ulimit -Hd`
3 n! @4 R0 H1 U  r7 i7 i* C7 n        echo datasize soft limit: `ulimit -d`
+ S4 V' L) d9 I  y; b' `    fi
# j) P# |. C' z8 b: O9 a- q}
1 X9 P) p0 Q, f  }! ]
3 I2 d) J! Z6 z6 u1 o#
* \4 {: \% n8 Y# set stacksize limit to desired limit
1 ^2 j% C4 Y7 D) U8 E; n#0 q. `7 H$ j* r& S" r
set_stack_limit()
: E! s( T, t2 C0 |{
- t- T3 i) o* I+ h7 B# W& |    dbglimit=0
6 B0 r1 \5 q* d. p  t. t    hardlimit=`ulimit -Hs`
/ U' S9 k; N; |/ ~$ ?% a" d! P( Z    softlimit=`ulimit -s`
& y) l% }5 [( h! q+ C6 h8 g    desiredlimit=60000( L2 L( b4 V& J/ n% m! b) }
    hardisunlimited=0- e' Q0 H' i& u7 k# k" o) Z  r/ `: \3 r
    softisunlimited=0
: C9 c& R0 t5 n' O* X" k! H1 H    is64=0
5 K" o- ~& f" T1 L  `5 T+ X# t7 h
. K8 d1 V. r- q    case "$EPIC_ARCH" in: w  E/ {' v- t  r5 `) |" X
    *SUN*64)2 m7 W) d: T+ F: F
        is64=1  d) X  c  _3 u
        ;;
- C. }' B/ w( W" I. B9 H% F6 Q    amd64). J8 o0 }5 u! o0 b: t
        is64=1
+ U" G7 t  E( l1 s* [        ;;
8 X4 y' ~8 c# n' X0 m5 I8 ~    x86sol64)
% u; |: f$ F- D( f        is64=1, }# l: [  t6 S
        ;;
5 f! @" E& ?" O# M* p! ^% ]    aix64)$ U- B+ I% n" k' ?$ O! q
        is64=1! j' p" {- m0 f1 Y4 b
        ;;
% ?) A. p3 f- b, M    suse64)
* x+ X: U6 \, ]% C' N        is64=1
% i" \& E- f' f  y        ;;
2 C8 {1 s# x0 C3 `8 n  U9 d( N    esac% E! Y9 `" I8 J' {+ P& q" |; x$ _

! e) H. m5 b5 R8 A/ Y/ ?4 O) m& Qif [ "$EPIC_WRAPPER_DVLP" = "" ]; then
+ \" C: o1 ]0 d5 [1 ^% t1 D) K    if [ $is64 -eq 1 ]; then1 H2 e% l& W2 d8 v
        desiredlimit=2000008 ]; M- d( A- G" X
    fi9 e+ J! d5 g8 |9 I
else
  x9 Q4 h4 |  g. ~4 X5 B+ J$ c    case "$EPIC_ARCH" in
$ w. L# j% U! Q    *SUN*64)
+ o' V. g- z8 E+ Q) r2 U: w' ~        desiredlimit=200000
0 c8 n3 s( x  ?- o- G+ V; n        ;;0 }5 |$ C+ T! `4 v' d- R
    esac" I! N* W4 }1 K
fi
% H8 Y4 B( W# b       
6 T! M9 [/ o' ^& I0 ^" G    if [ $dbglimit -eq 1 ]; then6 [; j/ ]2 a) v5 S; X# ~
        echo hard $hardlimit soft $softlimit) H- q- ]; h; s9 w% i9 Q6 R! f! ~
    fi
& a1 @2 f. C1 I7 B% u) |1 T9 j* `% w' z
8 V7 }& c. I/ x7 ?# \    #stacksize can not be unlimited, pick smaller number9 }. V1 U  T3 {2 S; r8 ?
  e* v; A( P8 _* n! n
    stacklimit=$desiredlimit
; T( {# @/ y3 P* I: _
0 P3 U* M& V5 y8 b  b    if [ x$hardlimit = "xunlimited" ]; then/ i- w6 ^! _8 y" J% T
        hardisunlimited=1+ t+ c- K2 }8 i* h) ]
    fi5 |* e& J( r0 s/ y

% I- t, @8 l& ^& E3 P# l    if [ x$softlimit = "xunlimited" ]; then
! B- Y0 I7 `3 ]" T" z        softisunlimited=14 i& H' G# u1 Y8 w
    fi
& }7 `/ }7 _5 h6 t
, R5 S1 U" R( g1 z    if [ $hardisunlimited -eq 0 ]; then% j' |7 c$ v) ?% y$ d6 l( G1 r
        if [ $hardlimit -lt $desiredlimit ]; then
8 }6 f! S0 A# w! r7 g: S6 n            echo "WARNING: stacksize hard limit $hardlimit K is too small."
" e+ h9 R' S2 t8 T/ F0 j# L& k            desiredlimit=$hardlimit1 y" c+ x8 `' _% W; ]
            stacklimit=$desiredlimit3 P# Z- c/ ]% H  p/ a
        fi6 c. v$ ^' g$ h1 k# L) x
    fi
; T. z7 I6 R! t/ q$ [- [. O. Q0 [4 _& D2 N! e' w3 y: g% b
    # desiredlimit is set to proper value (< hardlimit)0 D' Q5 D$ ?/ ^& Z/ r# u! G  |

+ \# ?0 `$ q7 N1 \2 V7 a    if [ $softisunlimited -eq 0 ]; then# x! n6 D3 V- B
        if [ $softlimit -gt $desiredlimit ]; then
6 Y& o- c$ R3 r* N+ A# x            stacklimit=$softlimit
' Z9 w$ a  e% [2 \; G) d# L        fi
, ]- J* F$ T& z8 u+ c, z) y& x; \    fi
0 q6 t+ E( C. O* L1 V# F
- L8 B. p% ^+ D6 V$ E    if [ $softlimit != $stacklimit ]; then
: x" I# l+ l) N( x1 ~! k2 x        ulimit -Ss $stacklimit0 w/ }6 `4 V& u5 F" e1 h) m) o
#        echo "WARNING: stacksize limit is set to `ulimit -Ss`"
3 n$ f" C$ L; \- b% f    fi1 ?( b7 W; c& f- J4 c
) D0 J0 ^: m6 |2 A5 h3 q5 Y
    if [ $dbglimit -eq 1 ]; then/ b" \7 E3 J' M1 ]0 o. ]) u
        echo stacksize hard limit: `ulimit -Hs`) p; n: y) k6 v# A
        echo stackize soft limit: `ulimit -s`6 u6 D; R- d6 T* N4 E( L
    fi4 {/ L! E- G. ?' M) z& j9 N% P
}
0 C7 M6 K. o) J1 d8 U' G
% B9 e, P- V* h- Yopen_epicscriptmessages(). ?) n2 V' L. @4 A
{
" A0 K6 n7 B+ M6 J0 n' z; B7 g#generate  temp ".epicscriptmessages" file based on pid
: D* ?: Z# V. D! w4 IEPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$7 r' D" Z0 ]" [" x2 @% B
if [ -f $EPIC_SCRIPT_MESSAGES_FILE ]- d! m6 e5 _" x2 ]1 V
then 3 C5 B! p1 z" H+ d4 C
  until [ ! -f $EPIC_SCRIPT_MESSAGES_FILE ]" T1 L# k1 O# Q+ E3 o
  do
" {4 }+ \) l: N& X    EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$' v. b5 G' S& o
  done( R* I# |7 X1 ^5 S: f
fi
7 j( z" N( r* ^6 t. J& v/ k( H) Y  w  B4 a/ o
export EPIC_SCRIPT_MESSAGES_FILE. u. B+ u3 `, h/ D' p: R' T
}: C7 J( e) i" }5 r
8 V, D& j  H( m7 \  H# j) O, O
3 ~9 K7 b! h& X7 G* ^' ^: x
cmdname=`basename $0`
, l+ P# q+ a6 W& C0 {postgres="n"% Y! j2 k3 Y3 Q  U' n* W& b
ostore="n"* n9 s; Z3 J" B# q# i2 e
gui="n"
, L+ b; `! P+ h  E* E$ ZdatabaseOn="n"
' _- \8 \# _0 k: h$ Q: ?' f3 ff_next=0
, \" C2 ~8 s! j1 Kf_option="") D& j8 p/ h6 p" t; V
o_next=0: S% R* u; O0 g5 c$ ~
o_option=""
) a" ~. Q) R7 z  p* M5 GworkDir=""3 V# U2 c& r1 w" J) Y
workDir_next=0$ G3 }) d6 l- P+ j
errFile="powrmill.err"; Z; m0 G: [7 M$ r
win32flags=""0 b7 K: N% b- |6 n0 m' y
ln_default="ln -s"0 C' V2 `  i, x( F( |/ S3 S- g: [' Z

$ d. W2 \7 M2 L% n$ I. _har_hilo_file=""
  Y; h  C1 `& ?6 l" }have_har_flag=0
  j/ U  `" }+ k+ A0 k0 Lhave_har_setup_flag=02 x  H' M$ T" X) M
is_special_har_run=00 |" i4 R% ^4 H
har_ofile_prefix=""1 e  ?: T1 \+ ]7 S9 \) Z, n

6 u& }' T2 g; X/ v3 qhave_va_flag=0
  y, j7 w4 J4 b2 W: l2 y/ A$ jhave_vaf_flag=0; X/ c1 T7 s' y" {) a
VAF_FILE=""
" p9 X1 h# G# GVA_FILE=""
$ }9 L# q# z% r7 cARGV=""  [  V- s9 R8 J7 U

0 W" V' n! M4 Y( X( UORIGINAL_COMMAND_LINE=9 e4 z" k  ]0 E  L
LOOP_CTRL_FILE=".ns_ba_env"9 s/ @7 L$ O( }1 f2 n* q# _' Q' i  r
ALTER_HK_FILE=".alter_hkf"
; A( M2 B. _& B9 E* Y$ yALTER_COUNT_FILE=".alter_count"9 n* c& \  e( O0 [% o2 y0 t
MONTE_IMG_FILE=".monte_img_f"
4 I+ o7 F  i  p' sMONTE_COUNT_FILE=".monte_count"$ @( w' ?1 j5 g( d4 \) q
MONTE_CFG_FILE=".monte_cfg"
9 i/ v' T' Q$ R) u3 G  O- a/ j4 DEPIC_SCRIPT_MESSAGES_FILE=".epicscriptmessages"
! H$ _/ e/ ~/ M' u
) X7 U: S* S+ q! Sopen_epicscriptmessages $@- n" c1 m9 P) `4 o6 V

5 P2 K" v2 T" k; g& Ascan_for_hva_args $@# k. A' h: {, Q1 X
; W! n: W$ S2 J2 @) ^3 l5 O) z
scan_for_har_args()6 |- w+ M" j) V9 w% I+ H
{( w. c/ W2 d9 _' g. H7 |0 Z5 ^! H. d
  while [ $# -gt 0 ]; do
$ w" N4 ]" Z) m( ]. E" Q( X    case "$1" in
0 ~8 i! C/ q6 c4 u' u# d+ D; Y      -har)1 N7 Q' u3 v, N2 u7 V/ q* O
           have_har_flag=1
! S' R; O3 h$ ?' J$ _           [ $# -gt 0 ] && shift( l9 o" S+ {. q5 @
           if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then
- }9 S5 U' k# b5 E' j             har_hilo_file=$1
# ?& G/ Q' E+ f- U             shift3 ^9 j; @& R# ~' \
           fi2 V6 {% \% O! \+ `2 k+ i8 a
           if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then; B1 _  {* K4 k
             echo "Too many arguments to -har flag. Only one hilo file allowed."/ o" |2 g- c- B' b) [3 t
             exit 14 L& y( D+ E7 `* u* d7 k$ z7 M
           fi) `% o4 ~/ r2 e- c+ q0 s4 X
           break4 G: ~9 Y* Z! m( U0 R$ o
        ;;- N4 q5 X  m; p! N8 {8 c
      -har_setup)
) R; Q! P; J2 R% B$ ?1 A, W5 X/ P3 Z           have_har_setup_flag=1  V1 F8 Z  w. w; P, x
           break2 W+ @$ X& G( Q: F! v( z
        ;;
. J; {# E7 H4 B( ^8 G. a5 d; T9 Z      *)4 l! N5 L) M( Q% x" B
        shift
, H4 p# S, @4 l; K        ;;6 g; I+ T8 |: P* j5 m+ a
    esac. }4 f! Z! l2 m4 w/ o/ I
  done* D* V+ w" o: m1 {4 j- x
}
$ t+ k* x, [- g4 U2 M
, w9 x4 E$ y( L) Jscan_for_har_args $@
" e) R: Q8 G$ ^* _) _) R% n
7 P' Y- |8 T- e5 h3 bfor argv in $@& S& _2 x, d% U3 b
do  z5 V. s9 c2 v# W2 w
   ORIGINAL_COMMAND_LINE="$ORIGINAL_COMMAND_LINE $argv"$ Q0 I. p$ I2 l# ]! r9 ]7 J7 t
    if [ $argv = "-gadb" ]; then
. x) `3 x$ o3 [2 `3 \. ?0 s        databaseOn="y"
% _/ [# j9 u8 H6 v5 x% `: s0 e- [        workDir_next=1
, Y6 P  I* t$ N# _: D, |    elif [ $workDir_next -eq 1 ]; then
. f' l4 Q  R: @' r( u, X; R* o        workDir=$argv2 f1 I; h# S5 C: g* Y; D
        workDir_next=0) f! ]5 w( A, A) [! K9 z8 B4 K
    elif [ $argv = "-ga" ]; then
  f+ q& X  ^' u& D1 d        gui="y": x. @( O" ?& {$ s
    elif [ $argv = "-f" ]; then2 p* Q2 m( q4 p* `" K( O( _1 _
        f_next=1
7 E! T7 `$ u# X0 p1 h2 [$ z- k    elif [ $f_next -eq 1 ]; then
8 v, c2 K! Q3 F1 v0 S; X1 K( p  H  [        f_option=$argv
& _1 Z3 F! E3 a0 n        f_next=0, @! O! d3 [  y# y
    elif [ $argv = "-o" ]; then
* v1 \) a( R: l) a8 w+ q        o_next=1) X$ I. M" J' i2 t' M, r
    elif [ $o_next -eq 1 ]; then
4 z% ~- H) ]( m* @" \( t9 ]3 G        o_option=$argv
1 g4 t7 E% \% ?1 S1 N        o_next=0
, {1 L* V5 S+ |# T% N% i7 W    fi
) R7 }2 F3 s, L( adone1 m  O+ Z) f$ Q
echo "Command line options: $ORIGINAL_COMMAND_LINE" >  $EPIC_SCRIPT_MESSAGES_FILE + W- Q. J. ^& }

" ]# j8 l, A! q" b; eif [ $databaseOn = "y" -o $gui = "y" ]; then
6 g3 S& ~" j: I0 v1 D/ V  if [ $cmdname = "pathmill" ]; then& H4 \8 U0 F  K4 O
    if [ "$EPIC_ARCH" = "SUN4_SUNOS_5"  -o "$EPIC_ARCH" = "SUN4_SUNOS_5_64" ]; then# }. p) ?4 k6 p) m
         ostore="y"
! ^' ~. r3 R1 b/ a0 `) I2 E% `3 a         postgres="n"# k$ u& ~1 j1 p) R! a
     else
) x; E  S0 p3 X! H% q  Q8 K3 \        echo "athmill GUI is supported on Solaris platforms only" 1>&2 0 f& [! L, w( K. u6 H# x
        exit
0 ?! R4 N' m. Q- L1 ]: P. x+ P7 v8 B     fi/ Q' z4 l# O) G, U2 E% W; \: i, Q' }
  else( Y  [. ]% B) j
    postgres="y"
1 c& y) O6 N7 R( v' [: Q         ostore="n"! o/ b' O' c" B: u
  fi- r0 n  L# a$ Q/ M& f
fi
2 B, W  K: P5 {! F
' H, y. |( x+ iif [ $gui = "y" ]; then& v0 d" L3 f- I% D. e& G" j
    if [ $cmdname = "powrmill" ]; then9 p* C! d( S! u9 D; z8 D7 C1 ?: K
        pwga $@
) @3 n( }* A3 z/ l. r1 V+ i        exit
% H$ p5 v7 k$ L' x    fi7 v: s" o% r1 S+ o6 [( }" ?/ _

- `$ x/ r8 ]% L/ l- V    if [ $cmdname = "pathmill" ]; then
( j' s6 f- E$ `5 O1 A3 ]- X" g        if [ $ostore = "y" ]; then; |* M( p: d4 A0 P$ m
           ./pathfinder $@" n  ~- z+ a. G$ r  W' f5 d
           exit! p5 d$ f8 }4 {" ]) |
        elif [ $postgres = "y" ]; then  S+ |: Y, k: |8 R! F# U1 R
           pmga $@
. T" @8 z1 P2 ^/ G, g9 w- b           exit8 q+ I1 |- X/ ?' V% ^$ \
        fi) T6 Y2 |% E: L8 {4 e, f
    fi5 @$ A0 R* u  U4 O: c" R- x  b# N
fi
1 F. r. `9 P9 R0 e1 d7 }& s* p7 w! B9 q# \
if [ $databaseOn = "y" ]; then3 v7 p- {! R. C" Z
   if [ $ostore = "y" ]; then
( ~* G1 B. M. v( U* u4 q  o      if [ -z "$workDir" ]; then
* t: w- l* Q& g1 z         echo "Error: Missing argument for -gadb option", W! Q& b% \. ]5 M  x' w
         Exit 12 Z4 x# B  s, C0 f) w5 D, O
      fi0 r# O+ \0 @) _
   fi* l# ]. q; i& h6 {- I
   if [ $postgres = "y" ]; then
; }' p" @: w6 W* r  G/ q      if [ -z "$workDir" ]; then
3 m" Q2 J& h8 X# Y4 g7 J! T         echo "Error: Missing argument for -gadb option"5 K* W$ {/ J' [- _( O
         Exit 10 ~4 X' D4 s9 c& }: T6 |& O5 r9 P" V
      fi8 N% u- t* \- i6 O. }
   fi
4 G" ?, n' p" d7 R7 |/ R& n' Jfi/ O' v: Z( [/ [- m
0 c! b' e8 t4 f' w2 c
if [ $postgres = "y" ]; then
' o) g, U' _7 d! v' N# C3 E: r( _9 L
- Z% Z' E1 J: f, Q6 x5 u    if [ -r $EPIC_BIN/scripts/gui-init ]; then/ A7 _, V. A* f, Y1 x' ~9 T
        . $EPIC_BIN/scripts/gui-init
3 O( Y( A0 S* J9 \+ Y3 z9 Z% u    elif [ -r $SES_ROOT/bin/scripts/gui-init ]; then3 E: S) K, {6 I5 u$ G# W
        . $SES_ROOT/bin/scripts/gui-init
( t- Y8 d/ H  D/ r$ W% s+ C( z    else8 H( ^! p# X! c- }
        echo " ** Installation in \"$EPIC_HOME\" has been corrupted!" 1>&22 E* u! p; h( T7 F; Q% V1 X" E% I) H; m
        echo " file bin/scripts/gui-init is missing." 1>&2' P) q$ N( e( b: C. Y8 I
    fi* W# [/ a9 a, p- e, s( q1 C& o0 c

( q8 H  u5 n, x! E5 I2 |    workfile -tool $cmdname $@1 e6 O4 x! f, Y
fi
, K) j" Q, a; Z+ o# O, z: k; d9 Q2 X1 D5 t. Q
if [ ! -z "$o_option" ]; then
0 x6 S) V, {9 e% ?    errFile=${o_option}.err4 S: z- z/ N6 |3 F. a; G; Q
elif [ ! -z "$f_option" ]; then: b5 `) x$ w4 i) a" K8 X9 b5 c- @  q
    if [ -d $f_option ]; then/ E4 z( Y' h$ G% o% Y" ?
        errFile=${f_option}/powrmill.err
0 _) T/ O4 r9 H' _( v3 B: P    else errFile=${f_option}.err# U$ e* u1 M( G( k6 G
    fi( d% W. c, j' {
fi
6 z- N& l) @  |) G5 T9 o7 B0 c7 |6 M% k/ G8 c5 i/ s4 v0 T

, t3 V5 I* P; ]# [2 y) J% p9 lif [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then
' ]! r$ c/ n/ A3 p  v& X  rundir=.epicrun
1 M! X. Y6 d5 Gelse
9 [: [' a  K/ P* O/ a1 w  rundir=.epicrun$$
, T8 X5 v0 W0 G. M6 e. Zfi  n5 Y+ l/ a: q/ o" z# I, Z. ^
, m' A. l8 o4 J9 e) U
libpath="$rundir${EPIC_DLIM}$EPIC_DIR"
" G( ]( M" r$ F, N( R- V
! c$ [/ g% f7 [4 b  l" l. w5 Wcwd=`pwd -P`4 O# H$ H7 w8 j' l, S
if [ $cmdname = "acehdl_w" ]; then7 Q8 c6 K" R% H0 n
  cmd=`basename $0 .sun`& t, t' ?0 Z& Y# C" h; [
  cmd=`basename $cmd _w`5 A! ]. s. r' T2 n
else
6 D6 K# r- o  l0 S/ y% ^  cmd=`basename $0 .sun`5 w' ~7 H* S3 v, f  l  {
fi5 p) r8 @3 F+ A) v& V. U

2 `- f: j6 i: Gcommand="$EPIC_EXEC/$cmd$EPIC_EXEX"( `2 G* S7 k) Z" Z3 {+ t
[ ! -x "$command" ] && echo "$cmd: not installed!" 1>&2 && exit 16 E9 v7 B& S, c; i) _) v7 o: \2 K

5 {: R; K& k* L& M1 O( T# buildmod extracts -u/-fm options and calls genepiclib
7 N) R) i- i" O  b1 s/ U& {# It also set the remaining options to variable CMDLINE& @3 l% f$ L# c1 A8 X: n. ^% O8 O: W
# look up in .epicrc for -fm & -FM parameters0 q$ P. j& x% F  [

  M- k. q7 c6 s. @' S5 bfmlist1="`get_epicrc ./.epicrc user_adfm_obj_modules`"6 z3 i: t; _7 B, p$ X- G
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules`"4 z4 A) X' t% ~3 E( h" A3 ?
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules`"" N. d  B/ Z2 e5 A2 a4 f

$ q5 v4 d" q! n: S6 IFMlist1="`get_epicrc ./.epicrc user_adfm_obj_modules_force`"
# X! j" r, o! s2 G+ W1 t[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules_force`"2 V6 W0 A% J+ n( ]) _; ~
[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules_force`"' F1 o, U5 \: E8 j. e4 r+ K5 T. Q* W7 u
+ I6 H- G( A2 T: x
if [ $# -gt 0 -o "$FMlist1" != "" -o "$fmlist1" != "" ]; then  S; d9 n$ l4 L) I: ]8 n
    # note that the buildmod script will set the CMDLINE variable
- ]7 l2 m- p" q! y    . $EPIC_BIN/scripts/buildmod
/ }) M5 q0 F% _) ~: }3 M6 G$ ^, ]) {* H
    #echo "This is the value of cmdline=$CMDLINE"
$ F8 I- A; v7 f- [4 u    #exit 0! [5 ]- {9 h) R6 v" ^" v
+ x7 k+ q- g& ?3 v4 h
    # if a new timemill/powrmill/pathmill built, run the new one& |6 A5 J2 M7 U6 W: i+ E2 f% ?
    [ -x "$rundir/$cmd$EPIC_EXEX" ] && command="$rundir/$cmd$EPIC_EXEX"' p# ]# l& H6 _' C! M" d# F% M
fi
: a. \( S6 e/ o6 g  r# J$ T( O  X2 \% p7 n* X" q
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" ]; then
) {6 Q  R' F7 u% K8 k4 u$ P  if [ $have_har_flag -eq 1 ]; then$ s3 Q( P# u0 W6 q# L
    is_special_har_run=1
1 A4 z6 j$ w) q. E. ?; n    if [ "$o_option" = "" ]; then" j$ a% z8 K' _6 |; J
      case $cmd in
8 s# @8 Y" t$ _5 f        timemill)
% G) R) t4 c% r          har_ofile_prefix=timemill
) e: x6 o2 A3 m! V" y          ;;
2 {8 X0 ]# |! ^8 A$ H        powrmill)
1 h8 Y7 @0 y2 B% s          har_ofile_prefix=powrmill
, r" Z" o; h7 V3 b$ Y' \  W# I          ;;
$ z0 z8 R, b* c1 a% e        nanosim)
9 \2 A% `& n: r          har_ofile_prefix=nanosim
: @9 g4 ?+ ]% B9 n+ J% m          ;;( u1 r0 W+ X5 k5 n& V
      esac
2 V' h, j* x5 V5 i! b. P" n  A    else
6 ?$ Y: l( c( c% p  f8 @      har_ofile_prefix=$o_option3 ?; `9 q. ?6 D4 T% ?4 \; {
    fi; N; g2 R/ ~- x  l; [, F" m
fi
7 [( z* v; I* C& J* @fi1 k' ]# `5 ]/ I1 i; ^" y8 n
* }; _' P" G, Y; v/ d1 R( m
# Call Double precision version of the product if -D
# S5 ~* Y0 Q4 D' c! g# or simulation time > 1,000,000 ns.
' P* u! g6 d4 G* Dif [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" -o "$cmd" = "railmill" -o "$cmd" = "pwarc" ]; then
4 r7 {' r, \4 j1 w+ Y3 n
, {+ g- [7 l# E7 J  S  # Now the binary always has the ACE feature
4 @1 q2 S$ D& Q5 w  USE_ACE=YES0 [: C3 L9 h& W& \

* p2 l! v! C7 S# K! y3 M! l! J2 r) q  HAVE_DP=NO
( X' }- }  X5 P! v% J+ g  EXTRA_CAPACITY=NO, k( |4 H2 L( p& L% D& A# q
  DB_REAL=${FORCE_DB_REAL:-"0"}
0 `( U# E; z" a9 e1 T4 O
% P3 o5 @0 _* _# t! [  # Enhance for ACE ease of use6 r: l8 D+ [* _" a; A" j
  # If no command line option or only a -T option, do:
6 D. j$ u  l! q2 x  \- n* B+ }/ i  #   1. set -A option7 h: ^$ E' B+ z3 w+ X- e; w
  #   2. assume input file to be hspice% V5 R& g# P& I
  #   3. set -o to input file prefix: e3 X- B. g9 ?. ]9 p9 `
  #   4. set -z to input file prefix" t( K6 o; w" W: z
  #   5. set -c to default config file, |! Z4 y0 f7 L7 H/ ]# B
  netlist=""
% D9 k6 K7 n9 y  minusT=NO6 ^0 ^7 s/ M+ @1 h8 K
  useStdCmdOpt=0) Z4 y7 s" M4 i/ t6 \7 G  O
  prefix=""  M3 n/ v# c& u4 ?  o  A
  circuitType=""& m2 h4 m$ L" v' a: S
  for opt in $CMDLINE" |% z: \8 M3 U" Y7 B; c' j
  do
! ?2 {2 y3 J7 _# I" A    case "$opt" in
" L# f1 a" X3 i2 S. K( E      -T)
# a8 N- _' y) K( v" m" v        minusT=YES8 O0 _; t. V, L* L+ Z$ z& T! C! R
        ;;% m3 h2 |+ U1 t" b  S* \
      -*)
3 q" F. i0 C" E/ q. x7 `        # using standard powrmill command line2 f$ p5 g) z# Z$ {3 L
        useStdCmdOpt=1  s8 L2 [7 a6 a6 Y  O
        break/ D& f4 x' v& m
        ;;
& U# X. j" P6 N4 V  `. ]      *)% O! }6 Q9 d1 g) V% J. {7 V
       if [ "$minusT" = "YES" ]; then
, W( X* V/ G1 W% L: ~         circuitType=$opt
) r$ _  f/ V" t6 e5 l* p         minusT=NO  # reset flag
* Z$ v/ ?. y" q. ^- V; w4 O: |8 J       else - M/ @4 F; g& w0 {4 e  M/ j
         if [ "$netlist" = "" ]; then! ~& b# r0 R7 y0 M! N
           prefix=`basename $opt`
/ W2 I9 ]8 |/ l. A3 i           prefix=`expr $prefix : '\([^.]*\)\..*' \| $prefix`, Z+ u3 C4 F, ^/ p; A* j7 J
         fi
* o/ M1 W, W% v% d% Y' }* n* ]# W         netlist="$netlist $opt"
% t5 O& @  o" i* T, I! r       fi
- f: K- a& z5 O/ ~! U+ Q       ;;& C1 S, y; ?# n& K3 S% D% u
    esac$ f" Q8 D# q! A# a
  done, X6 [6 c- z, ~$ n8 i

4 [, C% H, P  q, E% W& T
' q# ?8 Q# `% b: v0 v. _4 {* W6 P  if [ $useStdCmdOpt -eq 1 ]; then( C9 T, Q& F# m6 J- S7 e9 b
    # use standard powrmill/timemill command option
/ j  Y7 w) N" L9 m- D  `; U    for opt in $CMDLINE
$ t+ H( [2 k% n    do
" Q/ F* R9 k2 i8 i      case "$opt" in   W+ N6 j- O# f, ~9 I% B! @
        -A)9 R7 O% h' M6 A5 N$ \
            DB_REAL=1* _+ |* V3 ?; F' K% D
            ;;
3 v/ x0 [  ~' Q3 H2 J3 O      esac
7 B: q2 d$ X  d- F    done
: ]5 a+ v+ c5 z4 U4 O' k    if [ "$netlist" != "" ]; then
- C, _0 h3 e$ F4 W, ?1 S. i3 H( Q# [      CMDLINE="-nspice $CMDLINE"& l# v( v  {1 v& o: Y
    fi
+ d9 R+ w5 `  {! u8 n  else
. ?$ u, s- p0 k: q6 u    if [ "$netlist" != "" ]; then
8 P1 B$ p$ k* b5 u1 j" p, A      EPIC_DEFAULT_CFG_DIR=${EPIC_DEFAULT_CFG_DIR:-"$EPIC_AUXX/etc/$cmd"}) J+ Y) g$ N- \" Y1 Z' m( x
      # construct new command option3 K3 |" j+ M1 X2 s% [
      if [ -f $cmd.ini  -a  "$circuitType" = "" ]; then# a) b% S7 b/ Z7 A" v1 T
        CMDLINE="-nspice $cmd.ini $netlist"7 n$ b; |( F% f
      else
, }2 I* `1 [  x7 S8 P: ]        if [ "$circuitType" = "" ]; then
+ |0 y4 j' ?+ W) H+ m          circuitType="msana"; J' d& r( d; @5 R
        fi4 h+ [1 X# F- Y8 d( ~! I( c
        CMDLINE="-nspice $netlist -c $EPIC_DEFAULT_CFG_DIR/$circuitType.cfg") c/ _& G2 h" C1 T
      fi
" @5 v# ^7 o4 G      CMDLINE="$CMDLINE -A -o $prefix"
5 j* [" F6 h/ f: |7 Q7 {& l      DB_REAL=1, c# d$ H# \. Z; ^% o0 i
      echo $cmd $CMDLINE
6 u" e; M( r% h    fi/ W( t4 D6 `4 s( y; A
  fi
1 n# |  {- I, F0 _* {" _0 O( L! Qfi # cmd is timemill or powrmill or nanosim or railmill or pwarc, W. Y9 Z, r* V" D7 w- d

1 F7 L& N* N3 r: v[ "$HAVE_DP" = "YES" ] && [ -x "${command}_a" ] && command=$command"_a"9 H* n1 `, e- a. k' p9 Q* F; [/ ^/ ^
[ "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a" ] && command=$command"_a"
2 R  b) n  g4 k! q& R3 t+ x[ "$USE_ACE" = "YES" -a "$vlog_design" != "" -a -x "${command}_v" ] && command=$command"_v". ~9 N% v* G) f+ _( r# W' s

% u. h0 ?: ~& \# b  Sif [ "$__engine_wrapper_called__" != "Indeed" ]; then6 }  Z; X  O- a& T' H4 \' I
    __engine_wrapper_called__=Indeed
! S' ]4 s; l! t5 l1 A    if [ "$cmd" != "amps" ]; then( r/ T0 m2 r0 m6 T9 {
        export __engine_wrapper_called__
  s6 ^/ I, ]1 A. L    fi$ o2 T  a! M, z4 }. A  X* |

9 ?5 p5 O1 Z2 A1 G    trap "cleanup" 0
$ L( E- O! `$ S$ q    trap "" 2
- o$ g2 d1 Z# Q
( T. U" ?% ]* p8 Q$ y3 H    [ -d "$rundir" ] && rm -fr $rundir( z1 R% z$ B' d4 h
    [ -d "$rundir" ] || mkdir $rundir/ \+ N: [$ @; y! g

' j7 U) q4 l# ?  `& R& {    case "$EPIC_ARCH" in1 ~( [8 P& p/ i& E" X$ @2 X
    *SUN*64)   * i) K6 l# e5 \+ {$ g! U' k' v/ b& z- _
        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"1 _  c- G) p" C$ Q$ d# G
        export LD_LIBRARY_PATH  _4 O! g2 S1 Y# Z( ~
        suffix=.so- o/ W2 P8 N5 H+ v7 G' k6 P
        ld_err_code=127! p: t: G% q% q
        ;;
+ t5 I; f0 r( @. s7 _0 M5 j% d% _    *SUN*4)   
7 a0 E6 o0 F2 y5 M        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"
  r) u) a- i- i9 s0 X# D        export LD_LIBRARY_PATH
5 w5 y8 i* V7 T4 ^% i        suffix=.so.1.0; J" w1 b7 E# r
        ld_err_code=127
* g5 }- y, a. ^$ T( n5 p8 z8 t( V        ;;/ e% w* E3 Y1 {7 V6 _
    *SUN*5)   
/ |% j# ]9 P" x        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"
# a- v, s9 ?# Q9 N2 ]' k5 p        export LD_LIBRARY_PATH
& c9 `; p' z4 Q1 z' I# _        suffix=.so% y0 S: n& w" }; V" b* X+ U" @
        ld_err_code=127* L3 ^+ b$ J" ~9 x/ g4 _  R2 D) ^
        ;;
( H+ x' z: `, G) ~+ P    x86sol*)   
, e0 D2 h1 _. m8 s' |        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"
, c+ D1 _5 N2 v4 D: V        export LD_LIBRARY_PATH
. p% i$ D6 `5 F% W3 N        suffix=.so6 ?/ g, F( C% J( K
        ld_err_code=127
/ }0 U2 ^; b) X        ;;5 w" H9 T0 h' ?/ i
    *AIX* | aix64)   5 @7 ?: J# f8 v4 X+ A8 `- V& m
        # When genepiclib creates shared objects, it creates a import file and
, D2 v  w' ^4 Q% A: |8 N* S        # uses timemill as program. So at exec time,program timemill is needed ' h. G9 v' y9 \3 U! v' T
        # in LIBPATH2 J1 W4 A# t8 b+ @( }+ V" x6 a
        $ln_default $command $rundir/foomill
2 q3 ?: p- ]7 ~- H. p        LIBPATH="$libpathLIBPATH:/lib:/usr/lib". H% X: B( O* ]$ A) E
        export LIBPATH2 I0 g  c0 W% E. D% ]) n+ I
        suffix=.o/ F0 l0 U" ]- A$ e
        ld_err_code=8/ d: i7 u9 x# Y) h! C( Q1 r
        if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then
8 R/ w5 y7 k, B. m: C: ^% l9 K          tdir=`echo "/tmp/d"$$`
4 f/ q  D' [3 _: P) y          [ -d "$tdir" ] || mkdir $tdir
7 u% X/ [  V0 G' s          if [ -f $EPIC_DIR/libCustom.o ]; then# ?5 C  _. E% t: ^6 C, [) g( O
             cp $EPIC_DIR/libCustom.o $tdir/
5 p: O, @8 ], j& r             $ln_default $tdir/libCustom.o $rundir/( y& C! g, y& K) G& c! e
          fi
! }2 d6 `) \# M- X4 j3 [7 ~          if [ -f $EPIC_DIR/libModel.o ]; then% P" M4 U5 ~% U( k$ I
             cp $EPIC_DIR/libModel.o $tdir/
- a8 U8 [- k' e2 }             $ln_default $tdir/libModel.o $rundir/, b, j& l6 ], F. O, b
          fi( J/ X. s1 G8 Q
          if [ -f $EPIC_DIR/libFuncModel.o ]; then) p4 l1 X% L5 h+ ]
             cp $EPIC_DIR/libFuncModel.o $tdir/
' K0 T: y# G7 B  K( w# v( g             $ln_default $tdir/libFuncModel.o $rundir/
2 T+ Y& z0 w. \' r          fi
9 o/ j$ d' F+ s- g0 ?+ r: z) U1 I$ a          if [ -f $EPIC_DIR/libFuncModel.34.o ]; then
% n5 ?* y6 x3 o1 s+ j' o             cp $EPIC_DIR/libFuncModel.34.o $tdir/
3 T1 p6 w/ o% D" V% \5 ^             $ln_default $tdir/libFuncModel.34.o $rundir/
5 Z- i+ _7 B8 X# ?          fi
1 u9 G2 y1 L. {/ Y8 {' _; o        fi' @0 N: y4 q* N" L$ a
        #Set the IBM flag to enable more shared segids
  B/ U0 i9 C8 @9 P" Q: |        EXTSHM="ON"
+ j! K# n% ]7 s1 e# P5 t- c, y& V        export EXTSHM; b/ E& ^7 l3 }/ A; D+ ~
        ;;
7 r7 Y, s* _5 g$ `; a    *LINUX*)   
) o+ `0 U( j/ t7 R3 y% y# u        suffix=.so0 P% ?( Q( ]/ }; {( e( d5 Y
        ld_err_code=18 ?$ H! i6 \/ m0 L! d7 ^  R" J) j) K4 h
        ;;
* E; R) M; E9 V/ b6 P/ e    *amd64*)$ g; @, D1 S- o' ]5 O3 N
        suffix=.so
/ h. `3 k/ e+ S/ {8 j3 I& N        ld_err_code=1) C5 f# ]% K+ Q, _5 ^  p9 m$ y
        ;;
8 H/ P+ |4 u* G9 }$ V. n    *suse64*)
8 d8 v( w' M% p! x        suffix=.so" \. j. ~( m' I1 p; X* R  w
        ld_err_code=1
, ?3 U, S9 c4 H+ s! @& l2 J! Y        ;;1 D4 S/ G; L; f0 J) T- |/ q7 l/ W$ D
    *suse32*)    ) u& f) O3 Y9 z6 c* B( ]
        suffix=.so$ O9 E+ ~: l: O, g- @" {- G. O+ Y- T% q
        ld_err_code=1
0 W  S  }0 |6 M' b2 Q        ;;
( T, Z6 ^2 W# J! e; B9 ?" a( n: [    esac
: S/ W# ?7 t% E$ y+ e% D# e1 R  _4 @; t
    [ "$has_custom" = "YES" ] && ulib="$ulib $cwd/libCustom$suffix", J) v- Y+ V* u
    [ "$cmdname" != "timemill" ] && [ "$cmdname" != "powrmill" ] \/ R1 ?1 V0 {( ^
        && [ "$cmdname" != "nanosim" ] \
5 l4 m  t" D  c9 L- k        && [ "$has_model" = "YES" ]  && ulib="$ulib $cwd/libModel$suffix"
0 d9 U' c! N% ^" E    [ "$_VA_" = "YES" ] && ulib="$ulib $cwd/libva$suffix"3 ?8 q1 ]* i0 [9 `! @! v. _
% B  N- _3 p6 l$ d
#Look for command line option for libFuncModel.so: g0 M% Z  a5 _% n  w
#    user_library_next=0: W- ^2 {- Q. Q1 x
    has_fmlib=""7 B5 c8 |: |5 _. b: @" D
    for opt in $CMDLINE8 ?* b( p5 ]& }5 F4 o9 M
    do
: |8 W$ \# u+ `  M      case "$opt" in
: G7 \3 u! m. S  Z        -fm)
% g& p6 V7 n+ ~5 Z            CMDLINE="$CMDLINE $cwd/libModel$suffix"* y( A' m4 s1 ~9 u6 x
            ;;
: I; M( ~+ p4 F1 m) y# {6 U        -fm_user_lib)4 |  S, H; l* i! N# u" K. ^
            has_fmlib="YES"' a) G4 T( w& J! Y
#            user_library_next=1
" q) d9 E  j/ h, Y            ;;. }! v# ^; C4 e) Y
        -xc)
9 c7 \+ D; j9 }5 S# f! a" H; d            if [ "$EXTRA_CAPACITY" = "NO" ]; then
+ i) o$ V' [; v  w5 q+ N            EXTRA_CAPACITY=YES
6 ]9 i( P3 \: h2 [6 ]            fi
+ k8 v* P9 T7 t/ |" F9 y            ;;4 w& U  X1 _& P% {3 U2 ]; _
#        *)
4 ^# o* m0 d( k- X6 k#            if [ $user_library_next -eq 1 ]; then0 X' ?( s! j* Y, p% q0 ^
#                if [ -f "$opt" ]; then3 f7 R/ A& S& d5 v
#                    libfmodel=$opt* n& @; z" i8 V
#                else2 Z! Y7 b6 G% o' K, z
#                    echo "-fm_user_lib: Specified file not found"7 i% c1 z  l4 h) Y( |
#                    echo "-fm_user_lib: Specified file not found" >> .epicscriptmessages
- I. t' g/ ]. y1 Y: `2 G#                fi5 n' k/ Q( f/ K% {% |1 ^5 [- @' l1 s
#                user_library_next=07 k* ?- o1 ~$ D$ [: c
#            fi; n4 H3 t! }+ V( S9 W" v' {* q
#            ;;
' r: d/ V) p) h; |: ?7 f; O        esac
9 T+ Q$ p0 w, r    done! c: u. p1 a# u  {/ j! k

* g' F* b+ l' l: J% }) k    if [ $cmdname = "timemill" -o $cmdname = "powrmill" -o $cmdname = "nanosim" ]; then3 [0 ~. f0 u7 a6 n% T7 k! s1 t
        flib=""2 S% W4 E1 n6 L0 Q; p
        if [ "$has_fmlib" = "" ]; then
* K8 J: ]) P( D. p# j' A8 u; l# S% ^            flib="$flib `get_epicrc ./.epicrc user_libraries`", G. y, {+ p  J  }2 |' N
            flib="$flib `get_epicrc $HOME/.epicrc user_libraries`"2 b* }. ~9 |2 A, a
            flib="$flib `get_epicrc $EPIC_DIR/.epicrc user_libraries`"
7 k& b! c- q  Z. D        fi) }, S: H3 ]1 n7 N, I' X
    fi- t7 m$ l& N+ J+ e7 e6 s

, x5 v  w9 O0 d; m$ a' D   for i in $ulib0 E4 g4 h- B6 h! x5 T: I, W
   do2 }+ I+ D( O( w
       [ ! -f "$i" ] && continue, Y$ t- X% ~- X3 l& h
       dir=`dirname $i`; cd $dir; dir=`pwd`; cd $cwd# ?! o8 N) R9 |5 N5 ^4 K2 j6 S/ R4 d
       i="$dir/`basename $i`"3 |2 ^- i" m, V& ~2 s8 ?* O3 a
       case "$i" in. x! ^0 M" x) l, ]
       *libCustom$suffix*)    [ "$libcustom" = "" ] && libcustom=$i;;
: P+ z7 F1 R8 O; M. }- _       *libFuncModel$suffix*) [ "$libfmodel" = "" ] && libfmodel=$i;;
% O+ [- c) Z! E) A3 e) R       *libModel$suffix*)     [ "$libmodel"  = "" ] && libmodel=$i;;, Z) t: c( ~. s* T' i
       *libva$suffix)         [ "$libva"     = "" ] && libva=$i;;" o* B( Y; Q) q( \5 N9 `, J) T
       esac
* }% S$ s  ]* }2 H9 g7 q  B( Y5 k7 W       [ "$libcustom" != "" -a "$libfmodel" != "" -a "$libmodel" != "" ] \
5 U6 I7 T! c4 z! K3 f' g' A        && break+ f& O) e* B7 l
   done7 c8 W4 J+ I- u. _

" T, ~' D$ @  S4 N4 o" M, P4 P+ u- l   # symbolic link shared libraries to .epicrun$$
3 B5 f  y' y- |" _* `' g( o    cd $EPIC_DIR; epicdir=`pwd`; cd $cwd7 J; H4 N4 E0 {0 S& R; T
    if [ $cmdname != "timemill" -a $cmdname != "powrmill" -a $cmdname != "nanosim" ]; then
" V  F- V3 v2 g+ A: m; g$ f        if [ "$libfmodel" != "" ]; then
, {; V: S) x, y             [ "$libfmodel" != "$epicdir/libFuncModel$suffix" ] && \3 H% d7 C% F9 f1 d  h3 M! r: C
             echo "Using $libfmodel ..."  && \0 V0 o8 l& b7 `; X3 J- b1 I
             echo "Using $libfmodel ..." >>  $EPIC_SCRIPT_MESSAGES_FILE
4 i# F2 _9 ^' @% B             if [ -f $rundir/libFuncModel$suffix ]; then. }) S( F" I- Q( _: n5 A* Z
               rm $rundir/libFuncModel$suffix
6 A, J+ ], H4 `& E; `  }! C% u3 @             fi
1 T. i& D- J. L( o* Q+ `             $ln_default $libfmodel $rundir
2 x: m* d2 B# x        fi& ~; j6 H) ?( J0 @, W- l
        if [ "$libmodel" != "" ]; then
7 t* e" M0 i8 Z: M) k             [ "$libmodel" != "$epicdir/libModel$suffix" ] && \
3 I- o7 p# X8 \3 b/ [/ H             echo "Using $libmodel ..." && \
3 D  u5 k4 f( T# k6 Y             echo "Using $libmodel ..." >>  $EPIC_SCRIPT_MESSAGES_FILE
5 I' q# W+ ]# C4 G( h" O  k& W             if [ -f $rundir/libModel$suffix ]; then
, o( l0 E# z% p/ B* f' F1 }7 \' B               rm $rundir/libModel$suffix
$ N' O5 O, ]1 t) v7 k             fi
' |! O7 U% B- G+ I4 `' f8 L             $ln_default $libmodel $rundir
, Y3 P3 A0 o& S& o& P        fi' c6 W- {! `% H" j" e
   fi1 p, P6 X* \9 i; d
   if [ "$libcustom" != "" ]; then* H* l2 i6 F& W; Y; n8 F! D+ H# R' z( n
        [ "$libcustom" != "$epicdir/libCustom$suffix" ] && \
2 q9 V+ q2 @' v* `7 @* d        echo "Using $libcustom ..."4 U5 H6 T! @/ ]4 ~1 G. a7 w
        if [ -f $rundir/libCustom$suffix ]; then& _1 X3 f4 ?1 e* d0 E
          rm $rundir/libCustom$suffix+ M( B) @5 H1 L  k1 s
        fi
3 N. f+ k: h, R3 |4 a9 k- Q5 m7 Q4 c        $ln_default $libcustom $rundir # W0 T! C% _, n
   fi
8 D+ ]# l9 q) S: t3 V3 e4 ^9 j% N3 }" u
   if [ "$flib" != "" -a "$flib" != "   " ]; then  Z" N9 Y$ m5 Z/ G& h
        CMDLINE="$CMDLINE -fm_user_lib $flib"
' I7 `# C( [/ t. `  e   fi( g. o" _$ K- |: t" [5 h' X, A; N" g
0 f# h6 m# f2 E3 J
   if [ "$libva" != "" ]; then
- g2 Q2 W' L+ n2 W' I7 R        if [ -f $rundir/libva$suffix ]; then
$ q- R' r* g/ o          rm $rundir/libva$suffix2 n, m- b& t4 y  t4 F
        fi! {& w0 q0 S/ k
        $ln_default $libva $rundir
1 \. M0 u+ U2 u   fi
8 [- |  u/ }& o3 L* s: v" i1 l  s! L' t# w7 G0 e- Y/ M' {- N
6 F& X* E* _- w
    # VCORE design library3 h6 t$ k1 V2 Y; K" k% \
    if [ "$vlog_design" != "" ]; then
9 G: A) c/ d5 Q3 C: Q3 v0 M        $ln_default $cwd/$vlog_design $rundir/`basename $vlog_design`) G: _  Q9 j) K. X
    fi# c2 m. u7 ?8 G/ O1 r
3 p5 \" T$ o% W0 p$ b7 a
    if [ "$EPIC_EXTRA_CAPACITY" = "1" ]; then
: o. L0 f2 D: }  G' R        EXTRA_CAPACITY=YES
, f0 H. a% N& a8 X1 p    fi
% d, C. M& l/ W( H
3 L$ h$ Y2 [; w( ^' p0 o+ }    [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "0" -a -x "${command}_xc" ] && command=$command"_xc"; r  |: U: I$ O& d+ X! s8 @
    [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a_xc" ] && command=$command"_a_xc". c8 G- K7 Z3 ^$ b7 e
    #Create temp file if dual process is on
2 q! J. W' P/ F1 J    if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" ]; then
2 v3 I0 F- A* \# P) M; l" {9 `        if [ "$EXTRA_CAPACITY" = "YES" ]; then* @) j% W* Q+ p
            touch $rundir/rpcidfile8 p+ \7 I7 Z& `. K/ k
        fi
2 R% [4 q7 C  U$ f& {" K: R    fi* g" M- }" G4 ]6 B1 `5 @
fi
) W. x; g3 n6 s% J0 l6 L- V7 t7 o
. ]9 b# r0 g) |2 u% T/ F" J! @run_cmd()
& x; h% f6 ?' A- |/ I3 o3 K{
$ d. z1 ?: }  |/ [! E5 k  command=$1
7 o2 S/ \7 G  f  V/ i: d3 d& C  shift% J& |/ Z! x7 r  ~0 v5 g6 A# F
5 N5 d: t( u) {- ~6 F- D8 ^/ w) B) H
  if [ x"$VA_FILE" != x"" ] ; then
' Z5 p9 _' N) S. x: I- M! ?     cmdline=$ARGV
& S; G1 X; X6 O1 }1 ]; x" n  q4 ~' Y  else
4 @& E* v9 ]" `' Y     cmdline=$@" j2 X* J, \( g, u
  fi
3 ?: |, `$ @% @) k& V5 H% v+ `7 p: O7 r/ a3 O
  debug=${DEBUGGER:+"$DEBUGGER $command"};
* w/ q+ c1 R! ~  M3 W2 Y, d; N
8 [" Q1 H1 m) g: i4 B  # To disable Exec-shield-randomize in RHEL3 U3+ when running nanosim and nanosim_a$ J$ u' `0 y7 V( O6 d2 k
  # so save-restore may work.
5 z# q  S: E5 _5 f$ t3 K! F* \4 i  setarchStr=
, M# U5 [0 u% Y# t, _7 }  cmd2run=`basename $command`' |  F8 {8 z/ w! i5 A! y0 m3 a7 H& n- g- A
  if [ ${cmd2run} = 'nanosim' -o ${cmd2run} = 'nanosim_a' -o ${cmd2run} = 'powrmill' -o ${cmd2run} = 'timemill' ]; then
5 N  z% I% ^5 z4 ~8 y. K* L    if [ "$EPIC_ARCH" = "IBMPC_LINUX_LINUX" ]; then. f. u/ h9 r! c+ W
      setarchStr="setarch i386 -R "
" R3 s6 T$ s% V. f+ B5 _    fi
. t+ d+ T% s' r7 w! W5 v! A    if [ "$EPIC_ARCH" = "linux" ]; then% ]' D. k. p1 [: a7 A" A( v
      setarchStr="setarch i386 -R "# L& Y9 [- X) R7 t: I
    fi  \$ E; e% B! r! B: @6 w- H/ _
    if [ "$EPIC_ARCH" = "amd64" ]; then+ S0 ?7 C* L. k7 a9 e4 M
      setarchStr="setarch i686 -R "# X. B' k/ T& H+ J
    fi: S- i3 T7 {$ f& H
    if [ "$EPIC_ARCH" = "suse32" ]; then9 S+ Z) O* \: Z
      setarchStr="setarch_suse i386 -R "
$ J3 ^5 y6 Y) @& B    fi. p$ b+ k- q9 ?1 r' X' {
    if [ "$EPIC_ARCH" = "suse64" ]; then8 ?# S) b2 P( l; k6 w4 b
      setarchStr="setarch_suse i686 -R "  f& h7 D& C+ ^5 X+ ~
    fi
: `" x( `- U' j3 v$ i! k) b4 _" C  fi5 X  ?: H2 y: ~- ?! |1 A* F5 P

  r" N' b; k. _( G6 s  ret_stat=0
# Z! R; c# b# F8 y$ ^  if [ -x "$command" ]; then
# l$ w- ]5 Y; b( z- W8 {      if [ "$debug" ]; then
. k7 K% w4 A" x8 |: i5 A1 [        _debug_args_=$cmdline
. H0 }. u+ l1 t* G        . .epic-debug- ]7 F4 X8 V- V
      else
7 ]( y/ x/ F# ], t& b% D        DEBUGGER=; export DEBUGGER
; S8 V8 U3 `9 a9 b% w        $setarchStr $command $cmdline& P% t" @  i/ U% o! B( c' t
      fi$ t: S9 w. v( v, H
      ret_stat=$?, L: m) Z( }' q( r/ y4 f: T
  else9 i2 n, I) g& a1 G7 G8 h
    echo "Corrupt installation, executable \"$1\" not found!"
! X& A) Y3 k# G  z4 P' L    ret_stat=1& U* c' l1 |; {) W
  fi  g3 _6 ?! W+ Q" Q9 E$ ]
}
8 O7 m9 q6 P: F
  [8 ]5 n8 k; p. n  I# keep runing cmd if ctrl file exist
- j1 c5 E; j7 G3 x/ Q4 a
5 ^7 k' Y' D7 R3 w8 p0 Z; M6 Yrun_loop()$ ^8 n! j, P  C& S6 L
{  z1 ^. ^: d! a8 G5 x- F- B
  command=$13 i+ r& X3 l9 o" D$ f4 D
  shift( g2 L$ d7 q0 c# e: M8 W
$ M% r" B8 q8 B$ I8 R, Q
  if [ x"$VA_FILE" != x"" ] ; then
8 X( o$ o' M# B- C" @+ g3 b     cmdline=$ARGV
- y4 o/ l; ?+ W# U4 |1 W9 P  else
! w# B& _1 `, d8 J1 n2 a4 V     cmdline=$@! y& s' f' o( G3 \5 o( n/ S- n
  fi6 l8 D1 Y( ]; K+ H' j

/ |" S1 g, A: e  t3 X  while [ $ret_stat -eq 0 -a -r $LOOP_CTRL_FILE$$ ]; do
! C1 x5 O. z( k0 X) \+ }, ]8 U    . $LOOP_CTRL_FILE$$# Y8 w, ?" r6 o* U
    run_cmd $command $cmdline -banner 22 x/ K+ i6 S$ a% Y$ w
  done;$ h& D. i3 l: a* R. `/ H- [/ ?- d
$ Q# `' V+ W& r
  if [ $ret_stat -ne 0 -a -r $LOOP_CTRL_FILE$$ ]; then$ U( \) _$ `5 c1 a0 J
    rm -f $LOOP_CTRL_FILE$$% ~6 p" H# M  v. m7 ^
  fi6 b6 m: D4 R8 I: M
}
, W' w; J+ i! x  L! z- A) a0 s# L4 D1 {) R% S- J- ?( p
har_check_ret_stat(); ]. b* R$ r% ?3 j1 p2 x
{. U4 B) C( m+ y% o% `8 e
  if [ $ret_stat -ne 0 ]; then
* u3 Y% G. J* z5 F1 X) m* u* s    echo "Simulator returned with non-zero exit status. Stopping.") P% t, M+ k/ F# |! a2 r
    exit 1
- ^$ v3 D' n. \) b7 D: b4 i0 A5 y" M( c  fi
  r  L* ?" t. S& V6 z}
4 B3 G0 ]$ {" y0 `# L* I. `& Z/ X
9 K/ j! O, q2 M$ X  e' d" p#
6 M$ \% c+ U  Z9 i$ I3 \# set stacksize and datasize limit- w9 U7 j  U+ }/ |8 x' A
#
: b$ y3 H* L4 F# a
  ~  S) H, ]1 b% A3 [+ I8 C( S$ pset_data_limit+ H; }/ v/ A4 X6 G( s1 R
set_stack_limit
7 t% a+ Z* T$ V' i  b9 ^4 e# [' g+ p0 m; q* W, _& y: E1 ~( v; G
#rm -f $LOOP_CTRL_FILE
- b9 n/ c4 R& H+ E, |- p3 B# a
run_main(). R6 M/ E* i9 J
{6 p4 N* i( b6 w! u: R
if [ $is_special_har_run -eq 1 ]; then' [5 Y. r  |& X- M: k- o3 e8 Q4 `! d2 P
  if [ "$har_ofile_prefix" = "" ]; then
1 z/ ^. E4 J: c2 L/ y& r0 }3 T5 Y    echo "Wrapper bug. Notify Synopsys technical support."
# Q/ m% j8 }! C    exit 1
. R8 K6 Z4 ~+ @* T* ^9 x1 M  fi
# U' H% E- B+ G" X  if [ "$har_hilo_file" = "" ]; then4 y) X1 O/ d8 Z
    # no user specified hi lo file - do both runs! `3 L1 R8 G$ b) h7 u. h+ s" q! c3 Z
    run_cmd $command $CMDLINE -har_one -har_setup
, }) J# B- u6 e, v: \( ?! i    if [ $ret_stat -ne 126 ]; then/ B: c$ ~. h) D" T
      har_check_ret_stat
+ c  X( X! G5 {) \% f% ~2 z$ E( `9 O      if [ -r $LOOP_CTRL_FILE$$ ]; then
8 [2 f7 L# w1 U8 k1 l3 u        run_loop $command $CMDLINE -har_one -har_sim ${har_ofile_prefix}.hl0 X  K5 X2 X  a4 T. m7 a
        rm -f ${har_ofile_prefix}.hl" e' ~- L( x' Q0 D/ N1 [5 m( i
      else4 A" t* y, A9 p3 R. F' y( l
        run_cmd $command $CMDLINE -har_one -har_rmhilo -har_sim ${har_ofile_prefix}.hl) B$ ?4 W* O: h+ {8 b7 Y
      fi, Y! s' Y! x5 L* J; ?
    else
; I: Z% P! O! r) ]; G      ret_stat=0
: [6 [* E! h9 O: B    fi6 b! K, l9 S/ w/ L' c
  else
& V0 T- d' F0 q    # user gave a hi lo file name" H) ?: W# H- x5 l! f
    if [ -f $har_hilo_file -a -s $har_hilo_file ]; then
+ M2 {5 G4 G, _      # file exists - use it - only do sim run. g$ U) s& @( c5 \8 q
      run_cmd $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}
. U2 K3 a" T, O: K# s/ h- ~      run_loop $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}
, C. u' L) P3 ^2 s: `' _$ _    else; T- p  m9 h% r' T
      # no such file - generate it - do both runs9 E2 o6 X, Z( v. g
      run_cmd $command $CMDLINE -har_one -har_fnf -har_setup
9 l  F+ p4 ~6 f" P7 l      if [ $ret_stat -ne 126 ]; then0 }" ]# L5 A& r- i
        har_check_ret_stat7 J3 N1 w  ~; R6 T8 T0 J
        if [ ! -f ${har_ofile_prefix}.hl ]; then
/ O2 H0 E7 f. z7 L, p1 i5 i% z, A          echo "No hi lo file generated after setup phase. "8 D9 t5 \$ W/ a: Q
          echo "Contact Synopsys technical support."* |+ `4 V5 d4 ], m
          exit 1
5 i0 h# b3 e* s        else0 f( \! q2 h! x: S* S/ ?
          if [ ${har_ofile_prefix}.hl != $har_hilo_file ]; then$ r) O5 j- l. F
            mv ${har_ofile_prefix}.hl $har_hilo_file
# J' U$ u/ W+ C' s' w5 O. {. N          fi
" F: Z6 w* Q1 x2 O( l        fi
1 L7 Q, \% s  l1 C) H2 R! S        if [ -r $LOOP_CTRL_FILE$$ ]; then4 h3 m7 e+ ?6 L5 a" h$ q( \
          run_loop $command $CMDLINE -har_one -har_sim $har_hilo_file, p* s' S+ L% e# }/ E8 u
        else; I+ l  E3 g6 K( l7 u5 u
          run_cmd $command $CMDLINE -har_one -har_sim $har_hilo_file
2 U7 v+ B; M: s5 l8 Y% e( e6 e        fi
; K. W3 a# U9 E, l0 `! h$ ]/ L      else
0 D! v- I! ^7 C8 _& k9 G        ret_stat=0
4 T( h8 k4 ?( e/ B8 V4 G' [      fi+ S# e+ T  K  D* V$ w5 t  M, j
    fi
7 s7 J0 j: L. t* D) W4 u  fi
: C4 ?! W, H( f5 }: x- Q: q2 relse  ; b' a* l) ]3 \3 A' t: F
# don't loop if -har_setup
& |; s: ~3 I6 A1 Z8 j! ^  if [ $have_har_setup_flag -eq 1 ]; then% T1 Z1 K% R0 R" u
    run_cmd $command $CMDLINE
5 w7 Z3 u3 ?" w4 o! o1 b) k- s0 o    if [ -r $LOOP_CTRL_FILE$$ ]; then
- x9 ]$ P! r" b      rm -f $LOOP_CTRL_FILE$$- c. \. z" n& g( |( M
    fi0 [: U5 I( m3 x  v* q
  else6 G( V* W" m0 V, W. c4 d8 R
    run_cmd $command $CMDLINE6 L- s; l$ b- V, ]2 p0 `
    run_loop $command $CMDLINE+ G% k( d/ K9 v4 q( s  [2 h. g- M1 W
  fi
8 Y  t, _4 w# h1 h9 i% v( A0 @fi
- X* L+ O) o' v4 S3 G9 R! @1 `% z+ }
7 I9 h3 S, R/ u+ ~/ ?0 wif [ $ret_stat -eq 0 -a $cmdname = "powrmill" -a $postgres = "y" -a ! -z "$workDir" ]; then
  }2 r3 Q: ~5 o( s/ b2 M% R  a4 a  pwCreateErrDB -w $workDir -e $errFile
$ Y& P7 p- |& r  ret_stat=$?
& A0 H; U+ m5 K" K' G. Ofi+ n5 T' g* ^# |4 \) c2 z
}
3 T7 S3 P8 \, d; s  O( M
7 ]$ S' c: Q# ~# E; U( f; Y1 Rcleanup_alter()
4 j& [( R( O8 {" C9 c4 Q2 N{
0 V& T* m. a' s6 o   /bin/rm -f $ALTER_COUNT_FILE 1>&2& k$ Q& L7 H2 s1 X  M
   /bin/rm -f $ALTER_HK_FILE 1>&22 G: s$ U0 P! P8 F- X
}7 {$ w+ J3 B% {9 s, B, t8 C

) S; R" j  H9 I4 q- z% E5 b#generate alter temp files based on pid0 k, }4 |' y4 u& ~3 n( N0 {
ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$) z5 l# y% i; g
if [ -f $ALTER_COUNT_FILE ]8 j2 ], y' ]% _2 x$ w" j
then % i0 K" J* W/ U
  until [ ! -f $ALTER_COUNT_FILE ]1 x8 c5 y% f& k: {$ r( Q
  do  q9 E7 D7 f: e) R& k' \* i: a
    ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$  C8 P0 O6 S8 F: b7 t9 P
  done
; E0 b, F# i6 v6 I, {6 v: Ffi" x; }( o9 z* U! ]5 R; b
export ALTER_COUNT_FILE
  o" ^7 \' L/ R! P4 }+ g# K" c3 h" b1 m
ALTER_HK_FILE="$ALTER_HK_FILE"$$
- Z) z. a% M( o: C& H2 U. oif [ -f $ALTER_HK_FILE ]
7 _( P8 _4 ~0 K# ]0 ]then
# z3 c- ^' l" e" [8 `  until [ ! -f $ALTER_HK_FILE ]
  N$ ]3 b/ Z3 L) u+ r6 E  do
: q' z2 h, f' E2 g    ALTER_HK_FILE="$ALTER_HK_FILE"$$
8 J9 u' r# `/ K" k, F  done* F2 T! u  ?6 q
fi- N  O# E* S8 u, M+ y) G( q
export ALTER_HK_FILE
6 P* S9 {0 x9 v! o- Z/ W6 R
, L/ s$ o6 H+ M9 a1 X# P; W#generate monte carlo related temp files based on pid, |2 q8 x, Y) d- p6 W+ z
cleanup_monte()
9 n2 a9 N% ]& R; m% @9 F: Z, `: Y{
9 l0 d9 C' o1 ]5 b0 \   /bin/rm -f $MONTE_IMG_FILE 1>&2
5 `: T5 a' z/ x+ b+ N4 I2 y   /bin/rm -f $MONTE_IMG_FILE.gz 1>&2/ c) T" i2 ?8 o: ~
   /bin/rm -f $MONTE_COUNT_FILE 1>&2
$ s- v5 V. M; Z   /bin/rm -f $MONTE_CFG_FILE 1>&23 K6 J# \0 t/ l) A
}% w4 w+ [  X* A, N# V* d

2 |% K! h4 o" n" MMONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$
: b5 K8 H+ ?5 I8 e1 [if [ -f $MONTE_COUNT_FILE ]3 @, i9 o' b+ \3 F
then# {7 A# ^+ o+ o/ Q6 \* l
  until [ ! -f $MONTE_COUNT_FILE ]) Z6 Y2 Z" u, l, r
  do2 w6 t( t- H/ B9 {/ c
    MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$
. P0 V3 H. q7 B3 k  g- M  done8 S# N/ V/ k6 E4 _' S# a
fi& X1 p6 M3 u. [- M9 b0 L& q$ [
export MONTE_COUNT_FILE
: \2 \6 ~% A" J2 B" K4 o: U
# X! |9 h$ N: T$ w! SMONTE_IMG_FILE="$MONTE_IMG_FILE"$$
1 M8 k' W8 F2 F& M7 Fif [ -f $MONTE_IMG_FILE ]4 U4 U; n# m  h. v% ~
then
/ V' w. @' F* I( Q; B. z  until [ ! -f $MONTE_IMG_FILE ]# j/ x* I; `7 l' `
  do
2 a( F. f9 O5 }+ O3 q    MONTE_IMG_FILE="$MONTE_IMG_FILE"$$) J. F6 I6 Y% B2 R
  done( z* `3 ]3 o0 q3 z( w+ `! N! w
fi
3 W+ c: D- _& }3 H- \# t- Nexport MONTE_IMG_FILE
6 p, U8 [; w% D$ a
1 i2 \  A$ \$ w# _# p  I6 nMONTE_CFG_FILE="$MONTE_CFG_FILE"$$
  d0 Q* W2 C' ^& ?' ]2 p+ n( |if [ -f $MONTE_CFG_FILE ]
2 n! h& h# Y. ], ~* }then
8 K* [& w# L  D4 k$ _2 r& U  until [ ! -f $MONTE_CFG_FILE ]& D8 b' o- [+ m$ S' I; u
  do, }  C. i5 B9 K" S9 X2 a
    MONTE_CFG_FILE="$MONTE_CFG_FILE"$$9 P8 @2 o5 D/ D- u) j
  done6 N' B4 C8 z" l( }# u
fi( ]) G  G  ^, W& f/ e

" L, T# _6 k: \# main iteration8 H  s7 W* Q8 J
run_main
# L+ M% l" Q. ~0 j+ i( ~! Y) c# K, F" \
if [ $ret_stat -ne 0 ]
3 A' j) g" l3 |& e/ Sthen . U/ h4 q) G, ~% {# `
  cleanup_alter& H3 o9 {( c, ?
  cleanup_monte0 K! d" a1 d) l7 \* y
  Exit $ret_stat
. b& i* F* l7 ~3 R$ I5 G, Tfi6 B3 M5 x* f9 N

/ G8 \3 |0 J' z# u/ f; d* B- H; ~#Alter related iterations( s! R6 ?9 t6 b" E: O4 P' M* M5 _0 m
$ E4 w" B; }* ]3 a
iterations=01 i; I, ^6 ?/ o# x& h
count=0' L8 U; w) c0 ]6 H0 e
if test -s "$ALTER_COUNT_FILE"
  U% ?. m5 E3 Sthen
* H+ j$ e) H5 E2 ~. W  if [ -r $ALTER_COUNT_FILE ]; then: l! e8 g/ z# s
   exec 7< $ALTER_COUNT_FILE
: ^9 f& y* u4 k! R# g( l: E   read iterations <&7- f) X4 U, [) W' z% n- h
fi
4 N* R- Q% ?0 y4 H3 Y% H4 M' y- bfi- y) u$ s5 x! K0 H" \: m
; e: A' \4 N$ G+ `+ M
trap 'echo Program Interrupt; cleanup_alter; exit 1'  2
0 ?4 E, d4 ^% a" B% Q& h7 ^8 Lwhile [ $count -lt $iterations ]
3 N3 l! L9 g& edo
( I1 o* {) D' k count=`expr $count + 1`) x2 v3 l+ R, F: V+ Y
ALTER_COUNT=$count
+ ^/ b# J+ E$ w( Q  h export ALTER_COUNT
# r: M5 ^( }+ S) E7 F6 d5 [& c  o
- D, G5 `( V6 F+ h run_main
+ V1 a! X- z( i1 g+ T
* r- y) n: n4 r5 F2 w% `7 F4 idone6 p4 u4 q- h9 J: w

1 ^+ O. Z, @" O9 M3 P#Monte carlo related iterations
, e9 C& _0 y) s  a" ~0 P( `* h: f, [" t8 z  q$ `
monte_runtime_summary()( ~) F7 n1 Q" x2 Q3 {' B# [: u* J
{6 h3 L) o' K: _3 u
  keyword_1=real
- Q0 R- l& r( ]" J  keyword_2=user  y. ~3 l3 G" j+ A
  keyword_3=sys7 `3 S( O3 o: W( j
  ofile_prefix=nanosim
' O- Z5 G& w) b& i  u% X8 @6 N# [2 F$ h' {$ r+ Z- b0 w  Q7 i
  if [ ! -z "$o_option" ]; then5 g9 b2 B8 m/ V9 ^( C
    logfile=${o_option}.log# ?9 F0 y+ G6 x9 l9 K3 ^" U
  else5 C8 O  B) ]' m% M( K
    logfile=${ofile_prefix}.log$ y4 L$ b$ ~# I( R" k; t, f: H2 i
  fi
: v3 ^& [$ f  p; _5 k
. n# \9 X+ n: E4 L) F  if [ -f $logfile ]; then( v) ^( ?$ r( i; S1 F
    echo "*** Monte Carlo Total Run Time Summary ***" >> $logfile      
' N) g# v; ]8 [    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( `3 c2 A/ o: f" p9 G: g
  fi) ~6 H5 {9 e! E8 R, e- ?
}
8 Q+ \% z9 _, \( a/ J! S
! F( y  _4 w& p: g5 l* Inext_monte=0
7 V! h5 L8 a* [5 acur_monte=0
. y" O( F4 v* N! R% _
* ^: g5 A; n7 G* |if test -s "$MONTE_COUNT_FILE"
0 k5 p; ?- }' Q5 {. y% C& u3 rthen
! s7 K' d1 F* a& \  if [ -r $MONTE_COUNT_FILE ]; then
! B9 c' u+ r# u% X! k! `. H- }   exec 8< $MONTE_COUNT_FILE
, ^+ `; I) D+ z6 N7 ?. `" f1 H   read next_monte <&8) V9 a9 g9 V5 `8 g: V
  fi7 L; B* D8 V4 B( P% C; \+ t
fi
0 @8 Q0 T9 t: q1 X! @' X1 V: h, _& g6 H% b: k6 P& y( x
trap 'echo Program Interrupt; cleanup_monte; exit 1'  2
1 H) k4 h9 x& p( ?while [ $next_monte -gt 0 -a $next_monte != $cur_monte ]( C% N5 L) F+ ?
do0 ^" f& k$ `* y2 t1 T' `7 A
  NS_CURRENT_MONTE_COUNT=$next_monte% r9 ?" L+ ?' n" j7 g2 `
  export NS_CURRENT_MONTE_COUNT  N. I  M  o1 J" Z

' O9 j& Q% L/ ?, \, u  echo "restore_ckt_state save_file=$MONTE_IMG_FILE" > $MONTE_CFG_FILE/ V* o& e3 X! x) {
  CMDLINE="$CMDLINE -c $MONTE_CFG_FILE"9 a2 x# G- j4 Q3 x+ |
  run_main6 r0 A9 Q+ e- V, l6 X7 t
+ z, i8 B0 i5 U, L
  cur_monte=$next_monte
) H- \8 A; o4 w) C8 e  exec 8< $MONTE_COUNT_FILE1 A" K+ R" }1 P* n6 v. z, v5 O
  read next_monte <&8+ w, e% M4 ~/ D3 T( V* M! V6 B
done
" j& E& ~% N& e; W8 D+ E& O- y( C; [+ L
if [ -f $MONTE_COUNT_FILE ]) H, \0 Z- }: W% n" n
then
0 `7 j/ e3 }$ }  monte_runtime_summary$ L/ d3 M" ~0 I. M4 i$ g5 d* \2 [
fi
( i6 k/ C, M! E) O1 n' c# i1 A  ~$ }8 d" C2 h# C/ U5 t
cleanup_alter
! @" F; K$ ]  C, K6 b( c, C; R9 ycleanup_monte; H; r6 q9 T' B4 @' O4 C) [

% t! k6 }+ @' M( `9 f5 O- P8 r1 dExit $ret_stat

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2012-5-24 09:22:22 | 只看該作者
nanosim有說支援ubuntu 11.10?為何不用RHEL5,這才是EDA的主流linux os
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-18 01:27 PM , Processed in 0.188024 second(s), 16 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表