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

Last change on this file since 12 was 3, checked in by kane, 17 years ago

1) Ajout d'un "printer" XML pour la configuration de paramètres

2) Fin du composant "Two_Level_Branch_Predictor"

validation * systemc

  • vhdl
File size: 5.4 KB
Line 
1#
2# $Id$
3#
4# [ Description ]
5#
6# Makefile
7#
8
9#-----[ Variables ]----------------------------------------
10DIR_BIN                         = bin
11DIR_LIB                         = ../lib
12DIR_CFG                         = configuration
13DIR_LOG                         = log
14
15CFG_FILE                        = configuration.cfg
16
17OBJECTS                         = $(OBJECTS_COMMON)
18
19EXEC_LOG                        = $(patsubst $(DIR_CFG)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG)/*.cfg))
20EXEC                            = soft
21
22#-----[ Rules ]--------------------------------------------
23.PRECIOUS                       : $(DIR_BIN)/%.x $(DIR_LOG)/%.exec.log
24.NOPARALLEL                     : clean clean_all help
25
26all_selftest                    : test_env $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG)
27                                @$(MAKE) library
28                                @$(MAKE) $(DIR_BIN)/$(EXEC).x
29
30execute                         : all_selftest
31                                @$(MAKE) $(EXEC_LOG)
32
33reconfig                        :
34                                @$(MAKE) config_clean
35                                @$(MAKE) config
36
37config_clean                    :
38                                @                                                                                                       \
39                                declare     NAME;                                                                                       \
40                                declare -i  CPT=0;                                                                                      \
41                                declare -ai PERIOD;                                                                                     \
42                                declare -a  RANGE_LOCAL;                                                                                \
43                                PERIOD[0]=1;                                                                                            \
44                                                                                                                                        \
45                                while $(READ) line; do                                                                                  \
46                                        LINE=($$line);                                                                                  \
47                                                                                                                                        \
48                                        if $(TEST) $$CPT -eq 0; then                                                                    \
49                                                NAME=$${LINE[0]};                                                                       \
50                                        else                                                                                            \
51                                                RANGE_LOCAL=($$($(DIR_SCRIPT)/range.sh $${LINE[0]} $${LINE[1]} $${LINE[2]}));           \
52                                                PERIOD[$$CPT]=$$(($${PERIOD[$$(($$CPT-1))]}*$${#RANGE_LOCAL[*]}));                      \
53                                        fi;                                                                                             \
54                                                                                                                                        \
55                                        CPT=$$(($$CPT+1));                                                                              \
56                                done < $(CFG_FILE);                                                                                     \
57                                                                                                                                        \
58                                declare -i NB_CONFIG=$${PERIOD[$$(($$CPT-1))]};                                                         \
59                                                                                                                                        \
60                                for i in $$($(DIR_SCRIPT)/range.sh 0 $$(($$NB_CONFIG-1))); do                                           \
61                                        $(RM) "$(DIR_CFG)/$${NAME}_$${i}.cfg";                                                          \
62                                done;
63
64config                          :
65                                @$(ECHO) "Generate configuration"
66                                @                                                                                                       \
67                                declare     NAME;                                                                                       \
68                                declare -ai MIN ;                                                                                       \
69                                declare -ai MAX ;                                                                                       \
70                                declare -a  STEP;                                                                                       \
71                                declare -a  LINE;                                                                                       \
72                                declare -i  CPT=0;                                                                                      \
73                                declare -ai PERIOD;                                                                                     \
74                                declare -a  RANGE;                                                                                      \
75                                declare -a  RANGE_LOCAL;                                                                                \
76                                declare -a  SIZE;                                                                                       \
77                                PERIOD[0]=1;                                                                                            \
78                                                                                                                                        \
79                                while $(READ) line; do                                                                                  \
80                                        LINE=($$line);                                                                                  \
81                                                                                                                                        \
82                                        if $(TEST) $$CPT -eq 0; then                                                                    \
83                                                NAME=$${LINE[0]};                                                                       \
84                                        else                                                                                            \
85                                                MIN[$$CPT]=$${LINE[0]};                                                                 \
86                                                MAX[$$CPT]=$${LINE[1]};                                                                 \
87                                                STEP[$$CPT]=$${LINE[2]};                                                                \
88                                                RANGE[$$CPT]=$$($(DIR_SCRIPT)/range.sh $${LINE[0]} $${LINE[1]} $${LINE[2]});            \
89                                                RANGE_LOCAL=($${RANGE[$$CPT]});                                                         \
90                                                SIZE[$$CPT]=$${#RANGE_LOCAL[*]};                                                        \
91                                                PERIOD[$$CPT]=$$(($${PERIOD[$$(($$CPT-1))]}*$${SIZE[$$CPT]}));                          \
92                                        fi;                                                                                             \
93                                                                                                                                        \
94                                        CPT=$$(($$CPT+1));                                                                              \
95                                done < $(CFG_FILE);                                                                                     \
96                                                                                                                                        \
97                                declare -i x;                                                                                           \
98                                declare -a DATA;                                                                                        \
99                                declare -ai ENUM_CONFIG=($$($(DIR_SCRIPT)/range.sh 0 $$(($${PERIOD[$$(($$CPT-1))]}-1))));               \
100                                declare -ai ENUM_PARAM=($$($(DIR_SCRIPT)/range.sh 1 $${#MIN[*]}));                                      \
101                                                                                                                                        \
102                                $(ECHO) " * they are $${#MIN[*]} parameters";                                                           \
103                                $(ECHO) " * generate $${PERIOD[$$(($$CPT-1))]} configurations";                                         \
104                                                                                                                                        \
105                                for i in $${ENUM_CONFIG[*]}; do                                                                         \
106                                        x=$$i;                                                                                          \
107                                        for j in $${ENUM_PARAM[*]}; do                                                                  \
108                                                RANGE_LOCAL=($${RANGE[$$j]});                                                           \
109                                                DATA[$$j]="$${RANGE_LOCAL[$$((($$x % $${SIZE[$$j]})))]} ";                              \
110                                                x=$$(($$x/$${SIZE[$$j]}));                                                              \
111                                        done;                                                                                           \
112                                        $(ECHO) $${DATA[*]} > "$(DIR_CFG)/$${NAME}_$${i}.cfg";                                          \
113                                        $(ECHO) "  - {$$i} $${DATA[*]}";                                                                \
114                                done;
115
116$(DIR_LOG)/%.exec.log           : $(DIR_CFG)/%.cfg $(DIR_BIN)/$(EXEC).x
117                                @$(ECHO) "Execute            : $*"
118                                @$(EXPORT) SYSTEMC=$(SYSTEMC) ; ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` > $@
119                                declare -i count=`$(GREP) -ch "Test KO" $@`;            \
120                                if $(TEST) $$count -eq 0;                               \
121                                then echo "                     $* ... OK";             \
122                                else echo "                     $* ... KO"; exit 1;     \
123                                fi;
124
125$(DIR_BIN)/%.x                  : $(OBJECTS) $(HEADERS) $(DIR_LIB)
126                                @$(ECHO) "Linkage            : $*"
127                                @$(CXX) $(LXX_OPT) -o $@ $(OBJECTS) $(LIBS)
128
129$(DIR_BIN)                      :
130                                @$(ECHO) "Create directory   : $@"
131                                @$(MKDIR) $@
132
133$(DIR_LOG)                      :
134                                @$(ECHO) "Create directory   : $@"
135                                @$(MKDIR) $@
136
137selftest_clean_all              : library_clean config_clean
138                               
139selftest_clean                  :
140                                @$(RM)  $(DIR_LOG)              \
141                                        $(DIR_CFG)/*~           \
142                                        *.vhdl                  \
143                                        *.stat                  \
144                                        generated_by_systemcass \
145                                        core*
146
147selftest_help                   :
148                                @$(ECHO) " -----[ Selftest ]-----------------------------------"
149                                @$(ECHO) ""
150                                @$(ECHO) " * all_selftest         : compile all c++ file and execute"
151                                @$(ECHO) " * execute              : execute all instance"
152                                @$(ECHO) " * config               : generate configuration with configuration's file"
153                                @$(ECHO) " * reconfig             : regenerate configuration with configuration's file"
154                                @$(ECHO) " * clean                : Erase all generate files"
155                                @$(ECHO) " * clean_all            : Clean + Erase all dependant library"
156                                @$(ECHO) " * help                 : print this text"
157                                @$(ECHO) ""
158
159help                            :
160                                @$(MAKE) common_help 
161                                @$(MAKE) synthesis_help 
162                                @$(MAKE) selftest_help
163
164clean                           :
165                                @$(MAKE) common_clean
166                                @$(MAKE) synthesis_clean
167                                @$(MAKE) selftest_clean
168
169clean_all                       :
170                                @$(MAKE) clean
171                                @$(MAKE) selftest_clean_all
Note: See TracBrowser for help on using the repository browser.