Chip123 科技應用創新平台

標題: 版本ubuntu 11.10 軟體nanosim 無法執行錯誤? [打印本頁]

作者: leaf1989    時間: 2012-5-6 01:58 PM
標題: 版本ubuntu 11.10 軟體nanosim 無法執行錯誤?
各位大大好:' {6 g8 w1 n' a* I/ q
                      小弟執行nanosim時,卻無法跑出視窗來,有個錯誤可是我不清楚該如何解決?問題如下! w2 ?" s# Q5 C* P9 p6 r
                      [: 113: 64: unexpected operator4 T# H; o! I+ G( z
/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim: 1: Syntax error: Unterminated quoted string
# |7 J( V  o3 D' c有大大遇過這方面的問題或是指導我方向去解決, 謝謝.
- r# I: k) E: R我在猜可能是這個檔案內的文字需要修改 但不知道該如何修改?$ p. j3 v5 Y0 g* [6 ~8 G
以下為/opt/EDA/nanosim/cur/linux/ns/bin//scripts/nanosim 的檔案內容:
- g) b* w. u" V5 U    #!/bin/sh# n7 C  [4 w2 r1 o
#+ g) U# k3 \* d
# Copyright (C) 2001 Synopsys INC6 w' D9 s; f$ L' F. E$ L4 |4 z
# EPIC Dynamic Simulation Wrapper (DSW)
* J% a, p9 _3 K#  I7 [& M( N" K  _, k5 R
eval ${DBG_EPIC_WRAPPER:+"set -x"}
" z9 v' ?$ Z1 C' r6 v5 M$ h3 J! A0 g, j: c# y  r
if [ "$EPIC_WRAPPER_DVLP" = "" ]; then/ X7 _- n5 P1 _+ w, j; Q3 g# v
    TEMP_ARCH="$SES_ARCH"0 K9 Z. t- d! f5 h
else# h  L( d2 Y! {
    TEMP_ARCH="$EPIC_ARCH"# P" i; s. [1 R  y1 O0 y, Z' v
fi
. k0 E( W& n: S2 t4 M+ U; o& `5 x4 a5 E2 V: j6 T! O5 N
scan_for_hva_args(); R" V! z3 V, v8 O
{
# }6 X# a4 k. R/ @. W: b+ l6 }  /bin/rm -f hva.init 1>&29 o+ `  s  P8 F" ?( x* Y
  while [ $# -gt 0 ]; do
' h9 Y& E; }0 T* a+ N    case "$1" in
7 J9 t0 \8 a7 ~4 _# H/ N9 n      -vaf)
' {: c9 ~+ y# _# A4 P           have_vaf_flag=1
6 l3 R' j9 y$ p# E           have_va_flag=0
6 g- s: o/ S( b4 b* O5 Z4 f           shift;" z9 p  a9 ^8 c9 m" v8 O
           continue;
' N6 `- e$ @9 D% X+ ^9 p        ;;7 z. F4 W/ B# E" X
      -va)' J* b' Q2 s; K5 b
           have_va_flag=1
/ X; ^' J- O- @* Q3 m( `* v0 r' c           have_vaf_flag=0$ k4 J( e" w! ]3 k+ p0 u
           shift;
+ W3 W8 f0 R7 I7 y5 n# A           continue;
/ T: J( @) w4 H8 a6 m  E        ;;
. ?4 n) V( `. _" n$ H1 V* y      -*)
( v& w, g8 S% i2 [6 c           ARGV="$ARGV $1"
' \4 B& }: s' v! L           have_va_flag=0
% h2 m5 D1 J/ A9 U* g0 @: V  a           have_vaf_flag=0
$ U: R! ^# @+ d( v% R: M( T: H           shift;9 a9 l" e6 Z* B) e3 @
           continue;
8 J1 A0 B% a& _* |7 s& `: [        ;;+ P1 \+ N; L, t5 @- n7 {, s+ h
      *)6 _  b$ ~* p9 t4 N3 [
           if [ x"$have_va_flag" = x"1" ] ; then
1 O: Q* i; G/ H# ~+ |( L" l# f              VA_FILE="$VA_FILE $1"# T6 }8 J, t" [8 M; q5 U7 T9 H
           elif [ x"$have_vaf_flag" = x"1" ] ; then
" O7 x$ \1 D* G% ]3 u" F; h              X="`cat $1 | sed -e '/\;/d;`"# {1 U2 k. N; M( m+ I/ D; O/ ]( ?
              for token in ${X}; do
: ^) ?! w% s& |' H7 ~                 VA_FILE="$VA_FILE $token"1 H8 o% f- [3 P6 z/ t8 `
              done 0 E* x3 T6 E9 x1 e$ l# K6 {
           else
! K+ C, m+ i( ^/ s              ARGV="$ARGV $1"
1 w* _6 z4 z5 e6 f0 y6 g" b           fi
. \" R: R+ a* l- i; r# J$ l           shift;( M: X0 C7 T/ U9 j& ]8 b; r
        ;;
% C! E, U, c6 k5 _' Z0 m8 g    esac
4 v; ^( {( d+ D) w" f) g* ^  done2 f- W2 M/ @- S7 Z  M: V

+ k3 ]. x: i8 |  if [ x"$VA_FILE" != x"" ] ; then
2 y8 ?/ i8 g$ \) t  P##     /bin/echo " xxx ARGV $ARGV"" f. `% P, l7 o( h
       /bin/echo "choose nanosim $ARGV ;" > hva.init
9 r6 J' b& |3 v       echo vcs +ad=hva.init $VA_FILE -o simv
7 ~& {% X  }* o$ p0 `+ R       vcs +ad=hva.init $VA_FILE -o simv0 _. r3 E# A; P! H
       exe_status=$?9 g# P: C, _5 x' D. f
       if [ $exe_status != 100 ]; then
2 G5 u1 U  S6 E( @          /bin/echo ""5 `3 M/ H+ T7 o
          /bin/echo "ERROR: Execution of vcs exited with code $exe_status"
) D7 d8 f( u& z          /bin/echo ""
- \' d( N; @- e4 ~& W3 u8 W          exit $exe_status7 W/ {2 X9 a. x% ]3 e' R4 M
       fi- D0 i8 |. ?, r, v! ~) Z
       hva_files="-n simv.daidir/amsVD.ntl simv.daidir/amsWRAP.spi"
7 A, N3 e: z1 ?" b- x: W       ARGV="$ARGV $hva_files"
3 {! Y: k/ a5 Y* k3 T+ T  fi
; Y; E) D* [: ~! E3 m}
; B( M2 y9 L  _( X#-------------------------------------------------------------------------7 v; d4 A0 M/ ?) @  c
  U* Y9 f9 \; M$ _4 F+ F. s) p% W
cleanup()
# z: W! X; ?$ `$ C/ c8 T{
4 l- I6 ^/ G$ R" S1 V    if [ -d "$rundir" ]; then0 t1 T- F( f5 C0 z, M3 i" l6 h0 u
        # On AIX, a .nfsXXX file is created if libModel.o is removed
+ Q4 Q  o0 a) |3 v- Q; ^3 F+ o        # so .epicrun is not removed because directory is not empty.9 o! E' K2 l8 J# e" h" S# V
        # Solution is to remove it again if the first rm failed
  r3 G) Y! u# f' r        # (rm -rf $rundir || rm -rf $rundir) 1> /dev/null 2>&1' d4 s$ Y4 Q) T; V) [7 E
        if [ "$EXTRA_CAPACITY" = "YES" ]; then- F$ d+ [8 |( K5 K% T+ s( i; z
        chmod u+x $rundir/rpcidfile; s6 l. H% ^3 J9 ?5 U
        $rundir/rpcidfile; a6 ?( ]: S4 ?: Q
        rm $rundir/rpcidfile
1 j5 `# b1 ~' A9 I' ^& V        fi2 S; F3 i- ~, t' V( w. \+ V
        rm -rf $rundir5 [, k7 o$ `( h. `2 P, R8 Y
( ^; O! C2 z' K  b
        #Due to NFS problem, we have to copy files needed to
) A1 C5 B2 A6 a6 O) m' a: A2 z        #/tmp/<temporary directory>, then symlink's files9 E4 ^( G; H% a% h& B
        #to the local temporary 'rundir'. This avoids the problem) Y% v3 P+ t" j8 u
        #to remove 'rundir'
: A, b7 P# Q* s7 j        if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then
1 `/ }7 `  k& ?/ h3 ^          if [ -d "$tdir" ]; then. [& L  P1 S% x! Q
            rm -rf $tdir
( A/ V% J3 I* B$ X  v1 B2 J          fi* \2 \; X2 k/ V  B$ C* z+ B
        fi1 P. B. m( v/ Y! ]
    fi
0 X4 i  C: T' T, f6 N9 q+ e    if [ ${exitstatus:-0} -eq $ld_err_code ]; then5 }7 [" l* G/ ]) `; C; q9 n. O
        [ "$has_model" = "YES" ] && rm -f $cwd/libModel$suffix: L, v) D: ?/ o8 ^+ ~0 C3 x
        [ "$has_custom" = "YES" ] && rm -f $cwd/libCustom$suffix, S6 F3 k! ^6 G6 j5 P3 ~
    fi1 j7 `- {% c- Q1 `$ z* N
    [ -f "$EPIC_SCRIPT_MESSAGES_FILE" ] && rm -f $EPIC_SCRIPT_MESSAGES_FILE 1>&2
3 s; a: J5 l- Y% Z7 r    exit ${exitstatus:-0}) q$ ]$ ?( K% Q& z
}! z8 Y. e1 n& G6 m
) C0 k* c- u" E. p$ ?  q# {
Exit()7 E; @+ B& }" I2 M
{
7 k5 O1 d* f6 |, {0 |9 A    exitstatus=$1
- N& C: l3 S% s8 `( Q. F    exit $exitstatus
9 E7 H  |& s% C}' r- j% K, w( a$ @% Z

; z2 E' o" u& U0 z# get_epicrc filename keyword
/ L  V* X( d9 fget_epicrc()8 [# y* H0 p8 h) O/ r9 g
{. d. o) E5 x6 R) T; P. ]
    [ -f $1 ] || exit 04 `( _. c. F4 w8 f& D$ L
    key="/^$cmd2:/{print \$3}"; g" _4 S8 U) j
    awk -F":" "$key" $1! u! L, R3 p! h7 m
}
2 \& S* P! l  D& F  n" q, B$ i5 k
#
$ \3 {( d/ _$ B: {# set datasize limit to hardlimit/ Z9 V& W5 k& g' G7 L; ~
#
5 Z6 Y( F$ X, I4 ^set_data_limit(): y" ^4 H- r) x! M# Q, Y
{( B. f9 b8 N1 C7 N4 Z
    dbglimit=0
5 T- o- a2 z; r) H( v* L- X6 `    hardlimit=`ulimit -Hd`0 x0 t: S' Z1 p  Y9 W9 M6 i, T1 B
    softlimit=`ulimit -d`% ~& q2 Q( B, [4 R! G
    desiredlimit=3500000' z; P$ Z0 z, @- n
    hardisunlimited=07 ^. V  v' @$ k; a
    softisunlimited=0% n5 D  L" i7 m' x2 E+ h! o
    is64=0
, g: A0 K- B$ A! {
3 j0 ]) m9 @: s' p    case "$EPIC_ARCH" in' N. `, s' B+ ~6 Z. Q. B
    *SUN*64)
0 h6 p8 N( X/ o* G        is64=1; {0 W- D$ _6 Z
        ;;/ R2 {9 |) t9 D3 }: F
    amd64)
: F9 Q) G# R: Z, i6 W& E4 I        is64=1  H) G5 ]' J4 R( c6 ?# U
        ;;
; A- t& i8 R9 y* [+ K1 w    x86sol64)
2 S0 G& z% ^' S4 w4 W& Q        is64=13 [8 U) K7 S" H" a: w& z
        ;;$ w3 K9 K% b  V: p$ y
    aix64)
. Z" B1 K5 k0 Z% r7 h' t        is64=1
' w" Z& n# }: U$ c% L% |6 c% M        ;;) D& u& S* _; k* k3 W' ~
    suse64)% r1 e1 C. z! \- V5 S4 T
        is64=1
. t6 W3 K! ?) @) T        ;;; S3 P0 p2 ~6 I: P$ M$ ]2 l
    esac
) Z) {) F6 s, r( @. y' m7 ?
! r1 e* t4 [% K% c/ T    if [ $dbglimit -eq 1 ]; then
* u0 d% p" l8 M2 q% m        echo hard $hardlimit soft $softlimit4 S& X" n' |6 R. ^0 a1 V5 k
    fi
3 H" m, j- V. K+ B
* v* l) B. h* G0 c0 ^    if [ x$softlimit = "xunlimited" ]; then
2 W4 U  g* U+ P9 H7 z" y, e        softisunlimited=17 {- `, H" U, s
    fi
; I' t- M" ^5 ^  K  {$ H7 f3 I" [/ `9 I2 w  T5 a9 s1 o8 T( f7 _
    if [ x$hardlimit = "xunlimited" ]; then
$ {& b  M3 K2 B- ^, ]$ l5 O        hardisunlimited=1
# _9 B: d4 w0 `  ?% c! W1 V    fi, B- f. J6 d2 g8 a+ O6 S5 o2 ?
7 \* l! w- c9 \5 J
    # 64 bit machine should have bigger than 4G5 h. X' J( r. x( q# L
    if [ $is64 -eq 1 ]; then4 H5 p4 `. E' n3 k( [# x: P
        desiredlimit=5000000
7 w  I  H' U$ O  l    fi# y7 X. S; c  ?: S

/ P3 f- k" b9 r- r4 C8 `/ \8 M    if [ $hardisunlimited -eq 0 ]; then
7 E& x! l! ~( e2 }. r8 R        if [ $hardlimit -lt $desiredlimit ]; then
. b* g' E# \0 M            echo "WARNING: datasize hard limit $hardlimit K is too small."- m9 I4 ]4 M. o$ n/ y9 G
        fi
7 w+ I4 J0 N) n5 r6 G) ]    fi
8 q, h. W3 z! C$ n( e1 D3 d& `* H, k7 e7 d$ H4 z
    if [ $hardlimit != $softlimit ]; then
" H4 a1 v1 }4 L; Z3 k" T        ulimit -Sd $hardlimit( h2 H" T- U4 `* }
#        echo "WARNING: datasize limit is set to `ulimit -Sd`"
: g, L/ p% ?* g  n( a% |7 O" z    fi& q- j8 R4 K$ T2 H& y! u
3 R) ~4 Q5 R/ `/ k  I" r
    if [ $dbglimit -eq 1 ]; then
6 M4 ^; ]5 p# M9 {/ j& b$ C7 X        echo datasize hard limit: `ulimit -Hd`
: x! i, O+ D3 {" K( y        echo datasize soft limit: `ulimit -d`4 X9 Z- p- o# w5 U
    fi9 ]+ e5 a5 u. _- s, O
}
5 [$ V9 E% r$ g5 U' `% g% ?5 x. j6 ]: D
#4 ~8 v* ]2 \, J5 f+ T* p
# set stacksize limit to desired limit" T0 i( W5 \1 q
#1 f8 r! ~0 k5 M$ ^
set_stack_limit(): g9 [) j) ], s) e* n* Z
{
# w, [( d2 x" H+ ]9 q    dbglimit=0
, d. `& x  H1 t/ ?$ U+ x2 s    hardlimit=`ulimit -Hs`
7 R, R  |6 m+ K* T7 g    softlimit=`ulimit -s`
( M# x) j6 G* Q% C% f/ x/ p, q    desiredlimit=600009 M4 q1 h! v! ^# }! B7 P6 {
    hardisunlimited=07 K9 ]  n/ o5 |, |! b  E+ s
    softisunlimited=0( x% B# _& m6 M
    is64=0
  Z% h8 u% ?9 }2 p! j9 u4 X3 X
' e0 u* d9 ]9 X1 w! f3 Z; p. @    case "$EPIC_ARCH" in  {) C- T6 N9 J8 W
    *SUN*64)
) \5 I& Q+ V. o! s2 e4 |/ n( [        is64=19 t3 q9 m" W/ u; r0 b1 ?
        ;;0 m* K% ^8 B8 d; y' i3 b
    amd64)& z: Y5 g3 b% _* w% ~/ R5 M3 w
        is64=1
: N, U! B+ [4 t/ k        ;;) s" k) G  c0 F% x
    x86sol64)) P' G) t9 z% a# M' ^
        is64=1
; P" d6 p" ]/ h3 @: v& R        ;;! R1 w( H5 m. [
    aix64)2 z  W+ S( i' u# I6 u
        is64=1
- g: |+ S* i+ D1 j0 [        ;;3 d2 C& P& d8 R
    suse64)
& O: H& Z6 y: c0 e# x        is64=1( o( W6 l1 r. O5 }9 \$ v
        ;;6 X3 O2 z, g$ ~2 F' G2 T3 T' N
    esac* K( @/ p6 M7 {* x! @9 E- X

, h" b8 u0 v1 t+ zif [ "$EPIC_WRAPPER_DVLP" = "" ]; then2 O; _: N- a) J! O: E! ~
    if [ $is64 -eq 1 ]; then0 O( S! m6 a+ M) Q$ I
        desiredlimit=200000
. K4 z4 z; C# T! T    fi6 X1 e7 W7 `* I! q% e
else
: W- Q3 a2 G) l0 ^    case "$EPIC_ARCH" in$ k& ?. U' U, u6 q' ^+ M* i
    *SUN*64)% Y: g8 C, T+ ~9 z
        desiredlimit=200000, m  u+ E/ M5 T) S% o9 ~7 C' q
        ;;& g/ K* l' S+ |5 t
    esac9 J6 g) Z; {9 Z' l' C0 R
fi
1 p  t6 ^% ^9 _3 o6 Y/ c2 k       
' h- m0 S) u3 y& @# b; _/ ^0 m    if [ $dbglimit -eq 1 ]; then
1 S0 b6 U8 S$ w' o, |8 @        echo hard $hardlimit soft $softlimit
1 c+ t/ R3 ~1 t- d9 O    fi
' B2 ]* O& S+ a8 i1 h
% G% `2 W! _! X) X) _1 X* ^6 l. ]+ U    #stacksize can not be unlimited, pick smaller number
& @: L& d( b- m6 y& n! N" q6 D: f; _+ e* V
    stacklimit=$desiredlimit" p, C: [% L4 ]6 x; u5 a7 l& G
4 z( @" ^* \/ Q9 J
    if [ x$hardlimit = "xunlimited" ]; then
; k( Y) W1 J2 N# w& \$ U" ^1 n3 L8 ^        hardisunlimited=1
$ x* m# U$ M- a* Z5 R    fi
( G2 t$ ]# g  ?0 V$ V' f  d+ I
! [) Z! m- R8 I    if [ x$softlimit = "xunlimited" ]; then
, w" c4 {! s  m        softisunlimited=1
, j5 d! O  g+ [* g0 \) X9 M' W    fi
' }% Q$ Q; b; Q6 I$ L* E8 k2 H7 b0 w( m: _7 g) v
    if [ $hardisunlimited -eq 0 ]; then
% H' F* R: c) }# T% ]; L  z        if [ $hardlimit -lt $desiredlimit ]; then
' F8 T7 Z$ [* Q% d5 ]+ c1 Z1 o* E            echo "WARNING: stacksize hard limit $hardlimit K is too small."
: o- _3 j* }4 N. i0 O: `3 t            desiredlimit=$hardlimit- u6 T3 u* l! _- L6 A% D
            stacklimit=$desiredlimit
2 f* A+ ]: T) v/ D( r        fi
- v) {3 `# S5 y    fi1 a* E( X+ Z2 e. a

: R% E9 A4 s: T5 j. a  m5 x    # desiredlimit is set to proper value (< hardlimit)
' `. |& }6 J6 o+ Z: T- h
4 a5 c; x( d9 ~- K9 ~/ l  S% R: m6 t    if [ $softisunlimited -eq 0 ]; then
' u1 `$ P  m0 l* [        if [ $softlimit -gt $desiredlimit ]; then
- U- f9 u) M3 D. z            stacklimit=$softlimit
% y2 n* I6 _0 P- k        fi
! v4 G5 i2 j# N8 _+ ^5 R    fi( v8 \+ N' Z  F! n. o! S+ S4 A

