OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.74/] [tools/] [bin/] [tbrun_tbwrri] - Blame information for rev 38

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 28 wfjm
#!/bin/bash
2 37 wfjm
# $Id: tbrun_tbwrri 808 2016-09-17 13:02:46Z mueller $
3 28 wfjm
#
4 35 wfjm
# Copyright 2014-2016 by Walter F.J. Mueller 
5 29 wfjm
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
6
#
7 28 wfjm
#  Revision History:
8
# Date         Rev Version  Comment
9 37 wfjm
# 2016-09-17   808   1.3.3  add --r(l|b)mon,(b|s)wait; configure now via _conf=
10
# 2016-09-03   805   1.3.2  add TIMEFORMAT and time for make commands
11
# 2016-08-21   800   1.3.1  add -norun, -nomake
12
# 2016-08-06   795   1.3    use tbfilt; fixup -lsuf logic
13
# 2016-07-03   783   1.2.5  drop ghdl_assert_filter (use --ieee=... at ghdl lvl)
14 36 wfjm
# 2016-06-25   778   1.2.4  drop make ghdl_tmp_clean logic
15
# 2016-06-18   776   1.2.3  use ti_rri --tout to set connection timeout
16 37 wfjm
# 2016-06-05   773   1.2.2  use _bsim.log for behavioral sim log
17 36 wfjm
# 2016-03-20   748   1.2.1  BUGFIX: add portsel oob for -hxon
18
#                           use 120 sec timeout for simulation
19 35 wfjm
# 2016-03-18   745   1.2    use --sxon and --hxon instead of --xon
20 30 wfjm
# 2015-04-11   666   1.1    add --fusp,--xon
21 28 wfjm
# 2014-12-27   622   1.0    Initial version
22
#
23
 
24 30 wfjm
chkval ()
25
{
26
  if [[ $1 =~ --.* || $1 =~ -[a-z]* ]]; then
27
    echo "tbrun_tbwrri-E: value forgotten prior to '$1'"
28
    exit 1
29
  fi
30
}
31
 
32 28 wfjm
docmd ()
33
{
34
  if [[ -z "$optdry" ]] ; then
35 37 wfjm
    echo "$2"
36 28 wfjm
    eval "$1"
37 37 wfjm
  else
38
    echo "$1"
39 28 wfjm
  fi
40
}
41
 
42
optdry=""
43 37 wfjm
optnomake=""
44
optnorun=""
45 28 wfjm
optlsuf=""
46
optstack=""
47
optghw=""
48
opttbw=""
49
optpack=""
50
optrri=""
51
optpcom=""
52
optcuff=""
53 30 wfjm
optfusp=""
54 35 wfjm
optsxon=""
55
opthxon=""
56 37 wfjm
optrlmon=""
57
optrbmon=""
58
optbwait=0
59
optswait=0
60 28 wfjm
 
61
# handle options
62
while (( $# > 0 )) ; do
63
  case $1 in
64 37 wfjm
    -dry|--dry)       optdry=$1    ;             shift 1 ;;
65
    -nomake|--nomake) optnomake=$1 ;             shift 1 ;;
66
    -norun|--norun)   optnorun=$1  ;             shift 1 ;;
67
    -lsuf|--lsuf)     optlsuf=$2   ; chkval $2 ; shift 2 ;;
68
    -stack|--stack)   optstack=$2  ; chkval $2 ; shift 2 ;;
69
    -ghw|--ghw)       optghw=$2    ; chkval $2 ; shift 2 ;;
70
    -tbw|--tbw)       opttbw=$2    ; chkval $2 ; shift 2 ;;
71
    -pack|--pack)     optpack=$2   ; chkval $2 ; shift 2 ;;
72
    -rri|--rri)       optrri=$2    ; chkval $2 ; shift 2 ;;
73
    -cuff|--cuff)     optcuff=$1   ;             shift 1 ;;
74
    -fusp|--fusp)     optfusp=$1   ;             shift 1 ;;
75
    -sxon|--sxon)     optsxon=$1   ;             shift 1 ;;
76
    -hxon|--hxon)     opthxon=$1   ;             shift 1 ;;
77
    -pcom|--pcom)     optpcom=$1   ;             shift 1 ;;
78
    -rlmon|--rlmon)   optrlmon=$1  ;             shift 1 ;;
79
    -rbmon|--rbmon)   optrlmon=$1  ;             shift 1 ;;
