Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-5-6 13:58:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10Chipcoin
各位大大好:
) f  h- Y" s: L  I                      小弟執行nanosim時,卻無法跑出視窗來,有個錯誤可是我不清楚該如何解決?問題如下
4 F; I6 x8 m6 X+ k* t                      [: 113: 64: unexpected operator7 m5 I: E! J# [# d1 F" V
/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim: 1: Syntax error: Unterminated quoted string, v+ Q2 c4 a% w6 o8 H- F) x: A& b
有大大遇過這方面的問題或是指導我方向去解決, 謝謝.
' u- @0 I& q7 T  Y) s我在猜可能是這個檔案內的文字需要修改 但不知道該如何修改?+ e0 M' j  Z+ i  y* X! w5 H8 s
以下為/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim 的檔案內容:- l# r7 \( _3 H  V0 T5 [1 P
    #!/bin/sh
( w, g4 s7 l! b( Z# a#
6 F6 R5 X8 q+ E2 H9 B! R# Copyright (C) 2001 Synopsys INC
6 y; k0 m* V" Y  u: f# EPIC Dynamic Simulation Wrapper (DSW)
; k) O3 ?5 r7 `: _4 T* X: y#
  P/ v# Z" w5 d, k0 geval ${DBG_EPIC_WRAPPER:+"set -x"}" ~# X2 b5 Y9 h5 M/ t
. ]3 z6 h  U# a3 i9 w4 N4 q- i
if [ "$EPIC_WRAPPER_DVLP" = "" ]; then$ G0 o) Q/ i+ ^, {2 \4 E% j4 \
    TEMP_ARCH="$SES_ARCH"
" s: I6 P) H2 X. `- X& g" p) kelse
6 U5 n6 h* X, ?0 E% W* ]/ c# ^    TEMP_ARCH="$EPIC_ARCH"7 g$ L. X/ E$ u  a  q  S
fi9 }  ^0 N. X' r5 W
4 ~& y9 ?) y4 J1 Y$ ~% s5 P: ^
scan_for_hva_args()
8 K* `+ H& m, \{
3 b& H- F! j+ O: @' Y# F  /bin/rm -f hva.init 1>&23 x5 T! y" ]# n0 ~" w) Q2 M$ E
  while [ $# -gt 0 ]; do
' @6 L6 D+ |" a  W, ~0 ^# n    case "$1" in) @8 o# X- X# K( j: \4 G2 M
      -vaf)/ k! I5 D* v& e
           have_vaf_flag=1( B- c0 b/ d1 Y
           have_va_flag=01 [  q" V0 P$ @  f# V0 f
           shift;* F2 W" w  T8 q/ @* U
           continue;
8 k4 E9 A8 k8 _1 [$ |# G        ;;, ~! b, J9 ^- L' i* Q/ g
      -va)
& [5 _* U6 q# {" p1 h9 R+ `* U; X# e" g2 X" i           have_va_flag=1! a/ g; l1 {0 c4 u6 h
           have_vaf_flag=0' M: ~4 U$ v9 S6 D2 p" h' `
           shift;
! v* P/ b3 H- r+ \! i6 h$ K           continue;
' d0 A: s; b$ b  w. I- E        ;;. c( h7 d1 T3 j, Z$ ?
      -*)! @7 o3 c9 ~: j" i2 K. y3 k
           ARGV="$ARGV $1"$ v; d. H! a% Q. ^. M! f
           have_va_flag=08 Q. a3 t5 W4 q0 a' }' {
           have_vaf_flag=01 l% A2 x$ C/ T* i$ D
           shift;
  }4 ^* }0 m0 Z           continue;" u7 T+ I; d+ I* _! g
        ;;
5 g8 ]- K" z. p$ U      *)0 u3 n4 M, r4 R1 c: S- `
           if [ x"$have_va_flag" = x"1" ] ; then
! A# o( M7 {9 S2 I" k              VA_FILE="$VA_FILE $1"3 [" H5 k! d& D6 j
           elif [ x"$have_vaf_flag" = x"1" ] ; then ; g& ]2 N% _8 I+ u) Y+ S" }' O
              X="`cat $1 | sed -e '/\;/d;`"
0 V' Z  B+ U9 u+ r# n  E  e              for token in ${X}; do8 Y9 N- \6 J2 C3 x0 C/ ~) n
                 VA_FILE="$VA_FILE $token"
) Q' \  h9 v" e6 F; |% c% J% Y              done
" N  @- k8 d- M7 l% d           else
0 y/ `9 S" b2 L              ARGV="$ARGV $1"; k7 [( _$ T! K2 }" I
           fi
2 \/ k, h% n9 x7 A. y9 f           shift;
) J* Z- P, H2 ?( M) R/ f        ;;
6 i3 u5 z5 W. Z; G    esac
4 E) m' X4 Z; q  done
# A$ M1 B- V0 ~9 T; W4 }( e/ D1 X4 M! z1 `5 ?# Y
  if [ x"$VA_FILE" != x"" ] ; then
- O; j, @" q8 g. h, Y* }+ T( f##     /bin/echo " xxx ARGV $ARGV"$ X& ^2 N- y9 i; V% z' `
       /bin/echo "choose nanosim $ARGV ;" > hva.init$ G  U, y' Y+ L: s6 c
       echo vcs +ad=hva.init $VA_FILE -o simv
/ H% s: I& i& |( @4 Q- r! H       vcs +ad=hva.init $VA_FILE -o simv
# c9 @7 z: _1 e5 q$ \4 V       exe_status=$?
' R7 h# Z$ |6 l; ?       if [ $exe_status != 100 ]; then
; a$ L8 @4 a2 n* Q          /bin/echo ""+ h+ P8 v8 f$ t" W! R
          /bin/echo "ERROR: Execution of vcs exited with code $exe_status"
4 t$ a2 b- ?- R/ o; f( q8 a0 y6 A7 U          /bin/echo ""6 d' F9 s8 M' F/ c( C8 y3 V
          exit $exe_status
; M# S" y1 \5 R" b6 q       fi
- [- o$ h$ @: g: t       hva_files="-n simv.daidir/amsVD.ntl simv.daidir/amsWRAP.spi"
- a* `7 t4 y8 |( A3 x, o* q       ARGV="$ARGV $hva_files"# y+ }7 t2 B: m+ T5 ~! p( I
  fi
' m! X; i( G7 r# E$ D}
' U1 C4 H8 w9 l#-------------------------------------------------------------------------
' `* b! W) T) y+ z
7 _3 r/ ^3 K% y) P9 V  Wcleanup()
% ~( `& [: b6 Q, V$ K' }# O1 U- B) r{
9 Q% W1 J! L( ]! D    if [ -d "$rundir" ]; then
% Y  |  z- D4 s) x3 _        # On AIX, a .nfsXXX file is created if libModel.o is removed
" f( ]4 Z; H3 B# u: h6 e        # so .epicrun is not removed because directory is not empty.; p$ D- `' m3 \5 I" y8 ~
        # Solution is to remove it again if the first rm failed
  Y# b/ ^8 C  A& u6 t        # (rm -rf $rundir || rm -rf $rundir) 1> /dev/null 2>&1
, C5 e4 L; }7 V1 K% M: V        if [ "$EXTRA_CAPACITY" = "YES" ]; then
( T3 P2 g7 z; ?; |        chmod u+x $rundir/rpcidfile- m# B4 n% c" |0 a
        $rundir/rpcidfile
/ L) Z/ U1 i/ t( `        rm $rundir/rpcidfile* x* L1 F  }; e# e: o* g3 @
        fi- b$ q" h1 d- ^2 X' w
        rm -rf $rundir
% \2 j- g8 P! d3 `: T+ F' L1 v7 F& C% J" A& y/ D
        #Due to NFS problem, we have to copy files needed to1 F; h! e2 e: P: e7 K4 u7 A
        #/tmp/<temporary directory>, then symlink's files7 v' Z( r2 `: o4 ?+ I, r6 v. r
        #to the local temporary 'rundir'. This avoids the problem
' \  K% B  ~$ e5 |- R& y- T2 r        #to remove 'rundir'
) C2 R! V" X1 z6 U        if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then& S* v6 p! X) A; ~0 y, w4 v
          if [ -d "$tdir" ]; then; n/ \( d- D3 J4 p! X$ h
            rm -rf $tdir
1 M/ h- E9 V/ u7 W7 k1 V2 v( X          fi; _* G+ |) \  m2 z* [& i) g
        fi
' A; i) ]( i, l4 N4 u) Y; d& I    fi
3 l9 v( l8 _, r0 r  t$ R' k2 f    if [ ${exitstatus:-0} -eq $ld_err_code ]; then) q8 j9 Q8 }' i0 a8 z
        [ "$has_model" = "YES" ] && rm -f $cwd/libModel$suffix
+ x' z6 X; r9 ^% l9 G        [ "$has_custom" = "YES" ] && rm -f $cwd/libCustom$suffix
2 t' r2 I3 e* n4 p1 W, H: L' U    fi
7 q" v3 c' E5 t7 O    [ -f "$EPIC_SCRIPT_MESSAGES_FILE" ] && rm -f $EPIC_SCRIPT_MESSAGES_FILE 1>&20 T. C8 J! i! S3 ?0 y4 x
    exit ${exitstatus:-0}& U' e, `$ D. q) P* ?
}# x( R" _/ \" k2 ?  u, o) U
6 B; e: t) a/ U- t4 E$ q
Exit()* u# p) \+ I) F! d8 [6 Q, [1 l" K3 ^
{
( h5 `0 A" ?6 j3 c2 e" q- {( e    exitstatus=$1
9 ^& _' o( j" Q8 E0 S! w    exit $exitstatus
9 W2 A0 e2 o0 m. D}- A+ _. x% f6 K6 L3 w" f5 w
+ w. }. ^% A. a! X
# get_epicrc filename keyword
  b# h' x1 B- X! ]. I  V7 dget_epicrc()
% ~  B3 i. s6 S9 k/ v{
5 t# c$ R- D& }5 T! b. U* i6 H- h# `    [ -f $1 ] || exit 00 e% ]( y  C: t. r1 ?3 c1 Z6 s" S+ g
    key="/^$cmd2:/{print \$3}"/ W7 w: g5 o& h1 ?: }0 y0 U( |) d& z
    awk -F":" "$key" $12 \9 }5 U: w8 a2 o4 ^8 J
}' u( k) Y( g' D5 r
& t6 X, f2 G5 Y: _
#
# I; `9 ]2 l9 f& q& @# set datasize limit to hardlimit
' R0 t& E9 n- J3 G, p0 D9 b#, ]2 i- Z) D1 x, k7 g
set_data_limit()$ C3 L3 {3 ]/ r" N/ l2 N! n
{" q" g6 t" |. z3 ^1 @
    dbglimit=0
4 [! a" X/ f4 }2 X& [# a0 O. J    hardlimit=`ulimit -Hd`7 E! @7 ]" b3 N( I- w5 _4 t; t  J) Z
    softlimit=`ulimit -d`/ z9 P. k% \+ P" e" d; n
    desiredlimit=3500000$ w- N) O, k% n3 t0 K  m
    hardisunlimited=0
5 L3 l# I$ }* e# ]: i+ M- ]    softisunlimited=04 J, n5 i) h1 T% Q- q& F* ^- w
    is64=0
: ?! Y) Y6 j4 a4 Z* L
3 }' J4 S3 q$ C" n$ Y  g    case "$EPIC_ARCH" in
* r! r2 @1 s) y    *SUN*64), g" C2 I' i7 h5 |
        is64=1