2 \, ?" H% K( c% l( l" {* ^" E    if [ $softlimit != $stacklimit ]; then1 z! M2 @2 g" {' I, `
        ulimit -Ss $stacklimit9 G* ?, z/ O1 p
#        echo "WARNING: stacksize limit is set to `ulimit -Ss`"0 s' S" x+ W; H3 \7 i
    fi# F. E, n: v* t; P# D# X$ i9 @% w

4 ?5 z3 V( M3 ]4 I5 p" P4 H    if [ $dbglimit -eq 1 ]; then
8 R( X8 v$ [3 Y% L( b8 `; h9 ]4 y        echo stacksize hard limit: `ulimit -Hs`
7 E. ]5 l0 d6 L4 T" w$ i0 P        echo stackize soft limit: `ulimit -s`
6 P" Z5 A) W6 ]    fi6 `7 D5 `9 _6 f1 i/ R. f# t
}
: s. ?: c9 u0 e6 Y5 W1 b  h# c! I0 L# L. G. o% [4 E8 I
open_epicscriptmessages()
7 c, K4 h" `. Q" T+ X. P6 d! b{4 Q" q7 n( T7 z* V( D- M
#generate  temp ".epicscriptmessages" file based on pid
( p+ ]; h$ I( o/ y7 |EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$. Q1 H$ h0 N/ W8 r. t4 a' y
if [ -f $EPIC_SCRIPT_MESSAGES_FILE ]
, v- Y4 v: Z! B1 r: Kthen 1 {& A; Y  e3 f; `+ m, e
  until [ ! -f $EPIC_SCRIPT_MESSAGES_FILE ]
0 y, I6 Y# c' y9 J  do
. v6 N3 t0 I. [# `    EPIC_SCRIPT_MESSAGES_FILE="$EPIC_SCRIPT_MESSAGES_FILE"$$* m: P% _! T; i! g6 T
  done; B) z/ Y6 P, C& L
fi
7 |: k- v& Q+ h8 c* a. [" `8 a- y& W8 k. Z" `- }$ H
export EPIC_SCRIPT_MESSAGES_FILE
. t& y7 D& x0 Q: j- f}
" _2 y7 s( z! z* ]
7 ]" W4 ?; a5 R) ?- `, _" K
% F) W2 T7 E$ V5 A. Hcmdname=`basename $0`
! C0 u/ a2 t) s4 }* `- Q0 J" U* v; Apostgres="n"
& Q/ b- q+ u; t2 postore="n"
7 I. {  {8 m( }7 Y# Mgui="n"
# G8 F2 [1 A4 R' a9 N, T5 o, MdatabaseOn="n"3 x/ Y$ ?, e  V$ P# |: D, `
f_next=02 B) D, M. J4 B+ O( O& v
f_option=""" i4 }0 |* ?3 p! W/ f3 k. C
o_next=0
& P$ f, g. L$ Y- b; ?o_option=""
2 T, M& ^, M' F2 S4 c5 zworkDir=""
+ Y* A$ D; @5 V: h8 KworkDir_next=01 y* Y1 y  Q4 \4 Q; n9 T0 A0 ^2 f
errFile="powrmill.err"
& l7 \4 S' f* r$ Dwin32flags=""- b2 E- u+ N" i2 F( L1 E8 k
ln_default="ln -s"
7 H' G+ \% n$ G5 T
7 f2 t, o& N' Ohar_hilo_file="", U" Q0 A0 ?- y* Y  J9 Z
have_har_flag=0) a3 v# D- l, J8 w
have_har_setup_flag=0
0 q% k4 m6 x# ]+ Fis_special_har_run=0/ D* `/ M. K' u
har_ofile_prefix=""8 W% _: {6 z- G% N, a# K
8 {/ M  V0 ?+ O: T# s- I
have_va_flag=0
, r/ o, @. O, J  A( H6 L# Fhave_vaf_flag=09 `% W  H2 N+ }$ O  R) P
VAF_FILE=""  O0 _4 L7 b) \5 U
VA_FILE=""
" A- ^2 @1 g/ DARGV=""
- ~, v3 W$ h: A  f! y- H- w
  g2 ~/ i8 H, T& c! g- b! AORIGINAL_COMMAND_LINE=3 R7 ?, ~, [- x& M
LOOP_CTRL_FILE=".ns_ba_env"
/ Y  \$ l% |2 g2 jALTER_HK_FILE=".alter_hkf"7 T0 A8 _, C& H- y
ALTER_COUNT_FILE=".alter_count"
, d' d) q% [1 t- hMONTE_IMG_FILE=".monte_img_f"
* t" E7 X1 t( w+ g1 a1 OMONTE_COUNT_FILE=".monte_count"
) W% F8 J: `2 B% _/ d6 N  xMONTE_CFG_FILE=".monte_cfg"
+ ^6 G  |$ j% ~) v8 U  _: qEPIC_SCRIPT_MESSAGES_FILE=".epicscriptmessages"# I5 }8 ^" N5 l. S5 b$ B

, e5 U4 T& t0 g! ]8 M/ Y4 oopen_epicscriptmessages $@
8 d8 R- B' p4 y1 x* y
5 P+ i! }+ m) Zscan_for_hva_args $@
0 S0 N2 s1 ~' w9 m/ |0 i' F" }: l) `  y' z2 r  I2 _; C" K1 s
scan_for_har_args()
3 \/ j5 I) Z3 E1 ?/ U5 l# D/ O5 I{
9 |$ u# j2 l+ c9 ~+ ~6 t  while [ $# -gt 0 ]; do
& Y, ]0 ?% b) J    case "$1" in6 j9 A$ z! M1 E3 M; i6 L
      -har)" u% G# W8 D% B. e7 x* n& f% T
           have_har_flag=10 i: ^# ?& T; q- ?! n% K
           [ $# -gt 0 ] && shift
8 q, T) p1 w( ?0 e* `1 |           if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then
7 Y" N2 U: |# F1 X             har_hilo_file=$1
. H# C1 ?) }$ v- `! [* ^             shift
& D+ s* @+ J& C5 d( ^           fi1 v# m& L# x- E' T% a8 `
           if [ $# -gt 0 -a `expr "$1" : '-.*'` -eq 0 ]; then; K7 v2 J, u1 M
             echo "Too many arguments to -har flag. Only one hilo file allowed."" _: R/ V" W* {4 I8 @! G
             exit 1
3 Y  a# w9 @5 `           fi
3 k  r: C5 u0 Q) L           break, f+ `- m, Q4 g4 Z9 t9 M
        ;;  v4 C8 w$ u  H. w( v- f
      -har_setup)
$ a& l1 g+ r$ L3 n$ O; J' o2 |0 E6 z" n           have_har_setup_flag=1
7 e" Z  d$ G5 K, a+ C( y1 U( x+ G9 [3 w& C           break
6 A) o3 L& X$ Z* J( t3 ?0 j( W        ;;. @5 z6 g: `' }; U  Z
      *)7 h5 k( W& s0 d4 I2 n
        shift
6 ?5 q* Z  \2 W  h: O        ;;
; Z0 `3 |6 L) B    esac
# t! S; v0 _  F0 Y' ^  done; t+ z- m  j8 w  c! n
}9 T( L4 A/ d# Y* Z6 N
$ u+ T: D2 E1 @: l3 h
scan_for_har_args $@
% V, @) w/ ~2 H/ S  M
" t9 }' }( K$ W* T1 |/ ^+ {for argv in $@
, i: O% M/ T4 s& `3 Q; G0 vdo
( C9 q7 H9 B: Z3 @3 Z/ }   ORIGINAL_COMMAND_LINE="$ORIGINAL_COMMAND_LINE $argv"( i! b- d/ K& S2 H% ?5 n5 f1 U( j% \
    if [ $argv = "-gadb" ]; then0 h& K1 C" v" ~2 }, E% ]
        databaseOn="y"
2 G: D( U( h0 j- D7 [        workDir_next=1
7 n& [4 @/ ^1 Z' x& i, f- m    elif [ $workDir_next -eq 1 ]; then
. H: B$ j% N8 N& X        workDir=$argv
3 K5 [  l# V. N1 b, \        workDir_next=08 }) ~# f! s1 N- k; d  A
    elif [ $argv = "-ga" ]; then" |* p; ^! L7 T0 r/ j8 }' ~
        gui="y". p; i1 K3 p5 w" e6 z" j3 L3 y
    elif [ $argv = "-f" ]; then# M7 M7 {- `% h8 s) r5 Y" @
        f_next=1
& g2 p8 Z0 ~- r1 b    elif [ $f_next -eq 1 ]; then0 B2 x% A% U; i% H
        f_option=$argv
$ Q$ V5 e& A: L1 [! r* [        f_next=0
& a1 b# D, K3 b5 T" p    elif [ $argv = "-o" ]; then5 t, \7 H9 c( c/ C
        o_next=1
  f; R0 w- U7 |8 N4 t2 |$ D/ q    elif [ $o_next -eq 1 ]; then, E( ~: t- t7 [7 N/ }4 k* u
        o_option=$argv3 g1 q* Q( J( \4 l/ ^
        o_next=0
/ g: t3 i1 M5 Z    fi: D0 s) e/ Q" I, d. h1 Y4 h& d
done- \+ i* C: a4 C# S! a
echo "Command line options: $ORIGINAL_COMMAND_LINE" >  $EPIC_SCRIPT_MESSAGES_FILE
  C1 F7 T1 N: D/ _' m+ w+ P: q( ]- z5 f) \) \9 G3 u6 m# r  @. S
if [ $databaseOn = "y" -o $gui = "y" ]; then
7 B) ?5 L+ R$ z& l7 y. K3 s  if [ $cmdname = "pathmill" ]; then% |. C* D3 A1 f6 f  P
    if [ "$EPIC_ARCH" = "SUN4_SUNOS_5"  -o "$EPIC_ARCH" = "SUN4_SUNOS_5_64" ]; then8 Y3 T$ D3 x$ y' J0 u9 {
         ostore="y"# k4 }7 X# [" e) l6 u9 b' W: x
         postgres="n"
# w- B1 U$ f& s3 w+ Q1 r     else
. N, t% R$ R8 B- r' g* N        echo "athmill GUI is supported on Solaris platforms only" 1>&2
7 G2 }  d) N: }' h        exit5 d% i5 K, v, G: s; t6 M0 k
     fi' |& H4 u3 l) {+ H( n$ Q! u
  else
+ z! m3 @' E8 K    postgres="y") g* s: Y0 e! R3 h9 t
         ostore="n"4 ~* D+ c" D! `$ ~; I4 X7 a
  fi
% \4 Q: b8 ?( N" Pfi
2 ~. t$ J8 J) [6 I/ \; W; m, L+ A4 T
if [ $gui = "y" ]; then
1 p9 |+ n0 i) U, T+ S" d6 p& j$ y  \# d7 E    if [ $cmdname = "powrmill" ]; then
& L$ |: Y% t4 N' n0 r        pwga $@+ B0 k8 F* E5 J% T) o& l0 F1 j" y
        exit  w: X0 B5 W1 V, ]& K' P  m- e
    fi
; a4 L' c' j4 Z3 L4 g + v0 I) M9 Z$ X0 e& O7 ^5 h( w
    if [ $cmdname = "pathmill" ]; then
# h: V& U5 |; ^* ]! d, Q        if [ $ostore = "y" ]; then! J& A. h  o3 A) B. M& G$ q
           ./pathfinder $@
" T3 d/ u# k3 }" q, {! L9 k           exit% j* h# e5 |- A& E8 ^7 Q& ]
        elif [ $postgres = "y" ]; then) G* n( b9 @) s5 ~$ b
           pmga $@5 u' m3 P1 A% j- J* U( d! }
           exit( i9 U+ @* K! |, [4 w/ u
        fi
/ p% f2 D  D; k( t4 Q9 d6 v    fi. z% _. q0 V+ C: b
fi% X. [9 Q6 n+ x# V* s

: r5 y# h( R# d" a( k4 N. iif [ $databaseOn = "y" ]; then) T7 d7 \9 ~" U+ v' P& r# ]
   if [ $ostore = "y" ]; then
+ w6 z. [: J. l. g9 V) _      if [ -z "$workDir" ]; then
8 K  p# _* D: v1 S# G6 T         echo "Error: Missing argument for -gadb option"
7 ?& ]( J) u1 g( S0 o         Exit 1) `8 B3 c9 w1 M' R
      fi
6 M5 m" q0 I( P: G   fi
7 I2 v3 G$ _2 @, |' C( M   if [ $postgres = "y" ]; then
' h5 J! ~- t2 G! R8 i      if [ -z "$workDir" ]; then
5 E  h0 d9 _3 G         echo "Error: Missing argument for -gadb option"" y; I* V1 |4 d; C2 N
         Exit 1) d( S# H2 \" }- W
      fi
; r& W+ I- Q1 l0 A- c3 ]/ C   fi& x& ?3 p9 b3 q! h0 b* }8 j
fi. t1 ?6 L& w( j: y: n
  `) _3 z1 ^3 J; ~! {/ m
if [ $postgres = "y" ]; then
! H8 n/ y2 H/ D2 G1 ]4 B0 D' A( U4 v+ p9 I- a6 k
    if [ -r $EPIC_BIN/scripts/gui-init ]; then
! `' a) G6 _8 A6 \2 \        . $EPIC_BIN/scripts/gui-init, F0 H4 _) S7 \- Q
    elif [ -r $SES_ROOT/bin/scripts/gui-init ]; then, Z; p$ u) L0 v% U" X" ]
        . $SES_ROOT/bin/scripts/gui-init/ }* t, @5 c9 ^8 z+ E7 l5 @" ~1 R
    else
. d2 v3 j. e4 O" V) M" F+ T        echo " ** Installation in \"$EPIC_HOME\" has been corrupted!" 1>&2
& d; i% f: p0 k! l( r( L7 T9 O6 b        echo " file bin/scripts/gui-init is missing." 1>&2
( v* ]0 G0 N4 C1 ^$ W, O! x    fi
! _+ E) r9 F7 M
/ `& I1 L# J, K( e    workfile -tool $cmdname $@
# k% z. @$ P( W5 Qfi. R  h0 L& X7 a1 w9 g

  O% j% z# y" zif [ ! -z "$o_option" ]; then3 d; z5 X8 f; E7 Z3 w+ p
    errFile=${o_option}.err( t- L2 }* ], X) K
elif [ ! -z "$f_option" ]; then3 x8 J' D5 t  g: O7 w" s1 |' h
    if [ -d $f_option ]; then
: ?  F6 ~+ w3 I: ~" c& \0 y        errFile=${f_option}/powrmill.err
1 s3 n- A9 |- |! U- u+ ~8 K, |    else errFile=${f_option}.err  N+ h' Y. K: n5 M/ `+ r6 y0 g( Q
    fi1 x9 H  g0 P+ G& _. ~) j
fi
4 I$ V/ W9 T" S) j/ o9 N1 c3 x: y; a/ Q6 {: `0 i  Y
* m' _1 n: M* m8 @$ t. q# x& \
if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then
1 D4 j7 I% I7 b2 o* v( E0 i  rundir=.epicrun8 }1 z& l+ V! g( z
else# O, l/ h  m6 s5 ]
  rundir=.epicrun$$& R# \0 X$ d/ ^. r3 q: O  k7 C( y
fi
0 P, s! [/ F8 q; `6 Z9 \
# u8 ?" J! W# J) V7 U0 c* Slibpath="$rundir${EPIC_DLIM}$EPIC_DIR"
, h4 [5 u- ]# J) ]
# e0 R! f8 f% L) U1 b. }5 @0 k7 I" Qcwd=`pwd -P`
* B1 q. U$ z  U. _5 u8 A; _/ y$ ]if [ $cmdname = "acehdl_w" ]; then( O& {, r. ~5 e- @/ h
  cmd=`basename $0 .sun`
/ R! k$ K( @* \) H3 c1 X  cmd=`basename $cmd _w`/ P+ U- \! M; r* J9 x" a+ X
else  W0 r+ j, Z2 P2 d
  cmd=`basename $0 .sun`& k0 u6 c4 B0 n2 d
fi* V* U7 z. \- c$ s! N
* q5 g  ^. w8 h; y4 d2 d% c: v
command="$EPIC_EXEC/$cmd$EPIC_EXEX"( \! u+ M) p5 R* n9 f
[ ! -x "$command" ] && echo "$cmd: not installed!" 1>&2 && exit 1
- W: w1 X6 U0 n- `* _7 r& m0 A  `) r+ L& P  }7 ]( Z2 A
# buildmod extracts -u/-fm options and calls genepiclib& ^; P  L0 N" L" W, j$ i+ H: [
# It also set the remaining options to variable CMDLINE
# L4 B$ h% N4 W7 R# look up in .epicrc for -fm & -FM parameters$ B' a" R# H$ h( \0 F; ^% H

6 H) B3 n. k. ~( D+ tfmlist1="`get_epicrc ./.epicrc user_adfm_obj_modules`"
% [  g) o! X1 J2 O/ S9 b; ?& _[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules`"
+ p1 z& t9 e" r, O) z- ]8 m/ w+ L[ "$fmlist1" = "" ] && fmlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules`"
" @+ E' v4 P2 i9 {! ? " j  j( {5 a1 s) P
FMlist1="`get_epicrc ./.epicrc user_adfm_obj_modules_force`"2 J& f2 r6 e1 x
[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $HOME/.epicrc user_adfm_obj_modules_force`"
2 d' _. u2 E" R% A1 D3 z[ "$FMlist1" = "" ] && FMlist1="`get_epicrc $EPIC_DIR/.epicrc user_adfm_obj_modules_force`"
4 M4 ]! e, S. w1 A( v; n' m, L& y  V0 q! u9 V- o* P3 ?8 c
if [ $# -gt 0 -o "$FMlist1" != "" -o "$fmlist1" != "" ]; then
6 U' t) ~  w' P& m' |' d    # note that the buildmod script will set the CMDLINE variable
6 ~5 y: o' @, @- Y0 v    . $EPIC_BIN/scripts/buildmod
  n7 O* Y8 L# x: }: g$ `& R4 e# ~+ {5 `  {: u) Z
    #echo "This is the value of cmdline=$CMDLINE"
4 y  f/ h- J" o  {* b# ~    #exit 0. c+ ]( v% ~! q0 ?4 v, T; H+ W

/ e; f+ R0 d* j$ L- E$ Q. D" T' T  p. j    # if a new timemill/powrmill/pathmill built, run the new one6 ~( ^! C( t! Q1 `2 A
    [ -x "$rundir/$cmd$EPIC_EXEX" ] && command="$rundir/$cmd$EPIC_EXEX"
( q3 O% o" u: [9 B( gfi
5 a) M; Y! u. F: w) J
5 ?0 a7 t( T" g) Y# H* t/ x2 Pif [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" ]; then
/ a, c, W5 j! }5 Q( T0 m  if [ $have_har_flag -eq 1 ]; then
# y  r/ A9 Y' O6 ?' v" S0 w    is_special_har_run=1! f: l& C( Y* e1 k6 ?
    if [ "$o_option" = "" ]; then$ X2 U5 [# q. Y  _8 h/ Z
      case $cmd in- _* x; @7 i0 q& v
        timemill)' S, S( _8 [" u8 g0 l5 c" ?
          har_ofile_prefix=timemill
2 q5 L/ {4 U4 K. ?& O; l          ;;
' ~" F% Q5 }5 Y% k        powrmill)
' K& ]3 `- @6 g) j. a8 ], [          har_ofile_prefix=powrmill  T. p1 z" O& s; i  _' X
          ;;
, V8 L: Y% b- K; H. a        nanosim)9 H& |" X7 Y; @9 I
          har_ofile_prefix=nanosim! @# X  w' ]! \0 ^
          ;;7 F7 x7 C/ n, S- c: r( f
      esac- x- ~1 T7 I  {) N2 b" A
    else
6 B; R/ y% M. S9 g      har_ofile_prefix=$o_option# c4 f% e1 l/ D: `6 V" `; b& n
    fi$ N' U8 @- t% o! r9 Z
fi- _% N! f' f7 h4 v% V
fi5 j8 t1 y6 J1 F3 c0 [- _! q9 H

8 J" f, X) z5 e; w" ]% z# Call Double precision version of the product if -D2 R# b8 a" ~  O9 g) E, O: r
# or simulation time > 1,000,000 ns.5 ?! E9 l; W: Y' X; {1 q( @
if [ "$cmd" = "timemill" -o "$cmd" = "powrmill" -o "$cmd" = "nanosim" -o "$cmd" = "railmill" -o "$cmd" = "pwarc" ]; then
" e( Z! w9 Z: |6 P. j' F
  R5 C: I0 n- d6 S, @" q) h" O/ ?  # Now the binary always has the ACE feature
0 N  M0 d: B% Z/ p6 H" ~. P  USE_ACE=YES
; }6 g1 q0 C; P/ t
  J0 r0 Q' U0 n7 P! Z" P  HAVE_DP=NO
6 p: H7 L) g8 D% N$ }9 Z  EXTRA_CAPACITY=NO! l4 {0 f  R1 Y
  DB_REAL=${FORCE_DB_REAL:-"0"}
) D7 m0 }0 l$ t6 _) a
$ o! f: o/ {4 Q% x# b0 Y  # Enhance for ACE ease of use* |; e' M# J6 r% z9 T
  # If no command line option or only a -T option, do:
5 G4 _/ g  d# T- g* `" V! q  #   1. set -A option) N$ P) \& {$ K2 u+ v$ \, Y4 o- t
  #   2. assume input file to be hspice
1 u; F& O/ u, g: D8 I8 S  #   3. set -o to input file prefix
# V1 `! Q0 O3 s3 E  #   4. set -z to input file prefix* I! x9 q+ }6 t4 r% `* F. Z1 b$ }
  #   5. set -c to default config file
' r# @4 B3 x5 X# C# Z  netlist=""
+ k7 \3 ]0 y- G0 t7 [% }' Z, s0 |9 d  minusT=NO) ]6 M6 I' q7 g; Q9 \5 C
  useStdCmdOpt=0" V5 k: f# i6 b* V! j6 Q
  prefix=""% M9 `0 C. B9 ]* u
  circuitType=""
1 J1 l: F/ G, p) I1 T  for opt in $CMDLINE
* P1 I3 q8 z: ~! a6 V" |" M  do( L" d. M1 J( e4 n# F
    case "$opt" in 8 P+ l7 Q/ T! N$ H* M4 ?/ z
      -T)
6 ^( C  a5 z" p' R* ~+ e        minusT=YES
1 z7 f7 ?, g# w# i2 A7 [% K        ;;
$ j" X6 c+ E, m8 [      -*)7 t) N1 |( _# F
        # using standard powrmill command line5 b' |0 G; b# k1 A
        useStdCmdOpt=1
) L! I+ D  \0 T        break
" l% G" Z# _% ^& `        ;;
6 Z% j7 g; i9 }4 r' M      *)1 n( u% c7 p1 o* [% j& h
       if [ "$minusT" = "YES" ]; then; S) Q0 T$ R+ W7 \1 H
         circuitType=$opt
/ P; F1 P1 h. N6 Z# |/ `3 a         minusT=NO  # reset flag
* A0 z& q; i" _1 n6 K7 p& j       else * J, `& V  U5 o6 g' [( \# T$ f$ ]7 o
         if [ "$netlist" = "" ]; then
! t* x3 e1 L/ o/ v           prefix=`basename $opt`
7 A$ z% e) v; @& F& i8 F( |           prefix=`expr $prefix : '\([^.]*\)\..*' \| $prefix`4 B4 b* s; s* H4 g  k) w6 z) V
         fi
% F+ \$ P8 f0 N7 J" A+ y# t( U4 d         netlist="$netlist $opt"3 X9 u1 P# r/ x$ m  ~& {# |
       fi$ u0 W) N0 C5 `& r* z& p
       ;;
, T( J, w' r4 }% x8 x    esac: f1 N/ z: n5 G
  done6 l- P6 Z: _6 P% U' s: X( {
- u! o" w+ @( e2 N% H
+ m" r/ X) J! w
  if [ $useStdCmdOpt -eq 1 ]; then
9 [& h; I3 K# W* k* H2 g* z9 B    # use standard powrmill/timemill command option- L8 d+ e2 `5 j
    for opt in $CMDLINE+ G3 [7 E( {' w
    do
5 l9 P2 T+ z$ Z$ H      case "$opt" in " S. F  e4 L9 H7 n2 s" Z
        -A)( T! j* z( U9 p! ~
            DB_REAL=1
: k1 X# W4 L2 k' O& m9 }" g- Y            ;;0 _* W9 B* ^+ a/ s- J$ T
      esac3 h3 V. G1 e! c6 X+ H+ Q
    done+ v# n5 A6 ~( H6 J2 R6 K' N
    if [ "$netlist" != "" ]; then
5 t, M* \6 k& H( B& Q# I: }0 v      CMDLINE="-nspice $CMDLINE"
) i" h) ]9 J( _" v1 }    fi
/ I9 M' Q; o$ ]  else
* P/ X. N+ I; a    if [ "$netlist" != "" ]; then
1 A6 `* I, ?8 }      EPIC_DEFAULT_CFG_DIR=${EPIC_DEFAULT_CFG_DIR:-"$EPIC_AUXX/etc/$cmd"}
0 K  F. ^. b- ]3 N1 D3 C      # construct new command option
8 d$ e( A6 L( M3 V1 J, D      if [ -f $cmd.ini  -a  "$circuitType" = "" ]; then
! d; c  W8 C5 Q) C        CMDLINE="-nspice $cmd.ini $netlist"
# s9 j4 e+ \8 g; ]7 Z* {- ]      else; E4 T3 ~6 l: L* Z- {
        if [ "$circuitType" = "" ]; then
1 \4 f: l- Q% N9 O          circuitType="msana"
  a- t2 |, x) z7 d# C8 P; f        fi- k! h0 }2 d* q
        CMDLINE="-nspice $netlist -c $EPIC_DEFAULT_CFG_DIR/$circuitType.cfg"# P+ ]/ H# E1 D/ K: a. V+ Z5 [
      fi
, k, y8 L: T* E. y$ \" C! w      CMDLINE="$CMDLINE -A -o $prefix"; m" v# u1 a/ _* a; c  d- x, a
      DB_REAL=1
! n! l: \/ h, w& H$ \      echo $cmd $CMDLINE9 o5 t) `0 Y- I2 x3 x
    fi* }& d& f) S( C, a5 G1 ^! n
  fi) e+ d. `2 q) Z8 s
fi # cmd is timemill or powrmill or nanosim or railmill or pwarc. N8 W& n7 K5 ]- f8 [7 \( L; e; x
5 Q/ l( e2 V3 j2 C; ~$ Z
[ "$HAVE_DP" = "YES" ] && [ -x "${command}_a" ] && command=$command"_a"( _4 l0 L4 m8 _8 B& P+ V; S( ?) U
[ "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a" ] && command=$command"_a"7 u, `* F$ e, l) R
[ "$USE_ACE" = "YES" -a "$vlog_design" != "" -a -x "${command}_v" ] && command=$command"_v"
! ~' b5 Q& [$ K* ^; K8 a* @: r
' I, z7 S. X6 `7 p; z( T/ o& Wif [ "$__engine_wrapper_called__" != "Indeed" ]; then
& T/ L) Z+ O4 C9 P# W    __engine_wrapper_called__=Indeed
5 [& H) w% m  Z) o9 b4 A    if [ "$cmd" != "amps" ]; then
$ J/ N2 d9 S9 I5 b" z8 K        export __engine_wrapper_called__
8 Q5 C7 g: n" f" J- l9 @: ~    fi
" z+ A1 q9 \; v" S4 f, C
# T8 u; }: [7 f5 ]2 d/ H: d  y$ N    trap "cleanup" 0) M# |( P* `, P& j$ _
    trap "" 27 U; o$ ]) R0 x7 V. n8 t
# }) H$ A2 v. t3 P. P. q% H2 w
    [ -d "$rundir" ] && rm -fr $rundir
6 e, I. e2 U3 @6 B    [ -d "$rundir" ] || mkdir $rundir
0 e8 l& |) _+ X7 B) W# }' c* H
# D, {$ N$ q7 g    case "$EPIC_ARCH" in
7 w. o) K; z  E) X* |. M    *SUN*64)   - G# F* S" [% |2 i
        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"/ G6 G' H$ }1 n' Z6 q) h
        export LD_LIBRARY_PATH
6 h0 S1 l* G; w& |7 O" [        suffix=.so" H: t$ k6 p- r) r
        ld_err_code=127, V% F7 l9 }! [! _% V9 [
        ;;6 E; C1 ?3 H- y, s* p2 D
    *SUN*4)   
/ c- [& v9 L; }  t        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"
$ u' X$ @5 @$ g- c" L# Q" T% V        export LD_LIBRARY_PATH
7 e& E* `. O7 ^* n        suffix=.so.1.0( a) S: c, G. p1 V
        ld_err_code=127
4 E) W% Z! f" I# G% i9 B4 H9 f# s( S0 }        ;;
; i+ ?* u" c( Y4 z/ o    *SUN*5)   
) k1 X8 W7 e: m: q6 f        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"
5 H5 z; |* x' r# e        export LD_LIBRARY_PATH8 y/ q3 {2 K* Z  p
        suffix=.so, v2 o: O+ @6 L
        ld_err_code=127
" @  @' N3 S" Y7 q* U- z        ;;$ q& B. r3 T9 P* w* V  @
    x86sol*)   , H' B& B$ J! b4 N" k
        LD_LIBRARY_PATH="$libpathLD_LIBRARY_PATH"- H' |" x% E* D# ]5 t* K
        export LD_LIBRARY_PATH
; v% v- O  @$ j8 V+ i, e3 l        suffix=.so
. @; a, {/ U0 c+ u: b7 n% F3 f, n        ld_err_code=127
! W/ n5 n5 y2 x        ;;
7 K/ r, Q# M& _% c; A4 z    *AIX* | aix64)   9 ~( j) h/ e) v* N* O, z. W
        # When genepiclib creates shared objects, it creates a import file and 7 v0 H! [! Z) q7 u6 g
        # uses timemill as program. So at exec time,program timemill is needed " A# [5 n& e* A- I! J* ?' W
        # in LIBPATH
  I* M2 d0 X0 O7 [        $ln_default $command $rundir/foomill4 Z! w* i" @% p
        LIBPATH="$libpathLIBPATH:/lib:/usr/lib"
+ m$ O* U. t3 a5 d0 v: l% x        export LIBPATH' S  M8 |& j* b! J  b$ M8 }7 ^
        suffix=.o
$ t: B0 z/ r- R# n8 @- M0 }( g        ld_err_code=8  T3 }( e8 S( Q4 o1 r0 d
        if [ "$EPIC_ARCH" = "RS6000_AIX_4" -o "$EPIC_ARCH" = "RS6000_AIX_5" -o "$EPIC_ARCH" = "aix64" ]; then
& ^: g" e% |& Z! z          tdir=`echo "/tmp/d"$$`2 _* `$ Z) E: v: o9 l! f
          [ -d "$tdir" ] || mkdir $tdir1 G4 q8 d5 y3 P& A3 v
          if [ -f $EPIC_DIR/libCustom.o ]; then
6 l4 \8 x' y9 U. ~! E7 T* ?             cp $EPIC_DIR/libCustom.o $tdir/1 Q2 {, g! f+ d. J
             $ln_default $tdir/libCustom.o $rundir/
8 |& U8 [# A% |. Q          fi0 @$ R/ l6 q% g# E2 Z; Y/ |
          if [ -f $EPIC_DIR/libModel.o ]; then
+ e6 y( q3 ^: C5 M             cp $EPIC_DIR/libModel.o $tdir/# W) X, N1 X3 ]+ R  D. X  b' w
             $ln_default $tdir/libModel.o $rundir/7 e1 h$ [4 c5 G3 G3 m: ?
          fi
4 X% ^' s! c5 |+ H6 z, \          if [ -f $EPIC_DIR/libFuncModel.o ]; then
" X& P! |: l$ e+ c1 g             cp $EPIC_DIR/libFuncModel.o $tdir/  g$ y$ R0 N/ @5 N! ^2 T( h
             $ln_default $tdir/libFuncModel.o $rundir/
& g% G* \* b8 `* A          fi
, X0 P7 W0 [; D          if [ -f $EPIC_DIR/libFuncModel.34.o ]; then
% ]# U: b, ^9 I  N* Q             cp $EPIC_DIR/libFuncModel.34.o $tdir/
; s) H  |4 Q% V5 n+ H             $ln_default $tdir/libFuncModel.34.o $rundir/
. \) t1 Q4 a4 Z% i! P          fi
6 I5 c3 F7 ~0 l: d# [1 [2 s        fi
5 ?4 L$ A: V7 Z* t$ G+ c3 A        #Set the IBM flag to enable more shared segids7 ~$ w( I- p. E8 g4 @1 C3 i
        EXTSHM="ON"
  {! n) P$ [: ^) ]0 w        export EXTSHM2 l, l3 S5 Z  E' ?2 b
        ;;* [2 A+ \0 i2 N( y0 |9 t& f
    *LINUX*)   
2 o2 u: p+ J9 |, c5 T: S" G, h% A        suffix=.so
5 a, G! o7 \$ D4 }: i5 i0 F5 p        ld_err_code=1
' i2 l  g+ u* T        ;;
- {( X  M/ t8 i; K0 K6 N5 ^) {+ {* B    *amd64*)
' {- C: }0 m( t; B, P        suffix=.so
3 H0 [- V5 G) n5 n) j        ld_err_code=1
$ c' a9 G3 r9 N! l- y" R) `        ;;0 K" V/ [2 x1 a& @8 l  |
    *suse64*)
5 _- }0 r- d# {; M) k. }2 ^6 k. m        suffix=.so
, h3 \9 g9 c! S1 `: U        ld_err_code=1
. Q3 P/ D) _: @* k        ;;
5 e) L- I: Y9 V/ V    *suse32*)    5 G8 f1 S2 X5 q! }9 s" g
        suffix=.so
- H. X7 b$ l6 G        ld_err_code=1
/ b) C4 f7 E) M! ~; o$ `4 |        ;;
4 M& I9 a6 L  p: O* a    esac* A/ D* h& |; I

. T3 K( ~1 \& H% E    [ "$has_custom" = "YES" ] && ulib="$ulib $cwd/libCustom$suffix"
% R- q% g3 P4 |' i7 Y5 j' K4 Y    [ "$cmdname" != "timemill" ] && [ "$cmdname" != "powrmill" ] \' b$ n, z" t% Z3 K' ]6 M/ v$ \
        && [ "$cmdname" != "nanosim" ] \: e7 b7 t& _5 s4 d5 Q
        && [ "$has_model" = "YES" ]  && ulib="$ulib $cwd/libModel$suffix"
4 g  T' F" R$ h0 G    [ "$_VA_" = "YES" ] && ulib="$ulib $cwd/libva$suffix"
1 |& u2 E6 V' i7 @* [9 x  K! A( ~. P) E8 {& w
#Look for command line option for libFuncModel.so2 Z+ W( s) C( C& }
#    user_library_next=0
1 K) H" A! I, y/ r% k$ G, V7 c    has_fmlib=""  d# u" [5 _" k& G7 k
    for opt in $CMDLINE, v6 O  {  Q3 v
    do
6 i5 L7 s& c1 y0 _, M9 }5 ?      case "$opt" in * v3 o, F% r5 D$ l" y6 {, `
        -fm)
- q) x3 \0 B$ Y, C* J0 I            CMDLINE="$CMDLINE $cwd/libModel$suffix"
# }7 ~' e& a; S2 _, O            ;;" p7 S& _) R2 j. |
        -fm_user_lib)
% O  R  B: B  d2 U" i7 J            has_fmlib="YES"
% p3 \1 ?0 Q& O. z& R' I; Q6 U3 V# |#            user_library_next=16 z% C! L3 L) u$ s2 z% {' J
            ;;" |$ X! s7 H) P9 y# n  m
        -xc)
' D, |) D3 l! Q! d9 ~+ P* M            if [ "$EXTRA_CAPACITY" = "NO" ]; then& i5 Q' j, P: A' E
            EXTRA_CAPACITY=YES
5 h; a7 S" L5 f1 e5 y            fi- }2 h* d7 g) A$ w
            ;;
3 @5 H' [& t7 z; L9 o8 v# @#        *); }1 h( _3 u$ K" {+ S
#            if [ $user_library_next -eq 1 ]; then4 p9 ]3 A* Z0 O: Y1 m0 d+ k- l
#                if [ -f "$opt" ]; then
* t7 ]# M9 f0 O! R1 e#                    libfmodel=$opt
1 ?4 f9 t2 f2 T; z8 R( @* ?5 z  ~#                else
( C% y0 y" ^, G/ m: ^# ~' C/ j  u) F#                    echo "-fm_user_lib: Specified file not found"* g8 X$ h: {3 ]! Y) g' m- l
#                    echo "-fm_user_lib: Specified file not found" >> .epicscriptmessages
* F+ C% Y5 r6 n# F2 V% I6 v#                fi
* M7 a4 O, e$ d/ @1 @#                user_library_next=04 f9 C, }8 |8 g+ `
#            fi/ A& k6 s, k1 {# |+ P* L. g/ u: W
#            ;;
& k3 p# k; d6 H# f        esac6 \& D5 E+ j! C* W( `$ C
    done) q+ i4 D. Z; k+ m3 y' ]

6 N  s+ Y9 f* X    if [ $cmdname = "timemill" -o $cmdname = "powrmill" -o $cmdname = "nanosim" ]; then
, u- l$ K& W! t) O6 O        flib=""  y# i0 q: W, E2 V
        if [ "$has_fmlib" = "" ]; then
$ v: S" C7 y. i* e" b8 ~6 W: f. }            flib="$flib `get_epicrc ./.epicrc user_libraries`"$ t: y) m2 }5 j5 \5 r9 w' r! |* g
            flib="$flib `get_epicrc $HOME/.epicrc user_libraries`"
1 V- y. V, c; C4 ?$ U+ \: x            flib="$flib `get_epicrc $EPIC_DIR/.epicrc user_libraries`"
9 L3 ]% {3 k: E        fi8 o4 Z8 L3 G7 \
    fi
% ^7 {1 Y7 `( O5 r3 o! y9 t- h% z9 a3 p
   for i in $ulib$ V( R9 X! [' s! n: J7 s
   do
9 k# u6 H* p" S       [ ! -f "$i" ] && continue
- N+ c9 f) I5 K+ {* ]/ ^       dir=`dirname $i`; cd $dir; dir=`pwd`; cd $cwd
0 f. @" x" g) t, @4 h       i="$dir/`basename $i`"6 `4 J  ?  B; g
       case "$i" in9 c8 |) ~  L& k! Y
       *libCustom$suffix*)    [ "$libcustom" = "" ] && libcustom=$i;;0 R$ ]* v1 H: y9 N* T% ~
       *libFuncModel$suffix*) [ "$libfmodel" = "" ] && libfmodel=$i;;! C+ o2 |/ `9 r+ _
       *libModel$suffix*)     [ "$libmodel"  = "" ] && libmodel=$i;;: d6 v$ N4 y8 p% |2 d" l/ N
       *libva$suffix)         [ "$libva"     = "" ] && libva=$i;;; O$ A, Y9 n( k2 d% r0 ]3 m3 k  V
       esac+ P' U: g4 Q, T
       [ "$libcustom" != "" -a "$libfmodel" != "" -a "$libmodel" != "" ] \3 G$ d: k' H- J3 ^3 [
        && break
$ H5 J9 T& d4 g/ W9 _0 Y   done
* z* |9 X1 U: x) j' _' K
+ F2 j, c- m3 s5 D   # symbolic link shared libraries to .epicrun$$
0 b5 _6 S5 `1 @5 W5 L/ {4 {    cd $EPIC_DIR; epicdir=`pwd`; cd $cwd  {$ K+ S4 Y: Z) a) v) G; s
    if [ $cmdname != "timemill" -a $cmdname != "powrmill" -a $cmdname != "nanosim" ]; then
" {% G8 |) T& D! G8 b: Z        if [ "$libfmodel" != "" ]; then
( w3 I3 I/ U% r; C             [ "$libfmodel" != "$epicdir/libFuncModel$suffix" ] && \
: ^# ]; Q. E+ }8 x             echo "Using $libfmodel ..."  && \
5 [7 _  h6 b. N, h1 M: e             echo "Using $libfmodel ..." >>  $EPIC_SCRIPT_MESSAGES_FILE
, ]& }8 Y: L! M' \( L3 ?* _             if [ -f $rundir/libFuncModel$suffix ]; then( R" x% \) |7 G
               rm $rundir/libFuncModel$suffix: \% N# ^' K9 D& P0 G! h, @  c9 ^0 d. C7 A
             fi* Z9 O! J" ?/ I4 \
             $ln_default $libfmodel $rundir 3 [1 w  N, |: J8 a
        fi" l4 {; @0 R, c* |2 c$ S# L
        if [ "$libmodel" != "" ]; then
2 I1 b6 U& ^/ g  ~             [ "$libmodel" != "$epicdir/libModel$suffix" ] && \( i1 P) F9 X7 s/ Z0 U) l
             echo "Using $libmodel ..." && \
( p* F2 ~3 Y, ?$ z& t             echo "Using $libmodel ..." >>  $EPIC_SCRIPT_MESSAGES_FILE9 e" N$ M3 v, x, W8 s, G
             if [ -f $rundir/libModel$suffix ]; then2 J# g9 n, t6 b: z6 ]
               rm $rundir/libModel$suffix
  h% S2 X- U2 ^- h% m/ H             fi& G( |- f4 r+ q: Y' l% h+ e' q# P
             $ln_default $libmodel $rundir : ~+ I7 V3 d& h- H) H1 a& i5 ]
        fi
8 B, B$ g/ W+ \   fi
. i  }/ u: R4 Y# C   if [ "$libcustom" != "" ]; then: b7 e; g! c% j0 Z$ r0 _, O& V
        [ "$libcustom" != "$epicdir/libCustom$suffix" ] && \
3 q. |/ ?5 N; r2 p1 s- E/ Q        echo "Using $libcustom ..."5 V5 D& E3 c7 f/ ^+ x# s7 g9 t
        if [ -f $rundir/libCustom$suffix ]; then% B  i" R# B* k3 v7 T
          rm $rundir/libCustom$suffix
8 }3 U8 [6 E8 b& f/ L  Z        fi( L2 |1 r0 q" r" i2 T1 }
        $ln_default $libcustom $rundir
  r; S$ D* W4 o4 }   fi
, E, K; J' m; f8 M5 s9 ?
( _! c6 y8 l3 r+ a5 @   if [ "$flib" != "" -a "$flib" != "   " ]; then  Q5 b5 F& K- u7 G: f
        CMDLINE="$CMDLINE -fm_user_lib $flib"; |- d+ a4 u- \' p% s: o
   fi
+ \7 k7 N1 {) n: j, K; P2 |1 T0 q9 _8 c7 d5 e& A- S
   if [ "$libva" != "" ]; then/ H" l+ C: G; P$ Z( v! {8 ]3 B% t
        if [ -f $rundir/libva$suffix ]; then) z: k) M- E: `! R) }5 E" ^
          rm $rundir/libva$suffix6 Z! x5 s; f7 t2 B* q
        fi
5 m6 @4 M# u* A& g        $ln_default $libva $rundir
/ V; Q( \- s( a1 {9 V! k0 Y7 g6 G   fi
; l( O0 l# A$ f4 A$ w' e5 R' S+ G6 H
: M6 o3 `% Q+ m, X0 ?5 F% ?& ?9 K' ^
    # VCORE design library
( U* j$ ^9 B( L! d    if [ "$vlog_design" != "" ]; then( j! @0 D4 y4 m( O$ c
        $ln_default $cwd/$vlog_design $rundir/`basename $vlog_design`
& W5 Q0 S+ g! [9 Z0 ^    fi" o1 `4 T% j  w7 Z

7 L0 ?5 Z, N) r+ u4 {* L    if [ "$EPIC_EXTRA_CAPACITY" = "1" ]; then
/ ^6 ]9 I2 D' q6 x        EXTRA_CAPACITY=YES
1 N& U% Q9 [8 s! p+ |# k9 k    fi
4 e( B' c% ^$ [" k+ H
8 ^, a" X3 \6 ^1 l; U% f. y" Y    [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "0" -a -x "${command}_xc" ] && command=$command"_xc"
1 K0 K# v6 B: c* j5 K  u! H: c    [ "$EXTRA_CAPACITY" = "YES" -a "$USE_ACE" = "YES" -a "$DB_REAL" = "1" -a -x "${command}_a_xc" ] && command=$command"_a_xc"+ g" ]) F4 O/ P5 g: h$ d/ I
    #Create temp file if dual process is on
2 n# X! J# v/ J7 h, f8 C    if [ "$EPIC_ARCH" = "SUN4_SUNOS_5" ]; then
, u! Q/ f0 S: I4 T        if [ "$EXTRA_CAPACITY" = "YES" ]; then
/ I: C3 X# w% U8 I6 A/ o. Y            touch $rundir/rpcidfile0 G; W) S! \6 ?6 v% @6 D0 C# r0 k9 e
        fi8 [* c7 N4 G" V. Z6 @" k& S# `
    fi
1 x2 g! ~! ]& ofi, l6 b# M# S8 m; {
/ T4 w) y; B( t0 @$ b# ^
run_cmd()$ c; i- w  F, T2 x8 \7 \
{( o, s& f& n$ W6 `8 D- X8 }" a
  command=$12 e# H' [: s. q* v( }
  shift4 D% A% P: F7 g- G, e1 S; v2 \' W
& W; P# l) m2 n! _
  if [ x"$VA_FILE" != x"" ] ; then
3 \3 W) y( f& h4 W     cmdline=$ARGV8 j9 p3 x& h4 j: O5 p2 q
  else
, h( I" t4 K; V. N% {     cmdline=$@
: k: M4 h5 F/ d2 o( c4 q. X! P8 _  fi
% ^8 c% K; p. i8 d& t, m6 n; |+ P- R" |
  debug=${DEBUGGER:+"$DEBUGGER $command"};0 b, |' f" d& L6 N
! t1 r  X* ~$ k6 R
  # To disable Exec-shield-randomize in RHEL3 U3+ when running nanosim and nanosim_a
- W: J& U8 I2 R4 Z" C7 o- _) T  # so save-restore may work.) r; s3 p% ]1 h5 i1 ^- e
  setarchStr=! C  u. }/ i/ T6 I# ^, T
  cmd2run=`basename $command`
! p, y: B6 M5 q$ {  if [ ${cmd2run} = 'nanosim' -o ${cmd2run} = 'nanosim_a' -o ${cmd2run} = 'powrmill' -o ${cmd2run} = 'timemill' ]; then
2 O2 |8 _' l3 C  o( N    if [ "$EPIC_ARCH" = "IBMPC_LINUX_LINUX" ]; then
1 b# S* Z1 u) D/ e! |( D% J% S      setarchStr="setarch i386 -R "
- X( Y$ n& s8 H    fi% X% p) F3 h* ^6 d  I
    if [ "$EPIC_ARCH" = "linux" ]; then
, Q+ u3 J" O# |0 @* D8 K      setarchStr="setarch i386 -R "' T, N: `6 x% I" _7 Z) i) `
    fi
+ |, r+ @! `0 Y/ I    if [ "$EPIC_ARCH" = "amd64" ]; then
, P/ n5 g+ c4 J% ?1 }      setarchStr="setarch i686 -R "+ z& e( d  X5 M  {* |& N1 C4 |
    fi2 a$ d) D# c. A- F+ x
    if [ "$EPIC_ARCH" = "suse32" ]; then' u' n: R" `8 W1 p) O
      setarchStr="setarch_suse i386 -R "
7 u  p1 C" {0 H' y* o4 R    fi# l4 ?: d) m" i) I, \6 G( ~
    if [ "$EPIC_ARCH" = "suse64" ]; then
7 x* z* P7 T3 t! `7 }0 c9 {      setarchStr="setarch_suse i686 -R "9 r. v& V2 [, T8 V2 C0 }1 Q
    fi
8 a, ]) \# m1 D+ u4 K& C8 a  fi
+ W# M9 {6 r! X6 j$ G3 r8 b$ |& l( m0 [: I; Y
  ret_stat=09 L' u; H$ y$ F7 I; {( W9 E9 x
  if [ -x "$command" ]; then. I# ?8 k) D6 }9 f4 _
      if [ "$debug" ]; then
' d8 ?  `8 m* E6 _# j. B5 q5 K        _debug_args_=$cmdline, e( K8 C! u" E- b
        . .epic-debug
; t. Q. ^) }8 Y. u" H! r) ]) W      else
  t  m9 m# P* J        DEBUGGER=; export DEBUGGER
2 r7 W% O: I: r+ [( i8 S        $setarchStr $command $cmdline; m3 \2 A: \$ h/ @5 b
      fi0 _- c  \7 t/ J3 u$ z
      ret_stat=$?
+ h! m' U: ]+ j2 X' d4 {  else
- O  u( a( [( ]- r; _    echo "Corrupt installation, executable \"$1\" not found!"8 a& `) \( o8 r
    ret_stat=1
" p9 p2 S( o$ \: C* F# K9 R3 ~  fi
8 E% F  f' v8 }}- [7 s3 B6 j* Y
5 c- e& w8 w: r# \! S
# keep runing cmd if ctrl file exist  `# f$ ?: \6 r  }
1 d# K/ d! h% V# Z, d/ S
run_loop()
/ d' r' ]& H) _! ^. a2 D( I{; W; L0 Z& Y5 D1 l
  command=$1' o) N8 o( u1 S. e0 b9 v4 N+ N
  shift2 S. u# i$ u8 u2 o
5 T) [1 s9 p  u* c
  if [ x"$VA_FILE" != x"" ] ; then
; S+ {' f3 j, d& l     cmdline=$ARGV( q$ E- l  D7 O7 V1 R- [9 E4 N2 m
  else2 n) G+ q3 C" }8 Z
     cmdline=$@7 q5 |$ i  U9 K# L, P! n
  fi
, g3 Y) B6 T2 z" q& a9 W# J" O! v# x  H' n- X
  while [ $ret_stat -eq 0 -a -r $LOOP_CTRL_FILE$$ ]; do
' \# w9 R+ G& m    . $LOOP_CTRL_FILE$$
. g! h! ]; N% \3 a4 P4 Y    run_cmd $command $cmdline -banner 2
- ^" F) t! ?9 y3 r& H& E; h  done;# z& D( S  Z# P. N* y% \: T
( s5 J& B/ l$ b# {% u  s
  if [ $ret_stat -ne 0 -a -r $LOOP_CTRL_FILE$$ ]; then7 N' r- |, G2 n: `4 K7 n) n
    rm -f $LOOP_CTRL_FILE$$; C) N1 p% m. o# s
  fi% e4 j8 k+ [- Q' T# T6 ^
}. N$ T0 h# x. g# C, I- f+ D
3 l5 G5 R9 h/ ~0 I) }- x" |7 \
har_check_ret_stat()( P8 i" k* c( X
{& U1 m) ]# V' V2 n, n
  if [ $ret_stat -ne 0 ]; then
" H" y' m  B! M8 O. c! R    echo "Simulator returned with non-zero exit status. Stopping."4 ]) P9 G2 a! f
    exit 1
6 T( U# S9 J, K  fi6 @0 k$ [4 }- `0 M
}
6 m( @5 A$ E$ d3 i, T  O
" b, d* H3 z$ L7 e3 h" s8 l: ~#8 @* E. ~; R3 B3 K, g( o
# set stacksize and datasize limit
" h. v& T" N) z( B( E#
# y% [( A5 h1 Z* r# C% U
0 D! M3 J4 q5 `; j1 mset_data_limit
6 M' Z4 [4 F7 }" D. ~set_stack_limit% S3 C% Z1 w$ O

" S( n+ ~  q* a# g#rm -f $LOOP_CTRL_FILE
) x; v3 R( d- G0 }6 K5 G8 D7 Y9 F1 `/ ]
run_main()- ~  n! D$ h9 E) @/ P6 I* {7 l
{
* }/ a/ z! z. {# Eif [ $is_special_har_run -eq 1 ]; then
, g& m. `! Z+ U, m( U1 l$ }$ M  if [ "$har_ofile_prefix" = "" ]; then
! {# I$ }- Y, M: S% @1 M+ k    echo "Wrapper bug. Notify Synopsys technical support."
! i7 V! U3 P5 L) t$ P    exit 1/ Y, ]" g- V0 N! }1 I
  fi
$ v! D+ ?$ ?/ I4 E* y# B  if [ "$har_hilo_file" = "" ]; then$ r, e5 W6 z" v0 A5 n, c
    # no user specified hi lo file - do both runs
) a9 y4 b. Q8 o/ O    run_cmd $command $CMDLINE -har_one -har_setup3 e; c4 ^% V. |- j! T; d$ e
    if [ $ret_stat -ne 126 ]; then
& q9 v$ k2 [* o% g- ~      har_check_ret_stat* h1 o7 \6 S! g% w1 R1 w# Z
      if [ -r $LOOP_CTRL_FILE$$ ]; then
4 H! e& o; h: K  z+ d        run_loop $command $CMDLINE -har_one -har_sim ${har_ofile_prefix}.hl) c$ V' J9 |! ?% g0 c, J; ]
        rm -f ${har_ofile_prefix}.hl
; S1 ~2 v7 Q) k5 P      else
* b9 y$ G5 Q6 a* o0 {/ C3 j        run_cmd $command $CMDLINE -har_one -har_rmhilo -har_sim ${har_ofile_prefix}.hl
4 }7 N/ J+ F; `; e& E; s      fi+ t" j9 P/ [9 `
    else
. L9 h! Q) t1 O$ N      ret_stat=0" e! \  d8 B& n
    fi+ b" T( T! [7 `- M8 a% j+ x
  else7 H6 d' b& ?& D% O7 c/ W* I; C
    # user gave a hi lo file name1 p  H. T- v, y2 g0 L  |
    if [ -f $har_hilo_file -a -s $har_hilo_file ]; then
% l5 |* A: Z1 G& f      # file exists - use it - only do sim run
6 ~2 V; w7 e% D! u* c* ~, @, m      run_cmd $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}' ^1 u8 M* w' E% d4 W$ b
      run_loop $command $CMDLINE -har_one -har_ff -har_sim ${har_hilo_file}
- G6 T" n( o; I/ U& g% I/ H    else, \4 Q+ k2 i( F' x2 d
      # no such file - generate it - do both runs
4 G* J0 w' }) ^1 Q      run_cmd $command $CMDLINE -har_one -har_fnf -har_setup) d6 G9 j9 v+ s5 Y  ~0 J' l
      if [ $ret_stat -ne 126 ]; then
; p4 a% q' ]" K& B* q% F  T        har_check_ret_stat  l: r. g1 z; a3 u8 V' [! s
        if [ ! -f ${har_ofile_prefix}.hl ]; then% |# Z( t3 p/ I# {
          echo "No hi lo file generated after setup phase. "! N/ ^) O; I$ m4 B
          echo "Contact Synopsys technical support.". ?' J# E- v( f- `5 Q+ x7 U
          exit 1
* o' |: K! }$ z5 W' D        else$ G' p) w$ z2 c. z. Y
          if [ ${har_ofile_prefix}.hl != $har_hilo_file ]; then3 e7 m% g: x4 `- ]
            mv ${har_ofile_prefix}.hl $har_hilo_file
2 D8 w7 p- Z& d          fi
) d, ~; \- V4 y' G  Y( T5 j0 }        fi
8 w, w9 r7 U" w# q$ K0 {& y        if [ -r $LOOP_CTRL_FILE$$ ]; then, I  J7 J5 j0 N7 C3 Y8 S
          run_loop $command $CMDLINE -har_one -har_sim $har_hilo_file& [. H' t4 S7 m( l
        else
$ s  ~  I8 ^& @  ~. [! _          run_cmd $command $CMDLINE -har_one -har_sim $har_hilo_file6 _: G0 N5 D3 h! G
        fi
: _2 w& E& u, P3 x. E$ J2 Q3 N- u      else ( t" h7 s+ |2 s/ v1 x2 c- u
        ret_stat=0
5 S* f" ]  a* i5 {8 U/ W+ F      fi
3 x1 }% }% _% f3 d! ~    fi
0 d- g8 _. M9 z& S  fi
! B: A2 K& `* j3 [else  
3 A: q4 G- q$ Z3 \% ]6 d' d# don't loop if -har_setup
% d7 y& o1 [8 Y* n" h+ |0 D3 P  if [ $have_har_setup_flag -eq 1 ]; then/ }- {4 x; L& m3 p
    run_cmd $command $CMDLINE
5 J# m8 N. F: a( T, ?" F    if [ -r $LOOP_CTRL_FILE$$ ]; then
+ T7 j3 Q+ g! w9 t      rm -f $LOOP_CTRL_FILE$$
/ ^4 M6 G7 }. A    fi9 I7 d# C' ?2 O1 q7 W; [8 ]
  else
7 P5 J& j9 b; Y: T    run_cmd $command $CMDLINE
! S0 p0 \. u6 `& J! p7 q. Z/ f    run_loop $command $CMDLINE
8 L1 v' i4 f. H1 y; s  fi
/ g: h5 m+ E; D. Y2 ?fi3 A) R5 B3 @( Y( l- e
- U! ]6 ^- J+ }$ J  B9 y
if [ $ret_stat -eq 0 -a $cmdname = "powrmill" -a $postgres = "y" -a ! -z "$workDir" ]; then% e: V/ j5 ?9 h) n9 P) w0 O
  pwCreateErrDB -w $workDir -e $errFile4 k0 E9 L5 l3 b5 E% h0 ^2 e
  ret_stat=$?5 d: V- g8 G) ?9 e' F, c/ A' b
fi
3 z, a  I1 L, D# l% ?. H5 O}
8 O- a# A1 f: L/ D- |
& @3 S- y- u4 Y! M7 z# d% Z: K" dcleanup_alter()
& o+ s7 x) ^4 P  y0 q% }/ F- P{+ g% X  v) R! E; d
   /bin/rm -f $ALTER_COUNT_FILE 1>&2
8 n' n6 y  K$ T7 {+ z   /bin/rm -f $ALTER_HK_FILE 1>&2
$ V* S1 X, x) o, b0 u- N3 X}
6 E/ ^2 T- \- D; R3 L4 }2 C8 l/ m( ~) i3 |6 ?- D
#generate alter temp files based on pid
" G! B9 C4 Y' x$ iALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$
2 e9 q  s" y; N6 B. Lif [ -f $ALTER_COUNT_FILE ]7 l+ R6 `4 @+ r& J
then 7 v# S% r8 V4 ?6 g
  until [ ! -f $ALTER_COUNT_FILE ]
) B& O1 F3 ~9 `% y  do
1 b, g/ `7 b1 W    ALTER_COUNT_FILE="$ALTER_COUNT_FILE"$$* r. @& t8 Y/ W# C9 y6 t2 G
  done
# D( N( H; E3 t2 o  D2 P  Kfi) ^1 y5 A  s; b7 U  ?( O. Z% f
export ALTER_COUNT_FILE
* L; a1 p' g; A. p1 D0 C
% q! f" E2 @5 a3 H0 OALTER_HK_FILE="$ALTER_HK_FILE"$$
6 V1 E3 S% Y- ^if [ -f $ALTER_HK_FILE ]/ `1 k6 f- n/ P* V
then % `& p2 m- F  b6 \- w
  until [ ! -f $ALTER_HK_FILE ]) V4 y  W( {; l1 T8 |; V8 ~
  do3 d4 A, z! I' M+ _
    ALTER_HK_FILE="$ALTER_HK_FILE"$$
7 g0 O# g2 H3 D# J4 a/ |% n  done
3 ^: ~2 Y4 |. _8 efi3 O! L, L, Y8 H" [4 s
export ALTER_HK_FILE
8 _1 W6 ?9 {7 i/ I6 T1 p1 }. Y! r, z1 ]
#generate monte carlo related temp files based on pid& e: |. v9 V4 `8 o
cleanup_monte()/ e( b5 ?5 Y; P  _& M- h
{
( B' j0 F7 b; w5 d+ x   /bin/rm -f $MONTE_IMG_FILE 1>&29 q1 q! r( M. m! o- k* O# t9 _
   /bin/rm -f $MONTE_IMG_FILE.gz 1>&2
( e, n% I, J) G   /bin/rm -f $MONTE_COUNT_FILE 1>&2
! u! y( o; L6 A% K# Q   /bin/rm -f $MONTE_CFG_FILE 1>&25 e" `6 D  P, H( ?: O
}  v, u1 o# E# p+ i' b2 e9 T

+ t5 U, q) p5 d2 X& P; a* fMONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$; n$ G: f; _. V! {6 w$ y8 w1 \, ~; U
if [ -f $MONTE_COUNT_FILE ]
* e( p; L! u7 G- m+ ?5 [then9 |7 h- e0 q& S) u/ \6 O
  until [ ! -f $MONTE_COUNT_FILE ]
8 j- s- x1 T. k  do/ L/ ~  ^) \; Z7 G* o1 h
    MONTE_COUNT_FILE="$MONTE_COUNT_FILE"$$
- X5 N! d) Q' M; \0 O& w  done. S' v9 C3 I1 l( P
fi# C. q3 J  L0 q
export MONTE_COUNT_FILE$ X1 K5 ?: b" v5 f

: ~  d" M1 Q9 rMONTE_IMG_FILE="$MONTE_IMG_FILE"$$
' W8 c$ S6 a. c2 jif [ -f $MONTE_IMG_FILE ]
; n. X+ h9 l% fthen1 a- U2 E5 ?5 l9 b
  until [ ! -f $MONTE_IMG_FILE ]
! d  S# B! E+ g9 |& S8 ]4 ~6 u7 U8 y+ F  do& ]/ O& e7 {$ f9 V. K; T2 a7 p
    MONTE_IMG_FILE="$MONTE_IMG_FILE"$$
$ _& ~: I3 `' d: ]  done
0 ^7 k, J# B% ~& qfi
! h6 y/ y6 G( Bexport MONTE_IMG_FILE
% ]4 m$ k- B6 t: \3 O/ Y+ x& A" N6 ?+ }7 Z/ w7 a! F
MONTE_CFG_FILE="$MONTE_CFG_FILE"$$
) T' ]$ f& D- Sif [ -f $MONTE_CFG_FILE ]
; T+ M3 |. [* u8 v5 @then
, v' b& Q* Y7 v& n# ?  until [ ! -f $MONTE_CFG_FILE ]( g! s2 j, [5 j1 K# }  F# N' e
  do' V4 I" R2 Y; H
    MONTE_CFG_FILE="$MONTE_CFG_FILE"$$
$ v' x+ y/ f$ O4 F  done
: a3 s* R* w) c4 rfi
3 e' t/ Q, _5 V0 Q3 l. P
6 O2 s( k5 E* Y* j( C" g# main iteration- K) U5 F5 x2 A
run_main
& B6 R3 Z; B( s' x; s6 X- O) ?$ y; l/ ?, C
if [ $ret_stat -ne 0 ] ! Y, W6 z3 i$ c, s! S0 u
then
3 D) i: D* ~5 g7 Q  cleanup_alter
. M1 g& b0 c5 N' X  o4 p( Q/ u( u  cleanup_monte
6 O! v3 C! z8 K2 e: U& k  Exit $ret_stat  \7 {' h/ Z) U0 e
fi" O% U7 Z, U( Q# p2 G( ]6 t# {

; r) m$ ^6 B1 |* x8 J9 W#Alter related iterations
2 ]2 D8 c1 Q2 Q8 k5 w" k" b: L1 Y  h8 w0 U
iterations=05 z! @7 j$ @! L* z# V+ Q
count=0
8 `  @9 z/ Z( P) l1 {# _if test -s "$ALTER_COUNT_FILE"5 m) w$ K/ Z# X1 J: X
then8 N. W4 h4 |3 K7 h6 s
  if [ -r $ALTER_COUNT_FILE ]; then
2 V/ y' L8 `' n+ K: r9 d6 E   exec 7< $ALTER_COUNT_FILE( f- b# t- E  R3 Z% {* d& B
   read iterations <&76 j7 Y/ O" t1 E  t
fi5 B9 M! Y7 W2 A5 E
fi1 i$ B& A, I% h5 O
, V- P! z/ e3 r. y4 U# i# F1 i
trap 'echo Program Interrupt; cleanup_alter; exit 1'  2
" A8 T& E- A; ^% zwhile [ $count -lt $iterations ]. N% t; a6 \5 ?# c7 t
do
/ D- a3 p* P) _1 x6 n count=`expr $count + 1`* C9 x' @0 U/ b. d5 Z) z. H1 ]
ALTER_COUNT=$count
$ Z4 V" I/ c( `% n export ALTER_COUNT
2 P) X% B. R0 }( [
0 Y+ T% J3 o& n& K run_main
( V2 A$ [1 P2 q) {+ g0 o; e
2 V6 o; S. T! j; s) K5 q8 H" X( Tdone4 v9 l, u3 C3 q
& P# d, h2 Y9 J% A2 l
#Monte carlo related iterations3 E( I' _" h! o* \
* m: x, }8 q' G9 [! c5 y( t
monte_runtime_summary()
! [' p7 J" s" }( B* A0 l{# m0 D" O: T% W2 X8 ]+ u/ A3 A5 T
  keyword_1=real2 x( G# t1 _$ t7 q% |$ ?6 F
  keyword_2=user7 o$ ~& i' r8 ?" D  q1 X
  keyword_3=sys
: y0 u' U( X: Y9 y$ K3 e: h! q1 Y  ofile_prefix=nanosim
& C% |' v0 s* d# ?+ s, t" F3 [  I( w  ]+ \2 H0 d( y6 \/ q
  if [ ! -z "$o_option" ]; then
+ b+ r2 B3 y& {2 z! t4 p8 h    logfile=${o_option}.log) m% j$ k3 A$ @4 g* ~
  else- I6 E- o! d0 V6 }0 o2 o
    logfile=${ofile_prefix}.log1 j5 R+ \. r# z
  fi
8 S3 D" D3 C1 d1 {9 |# T/ d, G/ E( h
  if [ -f $logfile ]; then: O% _3 n5 M8 T" v8 R0 a
    echo "*** Monte Carlo Total Run Time Summary ***" >> $logfile      
0 f7 c* b% I& j! s2 q8 Q- [3 Z    cat $logfile | grep ${keyword_1} | grep ${keyword_2} | grep ${keyword_3} | awk 'BEGIN{ t_real=0; t_user=0; t_sys=0; } NF==6 { t_real=t_real+$1; t_user=t_user+$3; t_sys=t_sys+$5 } END{ print "\t", t_real, $2, t_user, $4, t_sys, $6 }' >> $logfile' B8 m! ?! c- ~, Z
  fi
* q  Q3 i. A$ K0 Y8 x" |$ Q}
4 _. ~; T! J6 P  P# t0 k
3 S3 R1 u4 h) E2 K% c( }! M% S! {5 Qnext_monte=04 s) q6 z+ Y9 m$ R
cur_monte=0
2 Y' T% z  L/ b. i) u1 T! W$ R5 D2 ~+ s$ W8 C
if test -s "$MONTE_COUNT_FILE"
! I* \8 @# X7 H+ D1 Y" O7 c+ m+ lthen
) B$ Z/ B! R* \' B* A  K0 Y7 R4 l  if [ -r $MONTE_COUNT_FILE ]; then
+ |) x1 T/ C, a- @: ]   exec 8< $MONTE_COUNT_FILE
2 S3 g! h1 t. Z  \  C3 S   read next_monte <&8% \' \4 \9 b$ i9 V/ B
  fi) j0 q7 H; A5 t1 }2 f
fi
2 |% x5 P' f. j! z: m6 }1 g& h4 F( P
trap 'echo Program Interrupt; cleanup_monte; exit 1'  2
  s" w2 q0 G8 c% u1 X1 L) kwhile [ $next_monte -gt 0 -a $next_monte != $cur_monte ]. i) A- s# Q8 d$ O+ E  D
do
3 D& n! ~2 j5 s  t  NS_CURRENT_MONTE_COUNT=$next_monte
/ ^& U& K/ O1 n( G  export NS_CURRENT_MONTE_COUNT3 {5 l$ e" j4 ?2 x+ q, R- C: v

) N% K# W; `' O/ n  echo "restore_ckt_state save_file=$MONTE_IMG_FILE" > $MONTE_CFG_FILE
# |% o1 R+ ^8 A" k0 S, t8 e  CMDLINE="$CMDLINE -c $MONTE_CFG_FILE"
, u9 A: [8 r5 `6 z8 j' s: c' |- J! u! ]  run_main
% `5 t6 }: I! q8 N
1 [* K( l$ O1 c  N3 r4 x  cur_monte=$next_monte, A) ^6 s' a- ?5 e0 e! b
  exec 8< $MONTE_COUNT_FILE, Q/ ~1 Z1 [0 R- O/ L
  read next_monte <&8
# {0 O+ p0 T/ t4 Jdone
& [/ Z. K6 f/ ]2 _1 N) Z' J, L
, b8 d" O# Q( I: ^+ K  yif [ -f $MONTE_COUNT_FILE ]
. ]" a' }; Z3 `5 k9 Kthen
. K* U* H3 p1 J. a- z1 c  monte_runtime_summary
: f3 E  F8 W$ j# Kfi
* m# J' d2 K# \) d" t& R. `
( n3 L4 }+ o! ]9 R9 X) Qcleanup_alter
0 B9 C; b# J7 A8 ~cleanup_monte0 ?0 R: t9 H# }% K# @7 C9 K

& m1 [  ~" P  PExit $ret_stat
作者: jerryyau    時間: 2012-5-24 09:22 AM
nanosim有說支援ubuntu 11.10?為何不用RHEL5,這才是EDA的主流linux os




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/) Powered by Discuz! X3.2