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

Last change on this file since 112 was 112, checked in by rosiere, 15 years ago

1) Stat_list : fix retire old and new register bug
2) Stat_list : remove read_counter and valid flag, because validation of destination is in retire step (not in commit step)
3) Model : add class Model (cf Morpheo.sim)
4) Allocation : alloc_interface_begin and alloc_interface_end to delete temporary array.
5) Script : add distexe.sh
6) Add Comparator, Multiplier, Divider. But this component are not implemented
7) Software : add Dhrystone

  • Property svn:executable set to *
File size: 11.1 KB
Line 
1#!/bin/bash
2
3#-----------------------------------------------------------
4# $Id$
5#-----------------------------------------------------------
6
7#-----[ variable ]------------------------------------------
8
9declare    test_ko="Test KO";
10declare    test_ok="Test OK";
11declare    test_unknow="???????";
12declare    tmp="${MORPHEO_HOME}/tmp/SelfTest";
13declare    path="${MORPHEO_TOPLEVEL}/IPs/systemC/processor/Morpheo/";
14
15declare -a directory=(
16    "Common"
17
18    "Behavioural"
19    "Behavioural/Configuration"
20    "Behavioural/Custom"
21
22    "Behavioural/Generic/Comparator"
23    "Behavioural/Generic/Counter"
24    "Behavioural/Generic/Divider"
25    "Behavioural/Generic/Multiplier"
26    "Behavioural/Generic/Priority"
27    "Behavioural/Generic/Queue_Control"                                 
28    "Behavioural/Generic/Queue"                                 
29    "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic" 
30    "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked"
31    "Behavioural/Generic/RegisterFile"                         
32    "Behavioural/Generic/Select/Select_Priority_Fixed"           
33    "Behavioural/Generic/Select"                               
34    "Behavioural/Generic/Shifter"                               
35    "Behavioural/Generic/Sort"                                 
36    "Behavioural/Generic/Victim/Victim_Pseudo_LRU"             
37    "Behavioural/Generic/Victim"                               
38
39    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue"
40    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/Operation"
41    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit"
42    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit"
43    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit"
44    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit"
45    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue"
46    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station"
47    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit"
48    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit"
49    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue"
50    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue"
51    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit"
52    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit"
53    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit"
54    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit"
55    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network"
56    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue"
57    "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit"
58    "Behavioural/Core/Multi_Execute_loop/Execute_loop"
59    "Behavioural/Core/Multi_Execute_loop"
60
61    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit"
62    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue"
63    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue"
64    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit"
65    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit"
66    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit"
67    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit"
68    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit"
69    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue"
70    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit"
71    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit"
72    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue"
73    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select"
74    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit"
75    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit"
76    "Behavioural/Core/Multi_OOO_Engine/OOO_Engine"
77    "Behavioural/Core/Multi_OOO_Engine"
78   
79    "Behavioural/Core/Multi_Front_end/Front_end/Context_State"
80    "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction"
81    "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod"
82    "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue"
83    "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit"
84    "Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue"
85    "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management"
86    "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue"
87    "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue"
88    "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit"
89    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue"
90    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register"
91    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer"
92    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue"
93    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction"
94    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue"
95#   "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue"
96#   "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table"
97#   "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table"
98    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor"
99    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor"
100    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue"
101    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack"
102    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table"
103    "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit"
104    "Behavioural/Core/Multi_Front_end/Front_end"
105    "Behavioural/Core/Multi_Front_end"
106
107    "Behavioural/Core/Icache_Access"
108    "Behavioural/Core/Dcache_Access"
109
110    "Behavioural/Core/Core_Glue"
111    "Behavioural/Core"
112
113    "TopLevel"
114    );
115                                           
116
117#-----[ usage ]---------------------------------------------
118function usage ()
119{
120    echo "Usage            : ${0} action";
121    echo "Arguments        : ";
122    echo " * action";
123    echo "   * systemc     : test all model systemC";
124    echo '                   for each component, create file in ${MORPHEO_HOME}/tmp/';
125    echo "   * systemc_all : same as test, but don't stop at the first error";
126    echo "   * vhdl        : test all model VHDL";
127    echo '                   for each component, create file in ${MORPHEO_HOME}/tmp/';
128    echo "   * vhdl_all    : same as test, but don't stop at the first error";
129    echo "   * result      : list test's resultat";
130    echo "   * list        : list test";
131    echo "   * clean       : erase file in ${MORPHEO_HOME}/tmp/ directory";
132    echo "   * clean_all   : clean all component";
133    echo "   * help        : print this message";
134    echo "";
135    echo "Notes            : ";
136    echo " * Morpheo environment must be positionned";
137    exit;
138}
139
140#-----[ simulation ]----------------------------------------
141# arg1 : cmd (execute / sim)
142# arg2 : all (stop)
143# arg3 : file suffix
144function simulation ()
145{
146    pwd=${PWD};
147
148    nb_cpu=$(cat /proc/cpuinfo |grep -c processor);
149
150    for i in ${directory[@]}; do
151        component=$(basename ${i});
152        dir="${path}/${i}/SelfTest";
153
154        if test -d "${dir}"; then
155            # have previous test ok ?
156            declare -i make_test=1;
157           
158            file="${tmp}/${component}.${3}"
159
160            if test -f ${file}; then
161                res_test=$(cat ${file});
162                if test "${test_ok}" = "${res_test}"; then
163                    make_test=0;
164                fi;
165            fi;
166
167            if test ${make_test} -eq 1; then
168                cd ${dir};
169                make config;
170                make -j${nb_cpu} ${1};
171                case ${?} in
172                    "0")
173                        echo ${test_ok} > ${file};
174                        ;;
175                    *)
176
177                        echo ${test_ko} > ${file};
178                        echo "";
179                        echo "${component} : ${test_ko}";
180                        echo "";
181                        if test ${2} = "1"; then
182                            exit 1;
183                        fi;
184                        ;;
185                esac;
186                make clean;
187            fi;
188        else
189            echo "${component} have not SelfTest directory.";
190        fi;
191
192        cd ${pwd};
193    done;
194}
195
196#-----[ main ]----------------------------------------------
197function main ()
198{
199    # Test operand
200    if test ${#} -ne 1; then
201        usage ${*};
202    fi;
203
204    if test -z "${MORPHEO_TOPLEVEL}"; then
205        usage ${*};
206    fi;
207
208    if test ! -d ${tmp}; then
209        mkdir -p ${tmp};
210    fi;
211
212    case ${1} in
213        "systemc" )
214            simulation "execute" "1" "systemc";
215            ;;
216
217        "systemc_all")
218            simulation "execute" "0" "systemc";
219            ;;
220
221        "vhdl" )
222            simulation "sim"     "1" "vhdl";
223            ;;
224
225        "vhdl_all")
226            simulation "sim"     "0" "vhdl";
227            ;;
228
229        "result")
230            for x in "systemc" "vhdl"; do
231                color=34; 
232                echo "[1;${color}m * ${x}[1;0m";
233
234                for i in ${tmp}/*.${x}; do
235                    if test -f ${i}; then
236                        component=$(basename ${i} .${x});
237                        res_test=$(cat ${i});
238                       
239                        case "${res_test}" in
240                            "${test_ok}") res_test=${test_ok};     color=32; 
241                                ;;
242                            "${test_ko}") res_test=${test_ko};     color=31; 
243                                ;;
244                            *)            res_test=${test_unknow}; color=39; 
245                                ;;
246                        esac
247                        echo "[1;${color}m   * ${res_test} - ${component}[1;0m";
248                    fi;
249                done;
250            done;
251            ;;
252
253
254        "list")
255            for i in ${directory[@]}; do
256                component=$(basename ${i});
257                echo "${i}";
258            done;
259            ;;
260
261        "clean")
262            rm -r ${tmp};
263            ;;
264           
265        "clean_all")
266            pwd=${PWD};
267
268            for i in ${directory[@]}; do
269                component=$(basename ${i});
270
271                cd ${path}/${i};
272
273                if test -f "Makefile"; then
274                    make clean;
275                    dir="SelfTest";
276                   
277                    if test -d ${dir}; then
278                        cd ${dir};
279                        make clean;
280                    else
281                        echo "${component} have not SelfTest directory.";
282                    fi;
283                    cd ${pwd};
284                fi;
285            done;
286            ;;
287
288        "help")
289            usage ${*};
290            ;;
291        *)
292            usage ${*};
293    esac
294}
295
296#-----[ Body ]----------------------------------------------
297main ${*};
298
Note: See TracBrowser for help on using the repository browser.