/ g" G! W( r5 G6 E5 W! Z6 u- f        ;;4 X, y) B$ y% Z. X) Z: A& L
    amd64)7 h2 t: o; V, o+ C; i$ X
        is64=1
1 i  x; \( |' i) |7 E        ;;
. H# Z5 K5 z- V# U- N9 H! b+ T; K    x86sol64)/ a0 o1 \" T; x! ]
        is64=1
  c3 v3 e* P0 q; G5 S3 m- R) f        ;;
! c7 n, {! J5 k$ Q    aix64)+ D3 L' o* H" P& h. {7 g
        is64=1
2 z/ k- R1 H# A        ;;
. P3 h3 L* I% D' d    suse64)
& y6 a1 k' H! O        is64=1+ ?3 M2 A3 ^0 s0 n
        ;;/ D8 Q0 d' K9 e: u+ }. d2 S
    esac
8 D$ ^$ M8 [0 j# s
9 L! _6 p0 Z& f% ?+ [, y, @: Z  T    if [ $dbglimit -eq 1 ]; then" N7 J) m. X& h% d
        echo hard $hardlimit soft $softlimit
9 e6 h  }6 k+ E+ S; V- E0 r    fi) y' W1 f* ?$ ~: O8 E
8 g. S) M5 y( R% }
    if [ x$softlimit = "xunlimited" ]; then
) \0 k- `- W; X  @/ Z, w5 O' p        softisunlimited=1
) F) i. g5 B8 A    fi
0 x9 D$ g" J# |" y0 ?1 w
& Q  G, ?% C& k9 Q0 d$ P% T' V    if [ x$hardlimit = "xunlimited" ]; then, W* Z' M; D; Y, {% {# [
        hardisunlimited=1
. d+ [9 `. w! D    fi1 D6 O7 q2 o( N) I
5 F9 T: J& k( o5 O
    # 64 bit machine should have bigger than 4G/ p& K' x5 c7 m3 F6 ^; D
    if [ $is64 -eq 1 ]; then0 |  O3 T, b2 e" y0 U0 \
        desiredlimit=5000000
6 ]. r9 \/ d3 t8 X8 ]    fi# o( q% A* B4 R" ~# Q; @

, i/ u* {) I/ ?9 j6 v    if [ $hardisunlimited -eq 0 ]; then- @- z7 e( X1 {2 s
        if [ $hardlimit -lt $desiredlimit ]; then
( k  [" B  X/ j0 j* \            echo "WARNING: datasize hard limit $hardlimit K is too small."
( b+ d; _- h4 h! f1 I1 P, g1 C        fi8 L) @8 z/ S* U
    fi
, f3 v1 \4 R: m  S& s" w9 ^
; |3 {9 B+ T" }5 ^    if [ $hardlimit != $softlimit ]; then
3 `- p: ~" ^" L4 J        ulimit -Sd $hardlimit
* ^* y  R2 M2 Y: R#        echo "WARNING: datasize limit is set to `ulimit -Sd`"' o$ g* |6 W; Y( ]3 h' G
    fi
* t  G8 ?* P. P5 a8 c" n) q$ R' o6 J+ e: \
    if [ $dbglimit -eq 1 ]; then% n6 _9 j4 I- Q' K. M6 f8 k* Z
        echo datasize hard limit: `ulimit -Hd`
. W) V/ E' N  ^9 _: m        echo datasize soft limit: `ulimit -d`' l8 @2 D1 Y8 U. q' B  h
    fi. H% y+ X; J2 H6 q. s3 o9 e
}
2 a! R; R) v: o& }; d- h& v0 ^5 W  w2 _1 Z8 E5 ~
#
9 v5 D4 m# ]4 R; d1 t8 Y3 J# set stacksize limit to desired limit0 G& N' c* f9 x
#, Z. ]4 W$ z8 W5 V& R) K! `" ?
set_stack_limit()
  L6 i0 S2 x. s# E) l; F1 X{, m9 Y5 k, N) _9 A# F$ ]. m
    dbglimit=03 S5 E- J5 G* h2 n
    hardlimit=`ulimit -Hs`
3 k1 T, j6 ^0 M. G6 y, w    softlimit=`ulimit -s`
9 y+ t. [  j) w3 T8 r4 D% t    desiredlimit=600004 s7 R, u, j2 g# }9 N
    hardisunlimited=0: s( Z, D; p# i) }4 ^0 E1 A
    softisunlimited=0
* _+ A* E9 f/ q, n6 t" @    is64=0/ R( u. u0 A3 f: P
6 W% Q5 U0 b5 U# v
    case "$EPIC_ARCH" in: ]6 r5 h8 n" a
    *SUN*64)
5 R, U7 e% H; ^4 M7 R  h: M        is64=16 E. x. d6 S0 O: O" E
        ;;
& z( _! I7 s  j5 T/ m6 m# ^) ?5 ~* P) H    amd64)3 r, [' T. @6 x' W
        is64=1: J5 v$ a& L3 R# H
        ;;
2 k" \. u  z- B- p7 Q2 k    x86sol64)" s! t0 j$ V0 w, U$ S7 i5 f, |7 ]
        is64=1% w7 _4 y4 j4 |' l
        ;;) Z! Y6 E( d! h/ W3 y
    aix64)8 k* ~! H) _$ I) o
        is64=1
8 y# m* t, I; @( N* {        ;;$ |/ j2 o( m2 w* t2 O# z( V3 ^
    suse64)% g. Y7 z8 Y7 ^) G! \
        is64=1
0 @- T. t# d# t5 d        ;;
7 W( ]4 y% `" D8 [$ k% F    esac
* U% U! Y3 H; U2 a9 m& A: s' E/ \1 T  v- l
if [ "$EPIC_WRAPPER_DVLP" = "" ]; then
; n# s( G, G* b7 F9 V2 _    if [ $is64 -eq 1 ]; then
  n" B, v8 \/ e0 A! A: ]6 f        desiredlimit=200000" u; x# T( y8 r! `
    fi( n  X- T9 u9 V) K1 P0 M
else3 Z2 v& }+ M! I% R7 \5 t) b
    case "$EPIC_ARCH" in/ m7 |( O& F9 ^# P) z& [
    *SUN*64)
& T2 N( Q- L8 X+ b4 V& g# a! j        desiredlimit=200000  ^) U4 D# B; ^  i+ P) m
        ;;
' B$ Z3 j- o: D    esac
8 b8 \0 s# Q6 b, H0 }$ M2 ?fi8 U" d- G- c3 h7 D. D6 Q
       
. U6 C/ h  p3 ^1 }8 v* Y; w3 W5 C2 ]    if [ $dbglimit -eq 1 ]; then, b- |4 s: |/ E' k+ r
        echo hard $hardlimit soft $softlimit7 w# ]; A6 c7 z3 _' r! o
    fi
3 x* V# ~9 {0 ?2 U/ o  j; p
9 {8 L6 e) o" o    #stacksize can not be unlimited, pick smaller number4 W! ]! Q/ ~6 ~. |* f/ |( r' o' K
) a4 U( p7 C- G" B! H' h0 c: [
    stacklimit=$desiredlimit
) G& m5 Q& ?- q5 E" ~* S( b# z8 i- I  c9 L' e# |( z+ ?
    if [ x$hardlimit = "xunlimited" ]; then' l, G, X) A$ m/ m
        hardisunlimited=1
& i7 O# r) R+ e- o    fi
0 m7 Z4 Q) M: ]/ H8 [! n
  o$ q1 A) _, q    if [ x$softlimit = "xunlimited" ]; then
# [  w# s( J$ m  D' `3 b8 p4 s        softisunlimited=1
: z6 M/ Q% `5 J3 j, k5 o9 l    fi; [# s3 b* [1 Q

8 k* V0 M1 K7 U, x    if [ $hardisunlimited -eq 0 ]; then
- A4 P. z" v( u( N        if [ $hardlimit -lt $desiredlimit ]; then
  t2 @; f' i6 @; g7 n            echo "WARNING: stacksize hard limit $hardlimit K is too small."
# f$ Y2 t' T2 d            desiredlimit=$hardlimit
  j1 }3 S* a1 ~( c  v, D" U0 O            stacklimit=$desiredlimit" d1 F7 y2 u* A3 I" Z+ B
        fi
; t2 W$ a5 {/ A, I' f0 H3 Y    fi
# N8 _6 j6 a, \# y) O
! r4 h( K9 ^( r' Z# z, h    # desiredlimit is set to proper value (< hardlimit)
) i9 D! E6 j9 ^" p: A6 i: l0 F9 n1 q; n  |
    if [ $softisunlimited -eq 0 ]; then, A% w/ Y8 X5 d9 ~4 Z! _! r. g
        if [ $softlimit -gt $desiredlimit ]; then+ @( |6 ]* `' R2 p5 h
            stacklimit=$softlimit
: z# D& b1 i% T% o        fi! s% U7 [  q) F/ C8 w* [+ ^/ A
    fi
6 ~8 y# s( z) @, \; e9 {: Q, R* s5 S4 |+ ?) R# `6 o9 E, e) Z
    if [ $softlimit != $stacklimit ]; then1 v6 j# J: M$ c  j
        ulimit -Ss $stacklimit
