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

Last change on this file since 3 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.