@@ -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