( b9 k0 S( n! c1 Y2 E1 D  e% c#        echo "WARNING: stacksize limit is set to `ulimit -Ss`". d4 J( G3 C3 |
    fi
) y4 T* B" C6 C
9 o- V9 b% _3 D    if [ $dbglimit -eq 1 ]; then
  ?+ B+ r2 k- Q) X9 w4 Q* \        echo stacksize hard limit: `ulimit -Hs`! B) ?. W/ q. j  `) m1 d  L
        echo stackize soft limit: `ulimit -s`
) W, j) f" V( a1 u! {    fi" h& ]" u2 T3 y! g* i3 Z
}  G# C; O4 u$ K2 p  x

- [4 n" q+ W6 Oopen_epicscriptmessages()5 m6 G1 T" W  _. V
{* W- h2 @( {, e1 v
#generate  temp ".epicscriptmessages" file based on pid" F' d1 W8 ]& B1 X
EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$  u0 x  Y  S0 g5 I4 C" F
if [ -f $EPIC_SCRIPT_MESSAGES_FILE ]
, N8 i+ F! d8 P6 A6 U5 rthen " Q! r8 Q% D$ w! x- e* M( [" r, J
  until [ ! -f $EPIC_SCRIPT_MESSAGES_FILE ]
. f  Q- @' X; A; C5 ?  do; ]. n0 l0 o, ~6 P% z' b
    EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$$ k3 q" u, H8 S
  done% j# i! w/ U+ P6 Z" N8 E" m
fi2 d% u$ {# B. b$ H  K3 C# J

5 N9 H9 K' p2 zexport EPIC_SCRIPT_MESSAGES_FILE
9 n; N5 H- x! o. d- U& @+ A1 G( ^}# ^! l; G6 K6 k; e" j

* u# ]8 |2 o. L% }& S2 Y
+ [. C' {) o  x' Mcmdname=`basename $0`5 o" b1 p  W2 m( E; J
postgres="n"# ~4 S* M; L0 }% l' _
ostore="n"* ]; V( l2 }5 M( R
gui="n"5 Z( j9 A4 o8 l5 N! c$ i
databaseOn="n"  h8 L3 H6 L7 e& N
f_next=0& P& _" k  ^+ [5 d( q' n5 J7 G
f_option=""
# H5 S0 H8 T1 W: E: go_next=0
, Z5 r% W5 x/ G( n- {o_option=""4 A7 j* I* ]  P+ L: c$ h# d4 `4 e
workDir="": [& t9 x" e5 j* _7 g
workDir_next=0
( H! {  T  m! w! w3 }/ [! ^- C9 ~6 merrFile="powrmill.err"
% c, r1 T+ u2 b& \win32flags=""3 S8 ]* B! h1 V$ o
ln_default="ln -s"
2 R" P# T: G5 |. a4 \0 E
( l9 \6 }9 ~+ f1 O, Qhar_hilo_file="", x; g$ E( \9 W2 n
have_har_flag=0
+ u6 M3 ^6 p* m! `' x8 U, whave_har_setup_flag=0$ {, X( F. T" }* U
is_special_har_run=0
+ s6 N& I; ]! e1 |har_ofile_prefix=""1 \1 X/ w* b) ]1 @3 s8 a$ v
( z0 ]4 J- b% I0 A* C; D& W* C
have_va_flag=0/ |) }2 r( _7 u( M" i7 R5 D( \$ o3 q
have_vaf_flag=0
* y# D5 I8 m$ j# W! w/ r4 TVAF_FILE=""
) l+ ~7 ]$ ~# B+ o5 o7 D- eVA_FILE=""
0 l/ e$ V4 K7 L6 g7 o: A! Q3 CARGV=""! H7 `; ~4 O! O
6 z8 {! T% M" f) e" M; k! T
ORIGINAL_COMMAND_LINE=. u, U7 D4 a7 P. H3 e
LOOP_CTRL_FILE=".ns_ba_env"3 h2 {4 S0 \+ |4 K# g# k
ALTER_HK_FILE=".alter_hkf"
- Y3 x5 L. |  k6 U8 K7 E; wALTER_COUNT_FILE=".alter_count"/ q9 I6 w, Y& m* \/ {# i
MONTE_IMG_FILE=".monte_img_f"" F) M+ |( N2 k* _/ Y1 z; A
MONTE_COUNT_FILE=".monte_count"# E  M+ R$ i4 M& i6 c9 g7 E
MONTE_CFG_FILE=".monte_cfg"4 \( L% K" z; E' N% i' t
EPIC_SCRIPT_MESSAGES_FILE=".epicscriptmessages"# c, z& H4 N& h
& g" l6 Q; d0 {, o
open_epicscriptmessages $@9 ~7 l' S* a6 N$ ^- }
/ v, k% g: d% ]& x9 i2 }6 n
scan_for_hva_args $@0 i! E0 {4 C  u  }5 _7 G( N8 Z

# `5 o; e% x) R3 x, W* Lscan_for_har_args(): W+ y/ c3 i  U" t% Y, K4 Z
{6 G& V6 U% N! ?- b, B& [+ p
  while [ $# -gt 0 ]; do' [6 P  R+ _( t
    case "$1" in$ K5 J0 {( a" F! D3 J
      -har)
& y3 D# G" T1 |$ k* H           have_har_flag=1
2 [4 n- Z5 T8 t0 ^3 u3 ^$ U% r$ T           [ $# -gt 0 ] && shift* G* j! m3 I7 o; Y& E7 j. S" f
           if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then8 V0 E+ `. p, H( O7 x6 M
             har_hilo_file=$11 k& R! C" a; ^2 J' p) u! @
             shift+ z% v$ M$ w5 {  O  i
           fi
0 h$ j5 w( m3 ^. `           if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then
; W7 ^: J7 K3 m( [$ K2 y             echo "Too many arguments to -har flag. Only one hilo file allowed.". ]0 T, M: L  X0 m* r; O' D
             exit 1
' w; x" v4 w) w           fi; K) [# f0 m  w$ ?+ k& |
           break
- f8 B) f3 N; w3 p  S        ;;
7 ]2 b3 F! Q8 e      -har_setup)
3 O) B0 f+ ~9 N+ S  j; _. H           have_har_setup_flag=1
  A! v* Z1 [1 L. A, b, ?( W9 _           break
8 ^% m5 g; Y4 @        ;;
  Q5 c4 H9 \9 p" v; B8 N      *); E4 E' p& Y6 F6 h
        shift
) K& O  \# O+ E# P; }1 a5 O        ;;
6 `1 h6 ]" j5 j; F! Q6 t; ~    esac
7 ]) t8 f- ^3 b; V# k  done
5 \% e. G4 _. d9 Y* V1 j}7 X$ @% @8 c* B( Z1 V

  G) t! R- S9 d! Fscan_for_har_args $@$ j8 U9 \& O; q+ a/ A) ]

) z6 v& K5 Y. o  y2 \1 o4 Qfor argv in $@+ L* x! Z1 Z( }* ^- ~" m4 H
do
' y6 s* p0 A( I6 I: r3 @9 [   ORIGINAL_COMMAND_LINE="$ORIGINAL_COMMAND_LINE $argv"
* q1 D& B% N" S% k    if [ $argv = "-gadb" ]; then/ R! o7 V4 `  H( V7 M2 E/ A
        databaseOn="y"7 r6 G4 ~7 `6 c& E# D2 @" x2 s+ b
        workDir_next=1
/ x! g, P/ g) g9 p5 r' n    elif [ $workDir_next -eq 1 ]; then; v0 Y  g+ k  r% z4 ^% t/ u1 z
        workDir=$argv
) ]) D8 w7 I0 e6 P+ |# B3 A7 [        workDir_next=0
9 L7 t0 A- l7 s3 \    elif [ $argv = "-ga" ]; then* q! \& l0 X) x/ ?8 R
        gui="y"' \  G+ j$ v2 L$ d2 G' i
    elif [ $argv = "-f" ]; then6 W0 T* Z' L  t, ~% I. b3 J
        f_next=14 N9 s- k# g# u, ?- T, C
    elif [ $f_next -eq 1 ]; then7 h3 r6 b9 d7 \- U7 O3 n, D$ ~* U; X
        f_option=$argv% s5 M8 Y+ \9 t( S7 W# B+ Z
        f_next=0
) `0 k4 n* ?( z: V! M: a    elif [ $argv = "-o" ]; then& L1 W( T7 M. l1 F! a8 h, T; I
        o_next=19 H! x4 {$ H3 v5 p
    elif [ $o_next -eq 1 ]; then
5 n  c" d1 A+ w5 l0 _        o_option=$argv
8 ], Z+ c5 l+ R; m6 Z: S; s, x        o_next=0
1 L- F0 a3 Q" g$ s: ~$ g( c1 K  I- v    fi
2 y- ]  o; `) u/ q% rdone' F  J/ B# v% i- q# L
echo "Command line options: $ORIGINAL_COMMAND_LINE" >  $EPIC_SCRIPT_MESSAGES_FILE
: F) }7 v  n4 V7 p3 P# ~
. Y  }. W# d3 l' D5 rif [ $databaseOn = "y" -o $gui = "y" ]; then: K3 T8 l9 k2 C. U$ z4 h+ Q0 k+ H
  if [ $cmdname = "pathmill" ]; then5 P9 x% S; ^7 P+ T0 r' }
    if [ "$EPIC_ARCH" = "SUN4_SUNOS_5"  -o "$EPIC_ARCH" = "SUN4_SUNOS_5_64" ]; then
: u; {5 S& _/ z3 I: g* Y: E' _         ostore="y"8 f# k2 ^) B7 ~7 M# M5 ?
         postgres="n"& e& u5 z. ~* K/ ^5 ^. J$ d7 H
     else$ b, v- B- d. B
        echo "athmill GUI is supported on Solaris platforms only" 1>&2 - ~9 K& Y: n& I& G" k
        exit  C* s3 Q; j. }
     fi4 |% }  e; R# P- V
  else
' K' M) ]' ^& Y: |! D; U    postgres="y"
; \8 L. }3 y! O4 i& O         ostore="n"
( \3 v+ ^% s1 Q- Y) x( _  fi4 a: F7 Q: `( L3 ?/ n" ]
fi3 a5 B$ f& H7 O2 j. x3 p" C; e: c
4 F. a% Q9 a8 j6 P& }5 Q- p
if [ $gui = "y" ]; then
0 g9 u/ ~6 q) l4 \3 A  V7 o9 _    if [ $cmdname = "powrmill" ]; then
$ C  w& F- [; H5 m+ N+ m" y2 B) T3 }        pwga $@+ V3 {" v) C( M4 A. X
        exit* U3 E( ?* w" E, W! l; j; U( q. [  n1 ~
    fi
- D, \7 {6 l; \- u( d6 H) _3 s0 G ) }# @0 I  R! z
    if [ $cmdname = "pathmill" ]; then
9 S0 k( B' s- L9 [4 N* ^; Q) t9 n        if [ $ostore = "y" ]; then* j7 k4 U, t) q  V* E4 z4 E
           ./pathfinder $@
5 T. a5 E' M/ y9 S           exit. u1 I/ `" R* Y6 |9 N- {5 O
        elif [ $postgres = "y" ]; then: L( o; @+ g3 \+ k8 J9 z6 p) i
           pmga $@; l! g- `4 x6 D
           exit
6 `5 x, G+ R. z! Y        fi
" y) B3 O/ P) @; z5 t; S    fi
# z+ r( }( U: s8 w. ~" Z- Ffi
3 v4 i8 }" w, F/ I
$ l, v( g# w" ]4 v* h7 O5 h8 t- gif [ $databaseOn = "y" ]; then: t/ w2 l) c) `8 [# u4 Q
   if [ $ostore = "y" ]; then
0 V. D) g: ]$ r6 p5 |; [# Z. H/ ~      if [ -z "$workDir" ]; then; L9 j$ a2 z; @+ e# z2 P
         echo "Error: Missing argument for -gadb option"- Z, ^+ a$ F$ _+ E
         Exit 19 M) {3 _$ H% n* a2 S) R& b
      fi
4 `: Y' X% a* o. T  ^6 b   fi
$ E: |; M' v4 k2 W' B! a   if [ $postgres = "y" ]; then( V4 [) N4 i1 r" H" G& _$ I
      if [ -z "$workDir" ]; then
  b. T7 t5 H0 d8 ^# B" f         echo "Error: Missing argument for -gadb option"4 n# l/ W3 S3 `9 y* k" k
         Exit 1$ |) q( R* E1 d' i7 M
      fi
$ l% w% _3 j' L2 h2 b: s( {   fi
* f$ s' I7 E2 |1 Pfi
' e7 G1 K- X, u, J9 |5 v9 @) A. x8 Z7 y6 \. I
if [ $postgres = "y" ]; then
% a  }+ d: }' B* Y5 S# e, B: e
( L8 e5 w& a$ \+ y  l    if [ -r $EPIC_BIN/scripts/gui-init ]; then
6 C7 j/ ~; l/ g7 _        . $EPIC_BIN/scripts/gui-init9 f, i) Q" x4 W- Y2 m. S) H
    elif [ -r $SES_ROOT/bin/scripts/gui-init ]; then" k& y4 I* m0 O; b* B# f
        . $SES_ROOT/bin/scripts/gui-init* ^. l9 R8 j5 G2 |, K2 }
    else, W9 B. |; \0 I+ T5 R5 ]
        echo " ** Installation in \"$EPIC_HOME\" has been corrupted!" 1>&2
/ o* G* \$ @" ^) ?* A! A; c3 Q7 }( i        echo " file bin/scripts/gui-init is missing." 1>&2& j, G) C; i6 j. q2 W
    fi
$ ^) p) G' T: d  S; E; {2 T, G8 m3 m: O1 F+ q# }+ @) K: B2 B, n
    workfile -tool $cmdname $@
- I% E, v7 c' `$ m/ l( {9 }fi; f0 S* ?6 {% F
. I  T% [9 C( Q' ?# S" x7 a
if [ ! -z "$o_option" ]; then
7 f6 t8 B& @2 x    errFile=${o_option}.err
: v+ z4 g1 F2 C- B, Q5 i! \elif [ ! -z "$f_option" ]; then2 C$ T! `* m0 v4 u5 Y9 S, Q+ M
    if [ -d $f_option ]; then  L/ h( E" _/ z  W/ E
        errFile=${f_option}/powrmill.err* E3 K8 f. k" P& c' I
    else errFile=${f_option}.err
) F. X' V. o; {1 A) O    fi
) j9 R  u: j2 R2 `0 B( }- w) Ifi( ~9 ?5 G/ s3 U/ @  a: U1 j! z
0 n5 t- {5 p5 u- l, C( x4 v' ^) {
& x0 t* J0 ~% J4 |  n! ?+ Y
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then
6 \4 }5 s4 @5 r2 J" k  rundir=.epicrun
0 v! y0 B) \. n  `( D. Lelse
3 S7 u0 l" P3 F: x  rundir=.epicrun$$; r9 x4 I; N5 T' s( B1 `
fi
( N* |1 Q/ F+ d5 N9 u
4 L7 k# I% ~4 c  h; F$ Qlibpath="$rundir${EPIC_DLIM}$EPIC_DIR") n  o( h! U) [" i* J  j

3 f5 ?4 K4 [- J5 Q4 v" C$ @. o# f  Ccwd=`pwd -P`, {/ t* S. O6 {8 a
if [ $cmdname = "acehdl_w" ]; then
" d2 [& l" \8 q: v+ @, j  cmd=`basename $0 .sun`
; A% G+ J7 u7 U$ m  cmd=`basename $cmd _w`
& ~  q/ u& T% i0 t" a3 z2 ?else3 X8 L4 x; m% F/ H$ d" ^; z
  cmd=`basename $0 .sun`: V% f: A( M* u4 g
fi
6 G  T! Z  v; E* s
& Y, }0 |5 U3 T' Ccommand="$EPIC_EXEC/$cmd$EPIC_EXEX"
" P, u: R1 q! j[ ! -x "$command" ] && echo "$cmd: not installed!" 1>&2 && exit 1
! }# I+ n! Y2 m9 u$ x: o" _8 ~
( F8 Q# v: i7 [1 h$ k& h& w& b# buildmod extracts -u/-fm options and calls genepiclib  {2 K) S+ B' ]% E4 E8 F
# It also set the remaining options to variable CMDLINE
8 }' m/ J8 O% ?) p% [# look up in .epicrc for -fm & -FM parameters
; i$ g. w& N1 I! r3 U! D- N  `/ K" m3 r6 q  v1 i$ M
fmlist1="`get_epicrc ./.epicrc user_adfm_obj_modules`"$ x! I! ]6 `. L  e5 r
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules`"- Q% a* p$ [( ^9 I3 {5 s- y
[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules`"
' y" Y: v, u- | + B1 ~7 h& {( f3 q+ J
FMlist1="`get_epicrc ./.epicrc user_adfm_obj_modules_force`"+ r/ r2 P1 N8 g. G5 B* C+ z  V& J
[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules_force`"
0 Z/ y6 D+ P& t; |4 w+ `# j4 y" ][ "$FMlist1" = "" ] && FMlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules_force`"
: a! B- b: q; g- I  v
" Q2 V2 x) e, D; |7 H7 G( Qif [ $# -gt 0 -o "$FMlist1" != "" -o "$fmlist1" != "" ]; then/ K/ H0 w) J- U, B4 P1 S; \
    # note that the buildmod script will set the CMDLINE variable) i. j4 a/ ]: s5 R2 V$ `
    . $EPIC_BIN/scripts/buildmod/ A( F* z  \! x- T

8 M! M2 P: f! i: `5 j4 o( y    #echo "This is the value of cmdline=$CMDLINE"5 T0 d) \: O( U$ P
    #exit 0
+ ]4 y* W" f" \5 E5 M2 a+ P8 \
' X) B7 }) d1 _& E2 D    # if a new timemill/powrmill/pathmill built, run the new one/ q( |- e8 h# B; V2 p
    [ -x "$rundir/$cmd$EPIC_EXEX" ] && command="$rundir/$cmd$EPIC_EXEX"/ |4 P( q8 s8 T# R3 w
fi
3 S% Q( K1 Y* N7 H% x6 w* L! X' c( `) E& M7 N+ h5 ]
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" ]; then& L& o. o; k, g6 u9 L: {
  if [ $have_har_flag -eq 1 ]; then
' i, s3 D4 X! T" Z( W    is_special_har_run=1
8 u3 x2 C0 O; p, U- M! Y6 ]    if [ "$o_option" = "" ]; then
  b: ]+ X" R+ i- b      case $cmd in: D& M+ ]9 W: ~1 R
        timemill)
% ]7 o- {4 U& W+ ^( z1 H          har_ofile_prefix=timemill
( R0 F! [/ V5 L3 c- s& R; p+ m          ;;2 y  H% c  F: ]" z& x: B; _5 C
        powrmill)5 N: U& d7 q  a" u& f
          har_ofile_prefix=powrmill
7 X$ M8 B7 r$ ~/ e* f          ;;0 X8 V# B+ T$ ?! X4 |2 ^
        nanosim). X( H& {, g2 o! u, ^
          har_ofile_prefix=nanosim
5 @) O5 S6 F0 o* \2 Q. y9 G          ;;  h- |- k5 v$ c6 m; x7 ~$ e4 F
      esac5 U+ M+ C0 ?7 q& n% o
    else- Z' v/ D' ^% K$ J6 D
      har_ofile_prefix=$o_option, F: R8 w7 |5 \) F! t7 @
    fi; ?% |2 U; Y- {# Q7 U
fi
9 V+ l9 L0 d3 @( H& X( j- Wfi/ M( h4 J& h' T: d- ]
! r* H& B# _0 D
# Call Double precision version of the product if -D
9 \" N  U  J' L- y: [. D% ?" l# or simulation time > 1,000,000 ns.* R* c/ }. N6 Q, P. P
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" -o "$cmd" = "railmill" -o "$cmd" = "pwarc" ]; then6 N  w$ s! i! S% ]
7 X, r$ z- m% U' V% W& {# `% d, f! f
  # Now the binary always has the ACE feature
+ o% T. i0 C; m  USE_ACE=YES
# x8 I  M( w0 U3 [* @" C6 @/ [7 r
: {* B. W: d- v9 c+ l! b' D" R  HAVE_DP=NO8 O" z9 F) [( Q9 o6 u5 M5 U8 w( S) y
  EXTRA_CAPACITY=NO- r9 \, c( Q* p, F# ~
  DB_REAL=${FORCE_DB_REAL:-"0"}! l1 c( M/ B% G) g# t" Q

) R' K# f/ {# j$ D  # Enhance for ACE ease of use
2 a. G: D2 |( H" ?$ W! Y8 e# j  # If no command line option or only a -T option, do:
. ~2 H' g) o) Z  #   1. set -A option
1 a  c6 ~$ Z' Z& x2 @$ X  #   2. assume input file to be hspice
$ c7 E* K# x5 ]0 E  #   3. set -o to input file prefix( n' |3 J9 N7 e( a3 @! E8 T7 Z4 q
  #   4. set -z to input file prefix
, S  U5 ]2 i8 l2 M8 k8 y  #   5. set -c to default config file
( A3 C1 v2 m3 e) x- o  netlist=""2 i/ a" ]' I. a4 W( V
  minusT=NO$ g7 \1 O# d7 S: m
  useStdCmdOpt=0
, C$ Q0 s4 R( y' n5 S7 T* }  prefix=""
- p7 q9 ~1 n" B; I) d6 }  circuitType=""( w* C( T. f  M6 Z( \
  for opt in $CMDLINE
9 q; b6 A# R- b+ n' Z1 [  do9 H! m. ]$ |3 ^  T: L
    case "$opt" in
4 r2 p# x* l2 a3 Y- F8 f      -T)
1 o+ V. `% c& G+ U        minusT=YES
& j7 T" X$ {1 P. m        ;;
9 H. K- \$ L. d5 ^. k5 }4 J+ y! ?+ ?      -*)
) j( M3 S! g* C- s, V        # using standard powrmill command line6 G' g* J0 Y) ?$ P4 Y
        useStdCmdOpt=1# t1 N4 C5 i' c, j! a4 o& B3 {
        break
( O! V: X2 o1 M* v0 K8 ?8 J! }        ;;% y$ \: ]8 y( _2 \4 L. b3 ~
      *)
6 u! Y# I: H. P       if [ "$minusT" = "YES" ]; then# G/ {( o0 c1 @6 c
         circuitType=$opt9 D- X4 j+ [( J5 S' R9 A
         minusT=NO  # reset flag
3 D7 F6 Q. E0 E# t: M! {       else % |) m2 k+ R, d( x/ s
         if [ "$netlist" = "" ]; then
0 Y% S3 A# X. t6 Q% z& d           prefix=`basename $opt`$ I. K+ Q; t; z9 _2 n* _. n0 V' |
           prefix=`expr $prefix : '\([^.]*\)\..*' \| $prefix`" w2 j* ?9 t7 ?4 H3 Y9 [
         fi
0 i5 ?& W9 u6 g5 f         netlist="$netlist $opt"
3 k! r; p+ n1 _2 U       fi
# g: v  d- E. E0 W5 y: q       ;;% p  U% @# f2 S4 ]! b0 a2 g
    esac  l  I8 H; g0 k# B3 a, j3 j. P
  done* W- `6 X$ {2 |0 i. \3 b/ L( `

- I  J3 M+ u( y: O6 O- T) j( x1 C6 E0 I9 K: _; U7 s# k/ Y( `& G
  if [ $useStdCmdOpt -eq 1 ]; then
2 p+ p6 N; x7 ]+ V$ m; k    # use standard powrmill/timemill command option
* y$ w+ u( y( ^    for opt in $CMDLINE
$ i* R3 ]' W' ?  O# l    do9 A; E- T& [7 ?( d, S
      case "$opt" in
- R, o5 p2 u0 z  k2 s        -A)
! Y* r9 a& P/ t  T            DB_REAL=1
: Y1 c2 z8 N* a6 w            ;;: J( i4 d# |- K) i( ]8 D0 [5 w$ L
      esac
: e+ O0 f4 o! G8 _) S    done
4 J, n/ y% }5 L8 a: h    if [ "$netlist" != "" ]; then% Z' r, ?6 O: k1 G
      CMDLINE="-nspice $CMDLINE"
9 a) g% M7 u2 W) B" j    fi
% D1 l! G% J: ~) W. x% }  else) @( M3 d6 h( X& ]2 |  I
    if [ "$netlist" != "" ]; then
! Y9 l, O+ ^) s      EPIC_DEFAULT_CFG_DIR=${EPIC_DEFAULT_CFG_DIR:-"$EPIC_AUXX/etc/$cmd"}& e) M: b0 o! a. i7 x) O. l
      # construct new command option* C9 b1 E3 g7 s; a+ D0 b
      if [ -f $cmd.ini  -a  "$circuitType" = "" ]; then
/ ^2 x" Z# Y9 e+ Z1 E        CMDLINE="-nspice $cmd.ini $netlist"4 B/ i3 q) E* y5 H+ T2 p
      else$ p9 M6 y* n) Y- f: m
        if [ "$circuitType" = "" ]; then
  ^- p: t# X0 ]7 ^9 d* l          circuitType="msana"
- d4 |; M+ B. A) Q, }6 b6 Z8 f! U2 d        fi6 S1 K' t1 M, }' |% Z, c0 p
        CMDLINE="-nspice $netlist -c $EPIC_DEFAULT_CFG_DIR/$circuitType.cfg"
+ C" e1 f0 O; M' q      fi4 ?. x! h" {+ p. ?$ b0 X
      CMDLINE="$CMDLINE -A -o $prefix"
' `, H' H% h  t7 D# N      DB_REAL=1
7 e3 _1 F* c, \0 `. R$ B2 J( S      echo $cmd $CMDLINE
. C  h" F: W' r- R8 H: e- G    fi
& s1 M! y. s7 `  fi
! S% }! ]* `, Z$ w7 h1 Q2 ifi # cmd is timemill or powrmill or nanosim or railmill or pwarc% ~. \' ]; C. z

  C! M. K/ g8 d( N1 a8 F" U2 R[ "$HAVE_DP" = "YES" ] && [ -x "${command}_a" ] && command=$command"_a"0 _8 p! U6 q' `9 }' G
