source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest @ 84

Last change on this file since 84 was 83, checked in by rosiere, 16 years ago

Add component : Context_State (manage miss prediction, exception , decod_enable, synchronisation instruction ...)

  • Property svn:keywords set to Id
File size: 6.8 KB
RevLine 
[2]1#
2# $Id: Makefile.Selftest 83 2008-05-09 18:00:21Z rosiere $
3#
[53]4# [ Description ]
[2]5#
6# Makefile
7#
8
[15]9#-----[ Directory ]----------------------------------------
[2]10DIR_BIN                         = bin
11DIR_LIB                         = ../lib
[23]12DIR_CFG_GEN                     = configuration_generated
[15]13DIR_CFG_USER                    = configuration
[2]14DIR_LOG                         = log
15
[53]16#-----[ Variables ]----------------------------------------
[43]17CFG_FILE_EXTENSION              = cfg
[44]18CFG_FILE_DEBUG                  = debug.$(CFG_FILE_EXTENSION)
[2]19
20OBJECTS                         = $(OBJECTS_COMMON)
21
[81]22EXEC_PREFIX                     =
23#$(VALGRIND)
[15]24EXEC_PARAMS                     = $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR))
25EXEC_LOG                        = $(patsubst $(DIR_CFG_GEN)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG_GEN)/*.cfg))       \
26                                  $(patsubst $(DIR_CFG_USER)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG_USER)/*.cfg))
[2]27EXEC                            = soft
28
[53]29#-----[ Rules ]--------------------------------------------
[2]30.PRECIOUS                       : $(DIR_BIN)/%.x $(DIR_LOG)/%.exec.log
[71]31#.NOTPARALLEL                   : clean clean_all help
[2]32
33all_selftest                    : test_env $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG)
[48]34                                @\
35                                $(MAKE) library;\
36                                $(MAKE) $(DIR_BIN)/$(EXEC).x;
[2]37
38execute                         : all_selftest
[82]39                                @\
40                                $(MAKE) $(EXEC_LOG);                                    \
41                                declare -i all_ok=1;                                    \
42                                for i in $(EXEC_LOG); do                                \
43                                    $(GREP) -q "Test OK" $$i;                           \
44                                    declare -i test_ok=$$?;                             \
45                                    $(GREP) -q "Test KO" $$i;                           \
46                                    declare -i test_ko=$$?;                             \
47                                    if $(TEST) $$test_ko -eq 0 -o $$test_ok -ne 0;      \
48                                    then all_ok=0;                                      \
49                                    fi;                                                 \
50                                done;                                                   \
51                                if $(TEST) $$all_ok -eq 1;                              \
[83]52                                then $(ECHO) "-------------------| Test OK"; exit 0;    \
53                                else $(ECHO) "-------------------| Test KO"; exit 1;    \
[82]54                                fi;
[2]55
56reconfig                        :
[48]57                                @\
58                                $(MAKE) config_clean;\
59                                $(MAKE) config;
[2]60
61config_clean                    :
[15]62                                @$(RM) $(DIR_CFG_GEN)
[2]63
[15]64config                          : $(DIR_CFG_GEN)
[48]65                                @\
[62]66                                $(ECHO) "Generate configuration";                                                                       \
[2]67                                declare -i  CPT=0;                                                                                      \
[44]68                                declare     files;                                                                                      \
[2]69                                                                                                                                        \
[44]70                                if $(TEST) -f $(CFG_FILE_DEBUG); then                                                                   \
71                                        files=$(CFG_FILE_DEBUG);                                                                        \
72                                else                                                                                                    \
73                                        files=$$($(LS) *.$(CFG_FILE_EXTENSION) );                                                       \
74                                fi;                                                                                                     \
75                                                                                                                                        \
76                                for file in $$files; do                                                                                 \
77                                                                                                                                        \
[43]78                                        declare     NAME;                                                                               \
79                                        declare -ai MIN ;                                                                               \
80                                        declare -ai MAX ;                                                                               \
81                                        declare -a  STEP;                                                                               \
82                                        declare -a  LINE;                                                                               \
83                                        declare -ai PERIOD;                                                                             \
84                                        declare -a  RANGE;                                                                              \
85                                        declare -a  RANGE_LOCAL;                                                                        \
86                                        declare -a  SIZE;                                                                               \
87                                        declare -i  IT=0;                                                                               \
[2]88                                                                                                                                        \
[43]89                                        PERIOD[0]=1;                                                                                    \
[2]90                                                                                                                                        \
[78]91                                        while read line; do                                                                             \
[43]92                                                LINE=($$line);                                                                          \
[2]93                                                                                                                                        \
[43]94                                                if $(TEST) $$IT -eq 0; then                                                             \
95                                                        NAME=$${LINE[0]};                                                               \
96                                                else                                                                                    \
97                                                        MIN[$$IT]=$${LINE[0]};                                                          \
98                                                        MAX[$$IT]=$${LINE[1]};                                                          \
99                                                        STEP[$$IT]=$${LINE[2]};                                                         \
100                                                        RANGE[$$IT]=$$($(DIR_SCRIPT)/range.sh $${LINE[0]} $${LINE[1]} $${LINE[2]});     \
101                                                        RANGE_LOCAL=($${RANGE[$$IT]});                                                  \
102                                                        SIZE[$$IT]=$${#RANGE_LOCAL[*]};                                                 \
103                                                        PERIOD[$$IT]=$$(($${PERIOD[$$(($$IT-1))]}*$${SIZE[$$IT]}));                     \
104                                                fi;                                                                                     \
[2]105                                                                                                                                        \
[43]106                                                IT=$$(($$IT+1));                                                                        \
107                                        done < $$file;                                                                                  \
[2]108                                                                                                                                        \
[43]109                                        declare -i x;                                                                                   \
110                                        declare -a DATA;                                                                                \
111                                        declare -ai ENUM_CONFIG=($$($(DIR_SCRIPT)/range.sh 0 $$(($${PERIOD[$$(($$IT-1))]}-1))));        \
112                                        declare -ai ENUM_PARAM=($$($(DIR_SCRIPT)/range.sh 1 $${#MIN[*]}));                              \
113                                                                                                                                        \
114                                        $(ECHO) " * File : $$file";                                                                     \
115                                        $(ECHO) "   * They are $${#MIN[*]} parameters";                                                 \
116                                        $(ECHO) "   * Generate $${PERIOD[$$(($$IT-1))]} configurations";                                \
117                                                                                                                                        \
118                                        for i in $${ENUM_CONFIG[*]}; do                                                                 \
119                                                x=$$i;                                                                                  \
120                                                for j in $${ENUM_PARAM[*]}; do                                                          \
121                                                        RANGE_LOCAL=($${RANGE[$$j]});                                                   \
122                                                        DATA[$$j]="$${RANGE_LOCAL[$$((($$x % $${SIZE[$$j]})))]} ";                      \
123                                                        x=$$(($$x/$${SIZE[$$j]}));                                                      \
124                                                done;                                                                                   \
125                                                $(ECHO) $${DATA[*]} > "$(DIR_CFG_GEN)/$${NAME}_$$CPT.cfg";                              \
126                                                $(ECHO) "   - {$$CPT} $${DATA[*]}";                                                     \
127                                                CPT=$$(($$CPT+1));                                                                      \
[2]128                                        done;                                                                                           \
129                                done;
130
[53]131$(DIR_LOG)/%.exec.log           : $(DIR_CFG_GEN)/%.cfg  $(DIR_BIN)/$(EXEC).x
[48]132                                @\
133                                $(ECHO) "Execute            : $*";\
[82]134                                export SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; $(EXEC_PREFIX) ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@; \
135                                declare timing=`$(GREP) -h "Timing"  $@`;               \
136                                $(GREP) -q "Test OK" $@;                                \
137                                declare -i test_ok=$$?;                                 \
138                                $(GREP) -q "Test KO" $@;                                \
139                                declare -i test_ko=$$?;                                 \
140                                if $(TEST) $$test_ko -ne 0 -a $$test_ok -eq 0;          \
[78]141                                then echo -e "                     $* ... OK\t$$timing";\
[82]142                                else echo    "                     $* ... KO";          \
[2]143                                fi;
144
[53]145$(DIR_LOG)/%.exec.log           : $(DIR_CFG_USER)/%.cfg $(DIR_BIN)/$(EXEC).x
146                                @\
147                                $(ECHO) "Execute            : $*";\
[82]148                                export SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; $(EXEC_PREFIX) ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@; \
149                                declare timing=`$(GREP) -h "Timing"  $@`;               \
150                                $(GREP) -q "Test OK" $@;                                \
151                                declare -i test_ok=$$?;                                 \
152                                $(GREP) -q "Test KO" $@;                                \
153                                declare -i test_ko=$$?;                                 \
154                                if $(TEST) $$test_ko -ne 0 -a $$test_ok -eq 0;          \
155                                then echo -e "                     $* ... OK\t$$timing";\
156                                else echo    "                     $* ... KO";          \
[53]157                                fi;
158
[2]159$(DIR_BIN)/%.x                  : $(OBJECTS) $(HEADERS) $(DIR_LIB)
[48]160                                @\
161                                $(ECHO) "Linkage            : $*";\
162                                $(CXX) $(LFLAGS) -o $@ $(OBJECTS) $(LIBS);
[2]163
164$(DIR_BIN)                      :
[48]165                                @\
166                                $(ECHO) "Create directory   : $@";\
167                                $(MKDIR) $@;
[2]168
169$(DIR_LOG)                      :
[48]170                                @\
171                                $(ECHO) "Create directory   : $@";\
172                                $(MKDIR) $@;
[2]173
[15]174$(DIR_CFG_GEN)                  :
[48]175                                @\
176                                $(ECHO) "Create directory   : $@";\
177                                $(MKDIR) $@;
[15]178
[42]179selftest_clean_all              : library_clean
[2]180                               
[42]181selftest_clean                  : config_clean
[2]182                                @$(RM)  $(DIR_LOG)              \
[15]183                                        $(DIR_CFG_USER)/*~      \
[2]184                                        *.vhdl                  \
[31]185                                        *.pos                   \
[2]186                                        *.stat                  \
[62]187                                        *.dot                   \
188                                        *.txt                   \
[3]189                                        generated_by_systemcass \
[48]190                                        core*;
[2]191
192selftest_help                   :
[48]193                                @\
[53]194                                $(ECHO) " -----[ Selftest ]-----------------------------------";\
[48]195                                $(ECHO) "";\
196                                $(ECHO) " * all_selftest         : compile all c++ file and execute";\
197                                $(ECHO) " * execute              : execute all instance";\
198                                $(ECHO) " * config               : generate configuration with configuration's file" ;\
199                                $(ECHO) " * reconfig             : regenerate configuration with configuration's file" ;\
200                                $(ECHO) " * clean                : Erase all generate files";\
201                                $(ECHO) " * clean_all            : Clean + Erase all dependant library";\
202                                $(ECHO) " * help                 : print this text";\
203                                $(ECHO) "";
[2]204
205help                            :
[48]206                                @\
[62]207                                $(MAKE) common_help  ; \
[71]208                                $(MAKE) synthesis_help;\
[48]209                                $(MAKE) selftest_help;
[2]210
211clean                           :
[48]212                                @\
213                                $(MAKE) common_clean ;\
214                                $(MAKE) synthesis_clean ;\
215                                $(MAKE) selftest_clean;
[2]216
217clean_all                       :
[48]218                                @\
219                                $(MAKE) clean ;\
220                                $(MAKE) selftest_clean_all;
Note: See TracBrowser for help on using the repository browser.