@@ -18,7 +18,7 @@ PARAMS=(
1818 5 32 3
1919 36 31 32
2020 12 31 16
21- 23 31 31
21+ # 23 31 31
2222 24 17 32
2323 24 20 32
2424 # 23 17 33
@@ -28,40 +28,43 @@ PARAMS=(
2828 # 17 13 17
2929)
3030
31+ VSIM_LOGFILE=vsim.log
32+ rm -f $VSIM_LOGFILE
33+
34+
3135run_regr () {
32- local use_ecc=$1
3336 make golden M=$M N=$N K=$K > /dev/null
34- make all 1> /dev/null 2>&1
35- if [[ $use_ecc -eq 1 ]] ; then
36- timeout $BASE_TIMEOUT make run USE_ECC=1 1> /dev/null 2>&1
37- else
38- timeout $BASE_TIMEOUT make run 1> /dev/null 2>&1
39- fi
37+ make all USE_REDUNDANCY= $SW_REDUNDANCY 1> /dev/null 2>&1
38+ timeout $BASE_TIMEOUT make run USE_ECC= $USE_ECC USE_REDUNDANCY= $HW_REDUNDANCY 1> $VSIM_LOGFILE 2>&1
39+
40+ # If you want detailed output, uncomment this line
41+ # tail -10 $VSIM_LOGFILE
42+
4043 if [[ $? -eq 124 ]]; then
41- echo " ERROR : M= $M N= $N K= $K "
44+ STATUS= " TIMEOUT "
4245 else
43- echo " OK : M=$M N=$N K=$K "
46+ if grep -wq " Errors: 0," $VSIM_LOGFILE ; then
47+ STATUS=" OK "
48+ else
49+ STATUS=" ERROR "
50+ fi
4451 fi
52+ echo " $STATUS : M=$M N=$N K=$K , ECC=$USE_ECC , HW_RED=$HW_REDUNDANCY , SW_RED=${SW_REDUNDANCY} "
4553}
4654
47- i=0
48- while [[ $i -lt ${# PARAMS[@]} ]]; do
49- M=${PARAMS[$i]}
50- N=${PARAMS[$((i + 1))]}
51- K=${PARAMS[$((i + 2))]}
52- i=$(( i + 3 ))
53-
54- run_regr 0
55- done
56-
57- # Second loop: USE_ECC=1
58- echo " Running with USE_ECC=1"
59- i=0
60- while [[ $i -lt ${# PARAMS[@]} ]]; do
61- M=${PARAMS[$i]}
62- N=${PARAMS[$((i + 1))]}
63- K=${PARAMS[$((i + 2))]}
64- i=$(( i + 3 ))
55+ for SW_REDUNDANCY in 0 1; do
56+ for HW_REDUNDANCY in 0 1; do
57+ for USE_ECC in 0 1; do
58+ i=0
59+ while [[ $i -lt ${# PARAMS[@]} ]]; do
6560
66- run_regr 1
61+ # For redundant operations we reduce the size of the matrix so run time is about the same
62+ M=$(( ${PARAMS[$i]} / (1 + $SW_REDUNDANCY )) )
63+ N=${PARAMS[$((i + 1))]}
64+ K=${PARAMS[$((i + 2))]}
65+ i=$(( i + 3 ))
66+ run_regr
67+ done
68+ done
69+ done
6770done
0 commit comments