[ "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a" ] && command=$command"_a"- V" \% O! P3 K
[ "$USE_ACE" = "YES" -a "$vlog_design" != "" -a -x "${command}_v" ] && command=$command"_v"8 p- V% e+ K* n* N0 A
! h# q" v2 S- U  ?5 @; w/ e
if [ "$__engine_wrapper_called__" != "Indeed" ]; then
9 ~3 ?4 U0 K+ o/ A9 w* u    __engine_wrapper_called__=Indeed
) c8 }' e  l( f3 G! |    if [ "$cmd" != "amps" ]; then9 y' I8 d1 B& W% W: c) E- u8 B
        export __engine_wrapper_called__; @& o3 }2 K; s& n: }
    fi
* T$ X" S8 w, b- f, y( q- |0 u
, k4 ~6 A8 t9 K8 \    trap "cleanup" 0
  a) s" u& \' b4 a    trap "" 2
+ D+ F* u6 [" N" d5 |) ^# _
$ N4 _3 `6 H( ^* A. J" i8 x* B    [ -d "$rundir" ] && rm -fr $rundir
/ w+ J0 f2 [7 j+ u/ P    [ -d "$rundir" ] || mkdir $rundir! v  r9 C$ i2 V2 U# ?' P. \
, h& C9 L- T) f, M8 Z
    case "$EPIC_ARCH" in
8 d- C) _: P, H- L/ ~" [' ]9 r6 y    *SUN*64)   : @' p, M3 q' A3 A/ O# D# G" r0 ~
        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH", F+ C8 c& K( F2 X# s- Y9 b# }
        export LD_LIBRARY_PATH3 Z8 |" o6 i  Q. K' O
        suffix=.so
9 [! E# K0 Z. l# I$ L6 D0 z: f        ld_err_code=127
  N) ~6 N. C9 E: Y7 }        ;;5 b% q( y, U2 n7 R
    *SUN*4)   0 ?1 V3 v7 k% p1 v3 k
        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"
0 a% W; f% ^$ H* i, r        export LD_LIBRARY_PATH
5 j' b* o2 E8 ^% e' U' z        suffix=.so.1.04 r9 t9 |7 _, S2 q; `8 N$ s9 S
        ld_err_code=1271 B! m0 N; i; d: B; J
        ;;3 L. l) C+ [3 C
    *SUN*5)   