80
    -bwait|--bwait)   optbwait=$2  ; chkval $2 ; shift 2 ;;
81
    -swait|--swait)   optswait=$2  ; chkval $2 ; shift 2 ;;
82
    -\?|-h*|--h*)     opthelp=$1   ;             shift 1 ;;
83 28 wfjm
    -*)             echo "tbrun_tbwrri-E: invalid option '$1'"; exit 1 ;;
84
    *)     break;;
85
  esac
86
done
87
 
88
# complain if no tbench defined
89 30 wfjm
if [[ -n "$opthelp" || $# -eq 0 ]] ; then
90 28 wfjm
  echo "Usage: tbrun_tbwrri [opts] testbench rricmds..."
91
  echo "  Options:"
92
  echo "  --dry             dry run, print commands, don't execute"
93 37 wfjm
  echo "  --nomake          don't execute make step"
94
  echo "  --norun           don't execute run  step"
95 28 wfjm
  echo "  --lsuf  suff      use '_.log' as suffix for log file"
96
  echo "  --stack nnn       use  as ghdl stack size"
97 30 wfjm
  echo "  --ghw   fname     write ghw file with name '.ghw'"
98 28 wfjm
  echo "  --tbw   opts      append  to tbw command"
99
  echo "  --pack  plist     add '--pack=<=plist>' option to ti_rri"
100
  echo "  --rri   opts      append  to ti_rri command"
101
  echo "  --cuff            use cuff and not serport"
102 30 wfjm
  echo "  --fusp            use 2nd serport"
103 35 wfjm
  echo "  --sxon            use xon with 1st serport (via SWI(1))"
104
  echo "  --hxon            use xon with 1st serport (hardwired)"
105 28 wfjm
  echo "  --pcom            print test comments"
106 37 wfjm
  echo "  --rlmon           enable rlmon"
107
  echo "  --rbmon           enable rbmon"
108
  echo "  --bwait ns        start-up wait in ns for behavioral simulations"
109
  echo "  --swait ns        start-up wait in ns for post-syn simulations"
110 28 wfjm
  exit 1
111
fi
112
 
113 35 wfjm
# check that only one of --cuff --fusp or --?xon given
114 30 wfjm
ncfxcount=0
115
if [[ -n "$optcuff" ]] ; then ncfxcount=$(($ncfxcount+1)); fi
116
if [[ -n "$optfusp" ]] ; then ncfxcount=$(($ncfxcount+1)); fi
117 35 wfjm
if [[ -n "$opthxon" ]] ; then ncfxcount=$(($ncfxcount+1)); fi
118
if [[ -n "$optsxon" ]] ; then ncfxcount=$(($ncfxcount+1)); fi
119 30 wfjm
 
120
if (( $ncfxcount > 1 )) ; then
121 35 wfjm
  echo "tbrun_tbwrri-E: only one of --cuff,-fusp,--sxon,--hxon allowed"
122 30 wfjm
  exit 1
123
fi
124
 
125 28 wfjm
tbench=$1
126
shift 1
127 37 wfjm
makeopts=""
128 28 wfjm
 
129
tbenchname=$(basename $tbench)
130
tbenchpath=$(dirname  $tbench)
131
 
132
# issue makes
133 37 wfjm
#   add -C $tbenchpath only if not '.' to avoid 'Entering/Leaving' messages
134
makeopts=""
135
if [[ "$tbenchpath" != "." ]] ; then
136
  makeopts="-C $tbenchpath"
137
fi
138
if [[ -z "$optnomake" ]] ; then
139
  cmd="TIMEFORMAT=$'real %3lR   user %3lU   sys %3lS'"
140
  cmd+=$'\n'
141
  cmd+="time make $makeopts $tbench"
142
  docmd "$cmd"
143
  exitstat=$?
144
  if (( $exitstat > 0 )) ; then exit $exitstat; fi
145
  echo ""
146
fi
147 28 wfjm
 
148 37 wfjm
# check for test bench
149
if [[ ! -x $tbench ]] ; then
150
  echo "tbrun_tbwrri-E: $tbench not existing or not executable"
151
  exit 1
152
fi
153 28 wfjm
 
154 37 wfjm
# determine logfile name and determine startup wait (bwait or swait)
155 36 wfjm
logsuff="_bsim"
156 37 wfjm
waitns=$optbwait
157
if [[ $tbenchname =~ _[fsorept]sim$ ]] ; then
158
  logsuff=""
159
  waitns=$optswait
160
fi
161
if [[ -n "$optlsuf" ]] ;                 then logsuff+="_$optlsuf"; fi
162 28 wfjm
 
163
logfile="${tbenchname}${logsuff}.log"
164
 
165 37 wfjm
# determine simbus configure (done with inline mode _conf={l1;l2;l3})
166
# Note: .sdata expects hex in full signal size (addr 8 bit, data 16 bit)
167
conf=""
168
if [[ -n "$optcuff" ]] ; then
169
  conf+=".sdata 08 0004;"    # portsel = 0100 -> fx2
170
  conf+=".sdata 10 0004;"    # swi     = 0100 -> fx2
171
fi
172
 
173
if [[ -n "$optfusp" ]] ; then
174
  conf+=".sdata 08 0001;"    # portsel = 0001 -> 2nd ser
175
  conf+=".sdata 10 0001;"    # swi     = 0001 -> 2nd ser
176
fi
177
 
178
if [[ -n "$optsxon" ]] ; then
179
  conf+=".sdata 08 0002;"    # portsel = 0010 -> 1st ser XON
180
  conf+=".sdata 10 0002;"    # swi     = 0010 -> 1st ser XON
181
fi
182
 
183
if [[ -n "$opthxon" ]] ; then
184
  conf+=".sdata 08 0002;"    # portsel = 0010 -> 1st ser XON
185
fi
186
 
187
if (( $waitns > 0 )) ; then
188
  conf+=".wait $waitns ns;"
189
fi
190
 
191 28 wfjm
# now build actual test command
192 37 wfjm
cmdtb+="ti_rri --run=\"tbw $tbench -fifo"
193
if [[ -n "$conf" ]] ;   then    cmdtb+=" '_conf={$conf}'"; fi
194
if [[ -n "$opttbw" ]] ; then    cmdtb+=" $opttbw"; fi
195
if [[ -n "$optstack" ]] ; then  cmdtb+=" --stack-max-size=$optstack"; fi
196 30 wfjm
if [[ -n "$optghw" ]] ; then
197
  if [[ "$optghw" != *.ghw ]]; then optghw="$optghw.ghw"; fi
198 37 wfjm
  cmdtb+=" --wave=$optghw";
199 30 wfjm
fi
200 37 wfjm
cmdtb+=" 2>&1 \""
201 30 wfjm
 
202 35 wfjm
# Note: the following ensurs that we always have 'fifo=,' with an
203 30 wfjm
#       empty first field (the default fifo name)
204
fifoopts=""
205 35 wfjm
if [[ -n "$opthxon" ]] ; then   fifoopts+=",xon"; fi
206
if [[ -n "$optsxon" ]] ; then   fifoopts+=",xon"; fi
207 30 wfjm
 
208
if [[ -n "$fifoopts" ]] ; then
209 37 wfjm
  cmdtb+=" --fifo=$fifoopts"
210 30 wfjm
else
211 37 wfjm
  cmdtb+=" --fifo"
212 30 wfjm
fi
213
 
214 37 wfjm
cmdtb+=" --logl=3"
215
cmdtb+=" --tout=120."             # 120 sec timeout for simulation
216 30 wfjm
 
217 37 wfjm
if [[ -n "$optpack" ]] ; then   cmdtb+=" --pack=$optpack"; fi
218
if [[ -n "$optrri" ]] ; then    cmdtb+=" $optrri"; fi
219 30 wfjm
 
220 37 wfjm
cmdtb+=" --"
221 28 wfjm
 
222 37 wfjm
while (( $# > 0 )) ; do
223
  cmdtb+=" "
224
  if [[ $1 =~ " " ]] ; then cmdtb+="\""; fi
225
  cmdtb+="$1"
226
  if [[ $1 =~ " " ]] ; then cmdtb+="\""; fi
227
  shift 1
228
done
229 28 wfjm
 
230 37 wfjm
cmdtf="tbfilt -tee $logfile"
231
if [[ -n "$optpcom" ]] ; then cmdtf+=" -pcom"; fi
232 30 wfjm
 
233 37 wfjm
cmd="(export TIMEFORMAT=$'real %3lR   user %3lU   sys %3lS'; time $cmdtb) 2>&1"
234
cmd+=" | $cmdtf"
235
txt="$cmdtb | $cmdtf"
236 30 wfjm
 
237 37 wfjm
if [[ -z "$optnorun" ]] ; then
238
  docmd "$cmd" "$txt"
239 36 wfjm
fi

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.