source: trunk/IPs/systemC/processor/Morpheo/Script/SelfTest.sh @ 82

Last change on this file since 82 was 82, checked in by rosiere, 16 years ago
  • support locale (now must "just" translate)
  • update all component with new test format
  • update all component with usage
  • New component : decod queue and prediction_unit
  • Property svn:executable set to *
File size: 7.9 KB
Line 
1#!/bin/sh
2#-----------------------------------------------------------
3# $Id$
4#-----------------------------------------------------------
5
6#-----[ variable ]------------------------------------------
7
8declare    test_ko="Test KO";
9declare    test_ok="Test OK";
10declare    tmp="${MORPHEO_HOME}/tmp/SelfTest";
11declare    path="${MORPHEO_TOPLEVEL}/IPs/systemC/processor/Morpheo/Behavioural";
12
13declare -a directory=(
14    ""
15    "Generic/Counter"
16    "Generic/Queue_Control"                                 
17    "Generic/Queue"                                 
18    "Generic/RegisterFile/RegisterFile_Monolithic" 
19    "Generic/RegisterFile/RegisterFile_Multi_Banked"
20    "Generic/RegisterFile"                         
21    "Generic/Select/Select_Priority_Fixed"           
22    "Generic/Select"                               
23    "Generic/Shifter"                               
24    "Generic/Sort"                                 
25    "Generic/Victim/Victim_Pseudo_LRU"             
26    "Generic/Victim"                               
27
28    "Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit"
29    "Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit"
30    "Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit"
31    "Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit"
32    "Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue"
33    "Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station"
34    "Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit"
35    "Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit"
36    "Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue"
37    "Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue"
38    "Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit"
39    "Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit"
40    "Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit"
41    "Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit"
42    "Core/Multi_Execute_loop/Execute_loop/Network"
43    "Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue"
44    "Core/Multi_Execute_loop/Execute_loop/Register_unit"
45#   "Core/Multi_Execute_loop/Execute_loop"
46#   "Core/Multi_Execute_loop"
47
48    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit"
49    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit"
50    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit"
51    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit"
52    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue"
53    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit"
54    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit"
55    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_queue"
56    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select"
57    "Core/Multi_OOO_Engine/OOO_Engine/Rename_unit"
58    "Core/Multi_OOO_Engine/OOO_Engine"
59    "Core/Multi_OOO_Engine"
60   
61    "Core/Multi_Front_end/Front_end/Decod_unit/Decod"
62    "Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue"
63    "Core/Multi_Front_end/Front_end/Decod_unit"
64    "Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management"
65    "Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue"
66    "Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue"
67    "Core/Multi_Front_end/Front_end/Ifetch_unit"
68    "Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue"
69    "Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register"
70    "Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer"
71    "Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue"
72    "Core/Multi_Front_end/Front_end/Prediction_unit/Direction"
73#   "Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue"
74#   "Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue"
75#   "Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table"
76#   "Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table"
77#   "Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor"
78#   "Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor"
79    "Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue"
80    "Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack"
81    "Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table"
82    "Core/Multi_Front_end/Front_end/Prediction_unit"
83    "Core/Multi_Front_end/Front_end"
84    "Core/Multi_Front_end"
85
86    );
87                                           
88
89#-----[ usage ]---------------------------------------------
90function usage ()
91{
92    echo "Usage          : ${0} action";
93    echo "Arguments      : ";
94    echo " * action";
95    echo "   * test      : test all component";
96    echo '                 for each component, create file in ${MORPHEO_HOME}/tmp/';
97    echo "   * test_all  : same as test, but don't stop at the first error";
98    echo "   * res       : list test's resultat";
99    echo "   * list      : list test's resultat";
100    echo "   * clean     : erase file in ${MORPHEO_HOME}/tmp/ directory";
101    echo "   * clean_all : clean all component";
102    echo "   * help      : print this message";
103    echo "";
104    echo "Notes          : ";
105    echo " * Morpheo environment must be positionned";
106    exit;
107}
108
109#-----[ main ]----------------------------------------------
110function main ()
111{
112    # Test operand
113    if test ${#} -ne 1; then
114        usage ${*};
115    fi;
116
117    if test -z ${MORPHEO_TOPLEVEL}; then
118        usage ${*};
119    fi;
120
121    if test ! -d ${tmp}; then
122        mkdir ${tmp};
123    fi;
124
125    nb_cpu=$(cat /proc/cpuinfo |grep -c processor);
126    pwd=${PWD};
127    case ${1} in
128        "test" | "test_all")
129            for i in ${directory[@]}; do
130                component=$(basename ${i});
131                dir="${path}/${i}/SelfTest";
132
133                if test -d "${dir}"; then
134                    # have previous test ok ?
135                    declare -i make_test=1;
136                   
137                    if test -f ${tmp}/${component}; then
138                        res_test=$(cat ${tmp}/${component});
139                        if test "${test_ok}" = "${res_test}"; then
140                            make_test=0;
141                        fi;
142                    fi;
143
144                    if test ${make_test} -eq 1; then
145                        cd ${dir};
146                        make config;
147                        make -j${nb_cpu} execute;
148                        case ${?} in
149                            "0")
150                                echo ${test_ok} > ${tmp}/"${component}";
151                                ;;
152                            *)
153
154                                echo ${test_ko} > ${tmp}/"${component}";
155                                echo "";
156                                echo "${component} : ${test_ko}";
157                                echo "";
158                                if test ${1} = "test"; then
159                                    exit 1;
160                                fi;
161                                ;;
162                        esac;
163                    fi;
164                else
165                    echo "${component} have not SelfTest directory.";
166                fi;
167
168                cd ${pwd};
169            done;
170            ;;
171
172        "res")
173            for i in ${tmp}/*; do
174                if test -f ${i}; then
175                    component=$(basename ${i});
176                    res_test=$(cat ${i});
177
178                   
179                    case "${res_test}" in
180                        "${test_ok}") color=32; 
181                            ;;
182                        "${test_ko}") color=31; 
183                            ;;
184                        *)            color=39; 
185                            ;;
186                    esac
187                    echo "[1;${color}m${res_test} - ${component}[1;0m";
188                fi;
189            done;
190            ;;
191
192        "list")
193            for i in ${directory[@]}; do
194                component=$(basename ${i});
195                echo "${i}";
196            done;
197            ;;
198
199        "clean")
200            rm -r ${tmp};
201            ;;
202           
203        "clean_all")
204            for i in ${directory[@]}; do
205                component=$(basename ${i});
206
207                cd ${path}/${i};
208                make clean;
209                dir="SelfTest";
210
211                if test -d ${dir}; then
212                    cd ${dir};
213                    make clean;
214                else
215                    echo "${component} have not SelfTest directory.";
216                fi;
217                cd ${pwd};
218
219            done;
220            ;;
221
222        "help")
223            usage ${*};
224            ;;
225        *)
226            usage ${*};
227    esac
228}
229
230#-----[ Body ]----------------------------------------------
231main ${*};
232
Note: See TracBrowser for help on using the repository browser.