2 z" l$ h+ S" @; H, B* o        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"4 w# h; I- l- B4 w( T# P) c
        export LD_LIBRARY_PATH
- J1 v4 ]7 V* I+ k2 J        suffix=.so2 M9 x! D1 q4 ^8 q/ r9 H4 \  F
        ld_err_code=127
/ ]' S, ]) E6 l8 A        ;;
% z# k  y4 `7 e. J4 \    x86sol*)   7 n; n6 W0 f7 [. s
        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"
7 ^- s: @, w% W6 J        export LD_LIBRARY_PATH; [$ G8 o& Z5 c
        suffix=.so3 J* @" P" l$ g$ Z0 g
        ld_err_code=127' i& F  @* y8 F5 v& M  [* p% ?
        ;;! E2 O! j& Q- e$ C1 t7 c% a% H1 T
    *AIX* | aix64)   
$ l4 U6 O" G  {  w' k4 i        # When genepiclib creates shared objects, it creates a import file and / t7 j9 i* Y# o3 g
        # uses timemill as program. So at exec time,program timemill is needed 7 p" d# d- U# u+ `
        # in LIBPATH
9 H( h; E& ^( j) ~5 D        $ln_default $command $rundir/foomill
9 e( j2 h  @1 i5 }1 j# i+ c- g7 J        LIBPATH="$libpathLIBPATH:/lib:/usr/lib"* b4 t7 ~  e3 N4 {7 X, e- k7 Y# v
        export LIBPATH
8 \1 t) w2 t& R" d/ j: S        suffix=.o
" |% V" _: r+ O. f5 T; P        ld_err_code=8. ^& X/ @+ V' v0 |* o
        if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then8 w" I0 x. ^  q# U& U6 R0 R# }5 B
          tdir=`echo "/tmp/d"$$`
' Y' Q$ w# _8 S          [ -d "$tdir" ] || mkdir $tdir
  I) Y2 H# \0 a% ~+ d  b          if [ -f $EPIC_DIR/libCustom.o ]; then" ^) y1 k# b. n0 u# j) D2 g: x
             cp $EPIC_DIR/libCustom.o $tdir/
2 S$ Q/ y9 `- p' O             $ln_default $tdir/libCustom.o $rundir/, b6 H8 p4 X' j
          fi6 m2 o/ |* u9 X* H) x
          if [ -f $EPIC_DIR/libModel.o ]; then! P6 r0 P4 b4 w( X$ U& p
             cp $EPIC_DIR/libModel.o $tdir/" Y1 i/ a) d3 ?3 l3 U
             $ln_default $tdir/libModel.o $rundir/; Q! w- ?' w. O- [1 u
          fi( S% \7 b' r4 c2 z* |
          if [ -f $EPIC_DIR/libFuncModel.o ]; then
- N: J* y; @. E% C/ |2 S& g             cp $EPIC_DIR/libFuncModel.o $tdir/
2 t& h' I0 M( q, E' m             $ln_default $tdir/libFuncModel.o $rundir/
9 q% i) _3 L5 @  e2 ]          fi
0 z* f" I- S+ A$ a. N# A          if [ -f $EPIC_DIR/libFuncModel.34.o ]; then' T" Z  g. a9 K, J: z2 `6 T) i0 ^
             cp $EPIC_DIR/libFuncModel.34.o $tdir/
$ j( n7 y; ~# n             $ln_default $tdir/libFuncModel.34.o $rundir/
, L+ b( [$ v0 T6 F7 Y          fi
) x8 r! u) ~- z' \5 @        fi
# w+ ^. K& J$ U, K9 C        #Set the IBM flag to enable more shared segids9 M. O0 V& p  V4 s, {
        EXTSHM="ON". ^% a7 s3 t' _: ?( T- \+ c
        export EXTSHM. }8 H5 U5 z: j4 R- W0 q$ v
        ;;7 `4 w+ T( ~$ c6 v4 c0 U
    *LINUX*)   
4 U# ^/ g) }8 O. K+ M' ^4 a        suffix=.so7 s/ x2 q% _! F. [$ U6 q) p8 [
        ld_err_code=19 V% ^6 h& J2 {( ~! ]
        ;;
% u0 a7 P* T4 o$ z( U    *amd64*)
) a5 R; v. y6 C% K9 a        suffix=.so4 e3 [7 T; B% E% B
        ld_err_code=1
% j2 c6 M4 Q- K8 Z        ;;/ o9 X! T0 d' e  a7 n, ?* D( P, S' u
    *suse64*)
" m$ \8 b2 D5 Y        suffix=.so
/ l; K6 u. B  D7 }- z        ld_err_code=1- }( z2 G8 X  K/ `% V+ e+ T
        ;;
' [& O3 c* R1 ^' q$ c6 g    *suse32*)    " ~) F& k0 O2 S$ B/ D3 o
        suffix=.so; R  Z4 k: }0 b* x4 {6 D" n
        ld_err_code=1
2 \! V9 |, o* f3 g, f) E. v! k        ;;
% o' @3 e- U2 r. [3 \$ @) X    esac6 }0 i- g. t9 E
. e/ {; U1 w' V5 k" n) Z# l
    [ "$has_custom" = "YES" ] && ulib="$ulib $cwd/libCustom$suffix"
$ R! c( L8 r9 ?0 ~0 s8 V1 x" S    [ "$cmdname" != "timemill" ] && [ "$cmdname" != "powrmill" ] \3 @9 o2 q! A3 ~# G2 \2 |3 L  U
        && [ "$cmdname" != "nanosim" ] \' N: I8 Z1 n, T1 O
        && [ "$has_model" = "YES" ]  && ulib="$ulib $cwd/libModel$suffix"4 u1 k8 R$ c6 T* l+ V% Q
    [ "$_VA_" = "YES" ] && ulib="$ulib $cwd/libva$suffix"! ^; y  I. Y+ i* `, l1 N( y
5 \* n3 F! Q# a6 j
#Look for command line option for libFuncModel.so
5 M* O/ V( A; h. G; a& o#    user_library_next=02 ^: K; G; K: a) m- @! i
    has_fmlib=""
5 K7 K) x7 \/ R! U5 w, I) j    for opt in $CMDLINE) ?2 A* s8 [, z9 g6 t
    do! P, R7 E# k- w
      case "$opt" in ' r( O2 W' q: D' o; h8 H) H
        -fm)+ _' s  Y+ i' j- |6 p' E: N
            CMDLINE="$CMDLINE $cwd/libModel$suffix"
2 ?4 D7 O7 i! }+ N            ;;
: U/ l: G+ q/ U        -fm_user_lib)
7 N) S; a# X6 c: Q7 @* `            has_fmlib="YES") o: B3 m! J# B, T8 z! L  _
#            user_library_next=10 a+ U# W; R* B
            ;;
/ `9 }1 l$ ~: n5 o4 ^( q$ D1 K* y        -xc) 0 M7 J0 o1 j9 Y' S7 T
            if [ "$EXTRA_CAPACITY" = "NO" ]; then
1 H* G3 b2 S' |+ o1 u            EXTRA_CAPACITY=YES
2 {3 ?) j  S/ Z1 \            fi
) R/ d5 F1 k. @* ^* E            ;;; g1 W% [- ]0 {- ^* h: d' U7 O
#        *), y6 v1 z. K  m) X5 I) N! t
#            if [ $user_library_next -eq 1 ]; then) h: @% ?6 K1 O* u" {1 b6 b
#                if [ -f "$opt" ]; then
4 c& y: L) b/ L% D. ~#                    libfmodel=$opt7 O0 e" h+ Z* X5 _' C9 a( n3 s: \
#                else+ F4 v& i  r: ]& l0 ^4 z
#                    echo "-fm_user_lib: Specified file not found"% V1 O3 K6 ~* T) C& k3 ^% u1 r/ T
#                    echo "-fm_user_lib: Specified file not found" >> .epicscriptmessages
! }* O' F  j1 G#                fi
. G0 ~5 Q# m4 l+ E% {( J8 R#                user_library_next=0
8 _# _0 e4 }) a3 _7 @#            fi9 l  N; Q0 R$ H8 d- y
#            ;;
, N) D$ Q! h- U2 f( R! B2 M        esac3 x; C) i: z; Z( x$ l: x/ T
    done
1 [+ A+ a) c$ @* f3 T4 z$ @; I, Q; a- T. R  z) d! D( Y
    if [ $cmdname = "timemill" -o $cmdname = "powrmill" -o $cmdname = "nanosim" ]; then# l! ]& T2 I4 T! g; k
        flib=""
2 i7 x& A9 O1 T. V        if [ "$has_fmlib" = "" ]; then* ~5 x3 P1 s- L. \
            flib="$flib `get_epicrc ./.epicrc user_libraries`"+ Q$ M( A2 T& D) v% [  L
            flib="$flib `get_epicrc $HOME/.epicrc user_libraries`": L" I5 r: V0 [- M7 R
            flib="$flib `get_epicrc $EPIC_DIR/.epicrc user_libraries`"$ g: x7 k# b9 g& W
        fi& \( e% x) u% T5 W* D8 {7 q& b
    fi8 h5 L6 E5 i$ u5 o; L+ \

8 G1 w8 y2 k8 G' [   for i in $ulib- u* u$ ^6 a7 a2 l7 d1 n. X
   do- d) b8 u" E* p( e2 W" R* K
       [ ! -f "$i" ] && continue' n( N3 h3 L- C+ W
       dir=`dirname $i`; cd $dir; dir=`pwd`; cd $cwd
, }: B1 [7 ?5 Q/ A       i="$dir/`basename $i`"
6 X7 a6 d3 [2 S4 ^" U4 r       case "$i" in
6 Q! g$ J/ N% X( p+ p: j, `+ |       *libCustom$suffix*)    [ "$libcustom" = "" ] && libcustom=$i;;
6 i& E( b5 K; ~1 L  H/ {% C# t: q       *libFuncModel$suffix*) [ "$libfmodel" = "" ] && libfmodel=$i;;- T$ Z) T( r6 T  O
       *libModel$suffix*)     [ "$libmodel"  = "" ] && libmodel=$i;;
' \% S  t1 w( A( T! B/ S0 j       *libva$suffix)         [ "$libva"     = "" ] && libva=$i;;: }2 N4 d2 Y9 R  P3 w
       esac" n6 b2 w, l9 P& t
       [ "$libcustom" != "" -a "$libfmodel" != "" -a "$libmodel" != "" ] \
5 [* \1 W  F  j7 Z4 L8 x        && break
! e2 O% E( e4 l   done
6 N6 S5 W5 _- q- C. \1 D+ B: ]1 X7 t
   # symbolic link shared libraries to .epicrun$$
6 [! Y+ V2 G' C* z/ r) h    cd $EPIC_DIR; epicdir=`pwd`; cd $cwd& p/ @: ]! ~! r1 F2 C' k- _( D
    if [ $cmdname != "timemill" -a $cmdname != "powrmill" -a $cmdname != "nanosim" ]; then
/ c$ |- u5 q- }5 Q        if [ "$libfmodel" != "" ]; then
" I' ~, r* }/ o# ^6 d             [ "$libfmodel" != "$epicdir/libFuncModel$suffix" ] && \+ ]+ L3 A+ |) O/ r, l+ M) a
             echo "Using $libfmodel ..."  && \  c' {' T/ r( T
             echo "Using $libfmodel ..." >>  $EPIC_SCRIPT_MESSAGES_FILE
  ?! B8 E* }' R; h* R             if [ -f $rundir/libFuncModel$suffix ]; then" g* w; L5 @1 b4 o
               rm $rundir/libFuncModel$suffix1 [  [5 H/ s; R' S8 a! b  e; x/ K
             fi
. V; ~  E" v* R* F/ [$ ]             $ln_default $libfmodel $rundir % m& M4 E8 g# j" b- A' ?. k
        fi
7 D) h# B% v+ D        if [ "$libmodel" != "" ]; then
9 Q# f( i* R  ^0 l+ J             [ "$libmodel" != "$epicdir/libModel$suffix" ] && \) M2 A) [2 G# E& R3 w, W' y
             echo "Using $libmodel ..." && \
! g$ X9 A; |; v% B1 u             echo "Using $libmodel ..." >>  $EPIC_SCRIPT_MESSAGES_FILE4 {5 s  b! b! @" A
             if [ -f $rundir/libModel$suffix ]; then0 P2 U! g# O) _  u( W+ }
               rm $rundir/libModel$suffix
% b9 {4 W5 t! f* `4 t" b             fi& H3 r9 j! m; ]5 [7 |
             $ln_default $libmodel $rundir
4 K4 m( ^  w4 [3 t7 c. p7 M        fi
2 A" F) l( J1 N7 u6 {/ [0 G+ y( E   fi" e, M" N2 k" J
   if [ "$libcustom" != "" ]; then
6 P6 K- [7 d6 x& ~# T        [ "$libcustom" != "$epicdir/libCustom$suffix" ] && \2 M9 W2 ?9 ^$ }$ ^: ^
        echo "Using $libcustom ..."4 v% i, A; g) b$ u8 `$ D0 j- i
        if [ -f $rundir/libCustom$suffix ]; then3 Y7 Q6 X. d) d9 S
          rm $rundir/libCustom$suffix
/ f6 Y6 v- S" k0 t# R9 J! j2 T        fi
/ d* E2 u( y, m+ t        $ln_default $libcustom $rundir
6 s$ e2 V* w# d8 X" I   fi3 t7 `) h6 u5 Y7 g; P

" E- a  i5 P& f$ C2 {4 J4 {+ t9 m( |  o* j   if [ "$flib" != "" -a "$flib" != "   " ]; then3 g* L' B! n+ P
        CMDLINE="$CMDLINE -fm_user_lib $flib"
- p/ C* H3 y8 d+ m0 ^+ |* o% J   fi
: N& Q% v. i, C; K" ^+ W
) \# }6 J4 A6 X% r; t8 ^* W7 O   if [ "$libva" != "" ]; then6 O: Y1 g2 t! h+ G) _
        if [ -f $rundir/libva$suffix ]; then
$ x7 |+ b' W' H          rm $rundir/libva$suffix' u& L+ M' J4 n! c
        fi
* O2 W& a" C( R        $ln_default $libva $rundir
! m8 k" E/ o! N' @   fi
/ [  P. Z) ?9 B' ~5 }, B# X- J; G: U, p4 `" s6 I: |

( N3 f+ R5 X3 L+ \7 m    # VCORE design library
# C6 {1 O) T: u! ]. C6 _0 S    if [ "$vlog_design" != "" ]; then
0 F) M! M/ X! N. a! n( e3 z8 q        $ln_default $cwd/$vlog_design $rundir/`basename $vlog_design`; ]  d0 \) ~; n
    fi% l) P, o4 w4 C* `" e1 {: J

0 D6 E- G/ v% d# l. E+ w    if [ "$EPIC_EXTRA_CAPACITY" = "1" ]; then  c2 W4 T# n$ p8 |- A- h5 p. y) I: r+ E
        EXTRA_CAPACITY=YES  t* n9 r3 f2 z
    fi
5 \8 W! L# w; x- A, I( d: \7 Y* i6 D9 \+ f8 d& ?- t
    [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "0" -a -x "${command}_xc" ] && command=$command"_xc"5 w. N! n- d) q' |
    [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a_xc" ] && command=$command"_a_xc"6 \6 R* E2 t7 `3 V& i+ M5 k
    #Create temp file if dual process is on6 L% u/ A' W8 i5 o$ P/ n
    if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" ]; then
" z) Y* \" `+ c        if [ "$EXTRA_CAPACITY" = "YES" ]; then
4 w) p& G8 t2 \1 N            touch $rundir/rpcidfile3 O% U% {- F+ M% d
        fi% E) `+ c8 ^0 a* z
    fi
& j/ u/ c4 h2 K2 ^6 f0 A# T3 H! t; hfi
  N: S% q; N: n
5 g: T& ^& U7 qrun_cmd()
  z6 _3 b2 g/ r, A+ p" j{
; K2 `( V7 {* \% }* M  command=$1
# w4 S3 N/ ]. `* m  shift
  r5 o9 g2 q5 N; K( e2 @; {" C# @2 [9 O  S# O) N* P0 g
  if [ x"$VA_FILE" != x"" ] ; then; p( V2 @' U4 f1 X6 `- k
     cmdline=$ARGV* U8 @% m% ~% [# L
  else
: B9 J" N1 _" w! A& k     cmdline=$@  L0 n; F5 s# A. }, ]- r' {# N  e6 U, n. z
  fi
) q+ d' P, ?6 F; `9 Z/ q% I9 e* K5 b9 `
  debug=${DEBUGGER:+"$DEBUGGER $command"};
1 K1 ?1 H$ w" ]0 C  B1 X" S, X) `- f# {8 @% H4 C* g* j( X
  # To disable Exec-shield-randomize in RHEL3 U3+ when running nanosim and nanosim_a
# i5 b( D) ^2 J& J4 X  # so save-restore may work.
. l/ o8 r) g) J" l; [- p  setarchStr=
/ \7 K* A# ^- ]$ J8 V& E  cmd2run=`basename $command`
" I& r5 y) ?- _; R2 |$ K  if [ ${cmd2run} = 'nanosim' -o ${cmd2run} = 'nanosim_a' -o ${cmd2run} = 'powrmill' -o ${cmd2run} = 'timemill' ]; then. @" A. o: P, X7 B3 x) ?" k
    if [ "$EPIC_ARCH" = "IBMPC_LINUX_LINUX" ]; then" s/ T% h7 M6 h& b3 U3 U
      setarchStr="setarch i386 -R "
# e# x# D- D* h2 C    fi$ k- s+ E# ?% F" s5 J
    if [ "$EPIC_ARCH" = "linux" ]; then
9 i' }5 r& p8 K) g5 X      setarchStr="setarch i386 -R "5 Z8 s5 }, M0 e9 j
    fi( C3 D! {' F2 @# T, \
    if [ "$EPIC_ARCH" = "amd64" ]; then
# N# a* \' @4 \9 B4 g& N      setarchStr="setarch i686 -R "
6 G$ m! y9 f& C, f* R3 [; ]/ X) y& g    fi$ o1 G2 M5 `7 R5 ]- O& U/ m5 p: e
    if [ "$EPIC_ARCH" = "suse32" ]; then+ N3 G5 H/ e6 Z  p* S
      setarchStr="setarch_suse i386 -R ", Y5 i! T4 ?: ?9 Z6 s1 m
    fi
9 y# v) x/ U# L1 o* ^    if [ "$EPIC_ARCH" = "suse64" ]; then4 c& P; N) e! i# H+ |* x6 K; R
      setarchStr="setarch_suse i686 -R "3 F. h1 z& b: S8 u* ~
    fi
6 G7 {* N# h4 W0 x( d  fi8 U: b$ i6 j; S5 ]# Z+ V9 w: n7 M& _

1 D( F' V9 z  l5 D8 q8 j  ret_stat=04 f% M) E% r+ ?$ D
  if [ -x "$command" ]; then
: O9 y2 p* |( H      if [ "$debug" ]; then- ~3 w/ D+ j5 l2 x6 ?
        _debug_args_=$cmdline
$ {( @& p: Y! w- L        . .epic-debug
1 _3 y6 @5 w3 E: x9 L2 n9 z8 O( }/ [      else
" S4 t$ H: I' ^+ ^# H        DEBUGGER=; export DEBUGGER) K9 ~4 D# o! o1 V3 c
        $setarchStr $command $cmdline7 \0 g5 M0 W+ n* V) Z
      fi
5 }* c2 L" z0 D  v4 h& H0 L      ret_stat=$?: D8 \' ~  P- z/ x" ~5 w* J, ~. H
  else
4 b3 a1 Z. ~, b4 r: @; u    echo "Corrupt installation, executable \"$1\" not found!"8 s9 G( \' W, I) D
    ret_stat=1
; ?2 c# H8 {9 _: u  fi) ^; ~( @  T/ p+ q4 K2 t5 x5 i  p
}) }3 w# I" g: i- z7 P3 y

9 W/ b! r: ?9 C3 z# N6 U% U# keep runing cmd if ctrl file exist
- c' s& ?$ V* [: e' Z4 m) ?' D/ D) E3 v7 {( b
run_loop(), s+ \& D# V. C+ n& z
{
& a% T: n/ \7 L2 f- a. C  command=$1
+ `2 s8 \5 x) W  shift- o. |* y$ \4 }/ Q/ _

8 w6 t) I7 q% E0 R. S1 p3 y  if [ x"$VA_FILE" != x"" ] ; then
# ]' Y0 {% [5 T! O/ T     cmdline=$ARGV; ^, a* N, x9 P
  else0 T8 i8 H3 d; s) v
     cmdline=$@
, ]0 G  Y8 Z! [( A  fi
/ g* s, Y' C: z
* ~5 ]# ~( m" y  while [ $ret_stat -eq 0 -a -r $LOOP_CTRL_FILE$$ ]; do
' J& J5 k' R/ s    . $LOOP_CTRL_FILE$$
" M! l$ @" f1 u  q2 p: _1 Z( W    run_cmd $command $cmdline -banner 28 M$ b5 e+ q& f# F- l9 N
  done;
/ v6 G+ G  g8 l% O9 f# T
1 \3 V, Z/ U# k1 c# Y  if [ $ret_stat -ne 0 -a -r $LOOP_CTRL_FILE$$ ]; then
8 q0 Y) e" z0 h$ o) P' p8 j7 X    rm -f $LOOP_CTRL_FILE$$
. U) V% C# p* ~9 N/ F' ^/ `  fi
2 @. U" I* N$ L+ M. q+ K( w}; q8 m9 [* x1 J: M. |7 X

, q  R4 y6 i+ nhar_check_ret_stat()
2 t9 \3 j& q5 U. z0 T{
* o5 x$ v8 U" C3 d+ f; J  if [ $ret_stat -ne 0 ]; then 1 X) e+ C; p7 F  {
    echo "Simulator returned with non-zero exit status. Stopping.": g. _/ }( U# w" ^
    exit 1# {" J0 }. W! m* I$ r  K2 v7 v
  fi
; x2 Q9 @; R- g% e, T}
, F0 H! N; z; u  r' j/ c$ w5 U# L
#
, z: Z8 ^5 R3 o0 Q% F# set stacksize and datasize limit
3 s! y/ I6 h8 H- l& Z. @/ w#
* B# K0 q# y- \( n% ]
# p% m2 L; v% h9 M, Q9 p7 y) I, g! y7 hset_data_limit2 {% W( U5 s; w. ~% K
set_stack_limit9 B9 V" Y& N- C2 @* J& c
$ A( C0 y! {6 a( K. x8 x+ z  j9 s6 m
#rm -f $LOOP_CTRL_FILE0 x$ O' N' o) n; P" I
, ~$ b1 ^/ t, v4 Y& e! M! v
run_main()5 Q& V  R0 g) J0 a/ H* r! o
{
) \) A% `. J" \4 l8 ?) n3 k  kif [ $is_special_har_run -eq 1 ]; then' i& v: p6 {. }7 O& @. ^
  if [ "$har_ofile_prefix" = "" ]; then
+ x6 z4 l# M7 Y! h    echo "Wrapper bug. Notify Synopsys technical support."
3 q! Y9 j5 U* n. q7 }. y+ Z: x6 w7 @    exit 1. y) x8 L1 R! Q' h+ ^$ t
  fi
; x& [. r; Q. G* E! B9 z8 d# f  if [ "$har_hilo_file" = "" ]; then$ |! x- p$ a# }. u, [2 h
    # no user specified hi lo file - do both runs) m" i) ]  E% V0 o0 v+ k& X9 n
    run_cmd $command $CMDLINE -har_one -har_setup
8 n/ E9 e, e5 M+ O8 `    if [ $ret_stat -ne 126 ]; then" M5 F$ X3 ?2 d) L! G! U
      har_check_ret_stat
3 i; S7 u* F/ G      if [ -r $LOOP_CTRL_FILE$$ ]; then% S) o  i" R2 b5 E7 o
        run_loop $command $CMDLINE -har_one -har_sim ${har_ofile_prefix}.hl
+ ?* V/ y4 o# m- H3 o+ J/ i& K. M        rm -f ${har_ofile_prefix}.hl: c, O4 b. ~* D) R3 g% U) [
      else
! a  h+ M2 R0 q4 q. k4 l        run_cmd $command $CMDLINE -har_one -har_rmhilo -har_sim ${har_ofile_prefix}.hl
* h* O7 t- o" B1 H7 y      fi
5 V, r0 l- D1 f  x* m( e8 b5 d; _  ^    else
% X+ m- o! t# |      ret_stat=0
1 o6 n0 c" y( {% M" x    fi& H5 c; y% U7 S/ k
  else/ |4 m) K  [& ^: j! g' e# j! Z2 F
    # user gave a hi lo file name( Z. x2 q0 G2 E8 J$ z# t( T' G* t
    if [ -f $har_hilo_file -a -s $har_hilo_file ]; then# J1 m0 u: u/ b% g9 p& j% V
      # file exists - use it - only do sim run
; W) A  c% A! Z. x8 J, O      run_cmd $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}# j5 |# V2 B& c3 _& P! [
      run_loop $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}& l+ I5 P2 J/ y* Y* C' |6 |. C- U) R
    else
6 D* o' q! y9 r7 v- M6 k( X      # no such file - generate it - do both runs
, I- P6 U# H, l$ M+ e      run_cmd $command $CMDLINE -har_one -har_fnf -har_setup
$ ~8 }2 |$ B' ~/ }. r. A      if [ $ret_stat -ne 126 ]; then9 u* @- i. N" e+ e3 s7 v& b/ w) G* X
        har_check_ret_stat
& F1 d3 v  U+ w. x! Z$ x; M( T3 p        if [ ! -f ${har_ofile_prefix}.hl ]; then
. {' d+ ?2 A) O( w& \3 F8 b          echo "No hi lo file generated after setup phase. "+ G4 D: Y- g/ R. A& ?9 ~; d
          echo "Contact Synopsys technical support."
- L, h1 o8 i) r, _1 z          exit 1
9 j( G7 C8 C) C        else; U# T) q3 R% m- E( K9 B* r
          if [ ${har_ofile_prefix}.hl != $har_hilo_file ]; then! T9 J+ o( ~$ T7 F! F
            mv ${har_ofile_prefix}.hl $har_hilo_file  m! R9 b* B: v% d0 e1 B
          fi- Z3 N2 |  U- F. ^
        fi+ \+ }# |" z5 F" v  Y
        if [ -r $LOOP_CTRL_FILE$$ ]; then8 n9 j! K  L% i% U  V
          run_loop $command $CMDLINE -har_one -har_sim $har_hilo_file: h, w- Z# Q" K
        else
; y4 N- y/ |% m: M+ k9 g4 x          run_cmd $command $CMDLINE -har_one -har_sim $har_hilo_file9 O" i8 U; B7 n' m# y- i5 |7 a
        fi" H7 w5 p& B1 R
      else " N1 a/ C# ^2 r
        ret_stat=0( p$ T/ ?3 P9 {+ q
      fi
! z9 W8 K/ B: e    fi
. x* g/ p: e) H  fi. a& G/ s+ L7 W4 C, @( e) D
else    f! p* ], P- R. V8 a4 u
# don't loop if -har_setup3 }7 [$ v' Q7 j* F
  if [ $have_har_setup_flag -eq 1 ]; then
" I# X: }& k6 Z' t9 ^. J    run_cmd $command $CMDLINE5 x' T5 {' Q' A
    if [ -r $LOOP_CTRL_FILE$$ ]; then
/ c. v6 u. ]+ k8 c' D& b9 m      rm -f $LOOP_CTRL_FILE$$9 w# m* O/ O4 a" L9 |5 c
    fi
; _: y9 O+ l) j5 s# k1 b  G  W  else$ P3 }. `! _1 z8 G6 }
    run_cmd $command $CMDLINE: l& Y) W: S$ k/ U
    run_loop $command $CMDLINE. r3 d' C& s( |
  fi0 m! d6 ?( ]7 X3 w8 T9 ?
fi
: p% J( Q0 g: T* [/ m+ G7 R) D9 p# G- z* v
if [ $ret_stat -eq 0 -a $cmdname = "powrmill" -a $postgres = "y" -a ! -z "$workDir" ]; then
. E! y4 O2 T, |8 x  pwCreateErrDB -w $workDir -e $errFile
0 v: T) d# ?9 g5 w5 C3 ]  ret_stat=$?) i: s2 m- }- G, M" k
fi
9 W. Z: Y/ z! R}4 S  G' O, T8 M0 ~
2 r4 A# ]- H+ A  M" \4 I' x) g
cleanup_alter()5 Q) q' d( g& P( `! g5 w/ K
{
4 g! X2 ?0 P8 X* h  h5 O2 F6 s   /bin/rm -f $ALTER_COUNT_FILE 1>&2
# f! X; W* M  }. t' I  S   /bin/rm -f $ALTER_HK_FILE 1>&2
/ z8 ?# _, o0 Q* ]5 _2 I! H}! l$ u; p# b" W$ O

2 `7 _6 x/ p; m3 v#generate alter temp files based on pid
: T8 ?9 h' h* A  aALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$
4 T* e' T; b9 `' W! m3 o$ ^0 D* Y6 x- \2 |if [ -f $ALTER_COUNT_FILE ]: b9 K8 W. ]+ W/ H8 v
then ' H, K( k- {6 W8 r
  until [ ! -f $ALTER_COUNT_FILE ]4 o. a6 K5 q. s( y, T. i
  do
' \  b# S( p3 A% r8 e5 Z    ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$
4 x% r: k5 k- t) s5 T9 d- P  done
& E5 R0 Z4 R4 e4 jfi
5 S4 ?  e7 M+ `- xexport ALTER_COUNT_FILE
+ V  ?% h  z4 c( x) N* {, E" \( k: p: s. a- A
ALTER_HK_FILE="$ALTER_HK_FILE"$$4 ?1 b9 Z, J( @$ _5 {# S3 `
if [ -f $ALTER_HK_FILE ]1 Q% w* q5 }3 L
then   Q4 S6 q& {, ^" P8 p
  until [ ! -f $ALTER_HK_FILE ]8 t+ {  L" L+ O7 O  _
  do
( P5 Y1 Y7 p7 e) J! _. k    ALTER_HK_FILE="$ALTER_HK_FILE"$$- f' L' \+ U  v( H
  done
( f$ c$ r. |- bfi
- K* M" [- g' l( _, lexport ALTER_HK_FILE
) [5 `" r  d' J% ^- M) P, t$ f! C( |, o9 [; e- a# c; r( p
#generate monte carlo related temp files based on pid3 g3 Y4 M3 a4 B1 O5 W6 |
cleanup_monte()0 i5 M! s5 Q5 V0 K3 k7 z
{. s- M: y0 l: d0 z/ ~
   /bin/rm -f $MONTE_IMG_FILE 1>&2
* C: r$ v$ Y) q9 N1 L   /bin/rm -f $MONTE_IMG_FILE.gz 1>&2% g! m& t, b0 F3 p& A* O: L6 c+ v
   /bin/rm -f $MONTE_COUNT_FILE 1>&2: A  v. L( a$ C  E
   /bin/rm -f $MONTE_CFG_FILE 1>&2
8 b; _! p( V) y9 z  P5 ~+ S8 a}8 C! [+ J6 R5 ~% `4 K
6 S9 x2 G" L$ e; t- D: ^) u
MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$+ T0 \3 j* _! k- B) W: \: b
if [ -f $MONTE_COUNT_FILE ]
/ U+ N  v% f9 N2 X/ n+ }% uthen
- i5 L; r0 O1 k: e" e& Q! E5 Y$ p  \  until [ ! -f $MONTE_COUNT_FILE ]
' U( X. B( e7 \0 j' h9 m0 q  do
6 R) S  S0 A" ]- d    MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$1 I& m  j: S/ d: \
  done) H0 O) T2 {+ W+ S( B6 D- x
fi2 W/ a  Z( V5 w1 Z/ u2 Q
export MONTE_COUNT_FILE/ B0 Z7 X3 Q! ^

+ b; u! v) Z2 i- c& B$ oMONTE_IMG_FILE="$MONTE_IMG_FILE"$$+ _) g- C+ i+ y5 p! `" x) u6 W; y
if [ -f $MONTE_IMG_FILE ]
, k, C* L7 l( n3 E- H0 L. j5 m& O  Vthen
4 V, B  W: W1 g+ J8 A1 e  until [ ! -f $MONTE_IMG_FILE ]
; v( q4 V9 |; i# K9 z  do5 U- _6 f$ p4 I9 w; H9 C! d* O
    MONTE_IMG_FILE="$MONTE_IMG_FILE"$$3 ~+ {! k8 _* f$ V2 a) X
  done. ?8 p. O' X( i* Q; |
fi
7 |( @- o$ a; y; jexport MONTE_IMG_FILE- h2 B# E1 _& t& O9 }0 y; K

" r8 U. ^. Z+ I( W# aMONTE_CFG_FILE="$MONTE_CFG_FILE"$$/ O4 i* V/ W0 l/ p! Y0 I
if [ -f $MONTE_CFG_FILE ]( N# W- S, K0 i$ v: E) l" b
then  f  }6 n1 W( b6 Q
  until [ ! -f $MONTE_CFG_FILE ]4 Q3 S0 j6 F/ O' G) B6 y
  do
8 F4 g- ?; o1 e# _/ O    MONTE_CFG_FILE="$MONTE_CFG_FILE"$$
+ S% J) d2 _% i) u7 `  done
4 G' |7 K# I$ k: a8 G0 zfi: A$ X; i; D* W* b* s" j$ \" B3 Q
- j- ?1 `) r( d9 [* A) u
# main iteration, ]9 S+ L4 C; T4 W
run_main
; o2 C' Z1 x% D2 f) M) d" K% h& d0 v  x8 W. @
if [ $ret_stat -ne 0 ] ; J9 ^4 U! n1 E' y4 |' K
then
8 [' M. C  y1 `% \2 C  [  cleanup_alter
" B# p4 v6 e5 v1 I- V# B1 {& @  cleanup_monte
) O$ j: ?! E0 _2 d0 k  Exit $ret_stat+ E8 D% A+ f! l) _& t" P
fi
! p* X+ i. K  O) g* `9 k) R7 j" I9 f! A5 J6 f# t7 D$ u
#Alter related iterations
: A  W, I1 W' U# Q
, Y) q" h. M. J, ?! }4 W( N( v, O/ oiterations=0
; ~+ N# Q8 T. f  G  Q* M6 |8 }count=0
+ L8 C( G! y; Lif test -s "$ALTER_COUNT_FILE"8 q- M2 @/ T* D
then+ O$ F0 O2 Y. b
  if [ -r $ALTER_COUNT_FILE ]; then" {: @. j' g$ U( k$ c
   exec 7< $ALTER_COUNT_FILE
! n% U$ M/ y7 {) r   read iterations <&7% \! n1 S# a: O
fi
/ W' H- W  ^+ _2 @fi
6 k# G2 v( p# w5 r1 w+ E
. u% M$ F' [9 ^trap 'echo Program Interrupt; cleanup_alter; exit 1'  23 {% D  v0 m$ F$ O7 [3 _
while [ $count -lt $iterations ]' _" P  H3 ?- D" g* B, P5 n
do* U# C4 M2 W2 x' d2 V5 E/ `
count=`expr $count + 1`
, K0 q" ~% F# f2 T ALTER_COUNT=$count) _$ M' N* z; N& {# L' ~. P
export ALTER_COUNT
* x0 L4 t4 K+ s9 n1 t3 o4 N: Z, g, s. O! F/ t: l
run_main
, h* Z% v3 f+ [/ ?8 W$ [, v1 B* U9 }9 k
done2 i" z( @0 q4 A' d$ s/ g* a: K

! K; [& j# G2 @7 s; Z#Monte carlo related iterations$ p- G9 V4 T1 M
  d) \5 T. z( P# S$ n3 S# E2 A
monte_runtime_summary()
9 j) N& }$ `* I; _6 f# m7 X6 d' E{
; V# Z6 l& m4 m0 }  keyword_1=real' [# U/ Y( [  R' D  U
  keyword_2=user) F0 x3 L" ?3 l. k: f! V  W
  keyword_3=sys6 m# P5 k1 p- m0 ?% @
  ofile_prefix=nanosim
! ^) [$ I* p% l9 y3 J8 U) G1 `
  if [ ! -z "$o_option" ]; then& Z$ ~% \) `* L
    logfile=${o_option}.log* @$ A$ U  M$ [; G3 b
  else
  E4 X8 g) z- I: W3 @9 ?    logfile=${ofile_prefix}.log
- a" H5 Q% j+ c/ U5 ]  fi+ G. g' y- S# k
* @8 B$ N) f0 O' m& p8 o- T
  if [ -f $logfile ]; then$ I; Z$ u, B) g3 m" S+ f4 b
    echo "*** Monte Carlo Total Run Time Summary ***" >> $logfile      
& e: l1 K' n9 m/ a" _/ S( s$ [% \    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
+ b# A8 b$ v4 I& S5 A7 b7 U  fi
8 {. d8 x; ]8 N! S}
' U9 B+ Q( q% k6 N' k4 \' \" V
/ @) R$ v# x' k7 q/ B4 knext_monte=0) v# E- ?3 S$ N
cur_monte=0
- A# N1 D# Z$ I0 o8 O/ c9 c* l' _6 G7 j
if test -s "$MONTE_COUNT_FILE"
/ D8 K2 y& c% H0 ithen  p( z8 F3 Y2 q( \* O% V8 f& g, J& H
  if [ -r $MONTE_COUNT_FILE ]; then
. v, c( W7 y6 o; U' k2 v/ D   exec 8< $MONTE_COUNT_FILE1 s3 D8 n4 y& u% J
   read next_monte <&8
4 h5 c3 j$ x, S% ^  fi: s/ J: n$ w$ Q) E: D
fi
9 z& b6 T3 l# B, y+ B+ U% c1 l- ]4 e2 }+ d3 R8 t$ J" O- l: B3 v
trap 'echo Program Interrupt; cleanup_monte; exit 1'  23 o8 O+ E( I( K
while [ $next_monte -gt 0 -a $next_monte != $cur_monte ]
9 F' `: \7 Z: y' ]2 B8 r- Cdo. C# c5 X; C' c5 P8 K
  NS_CURRENT_MONTE_COUNT=$next_monte
' p1 g. C* u5 A/ v' S. q7 q  d0 o  export NS_CURRENT_MONTE_COUNT- z( v6 l1 j$ d. m8 P, @

% \6 B1 H. P) X4 ]3 y* X  echo "restore_ckt_state save_file=$MONTE_IMG_FILE" > $MONTE_CFG_FILE! X. o0 p9 R' G0 [5 H1 v5 f
  CMDLINE="$CMDLINE -c $MONTE_CFG_FILE": e4 y5 X1 X) b3 l7 [
  run_main
8 O% T; F5 n9 g5 B2 B5 \6 ^% |1 k+ B1 F" I8 {+ x% f) ~) a  v
  cur_monte=$next_monte
9 [& ?* n" N1 V. r8 |9 ^- R8 F  exec 8< $MONTE_COUNT_FILE: {8 ^2 C( T& p8 O
  read next_monte <&8" |% t+ G' E0 D
done
  ^- B3 l+ Y- q' E2 D2 Y5 _' k4 ~4 F% p* Z& m: B4 a0 M  o4 Q
if [ -f $MONTE_COUNT_FILE ]
" i) i6 k4 K; x' v* s, U" d# {& sthen
: _+ b. L. U9 |6 z* w  monte_runtime_summary* f- Z$ y" S! }! o5 F4 T
fi7 U) w4 \& X0 w# Z

$ D& L" G* C, {9 Ecleanup_alter5 i& A$ ]" E5 ^& M. e# }
cleanup_monte
, U" L& f( ~9 D+ a
/ y" a( h  k2 y1 LExit $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-8 11:04 PM , Processed in 0.135008 second(s), 15 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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