1
1
ODIN_ROOT =$(PWD )
2
2
NB_OF_PROCESS ?= $(shell /usr/bin/env python3 -c "import multiprocessing; print(multiprocessing.cpu_count() )")
3
3
4
+ # handling elaborator name
5
+ ifdef ELABORATOR
6
+ _ELABORATOR =$(shell echo $(ELABORATOR ) | tr '[:lower:]' '[:upper:]')
7
+ else
8
+ _ELABORATOR =ODIN
9
+ endif
10
+
11
+ # Yosys+Odin-II compile flags
12
+ ifeq ($(_ELABORATOR ) , YOSYS)
13
+ _YOSYS_COMPILE_FLAG="-DODIN_USE_YOSYS =ON"
14
+ endif
15
+
4
16
# ###############
5
17
# build with ninja when doable
6
18
# ###############
@@ -57,33 +69,29 @@ $(ODIN_BUILD_DIR)/.%.build: _init
57
69
58
70
_set_build : $(ODIN_BUILD_DIR ) /.regular.build
59
71
cd $(BUILD_DIR ) && \
60
- cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) ..
72
+ cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) $( _YOSYS_COMPILE_FLAG ) ..
61
73
62
74
_set_debug : $(ODIN_BUILD_DIR ) /.debug.build
63
75
cd $(BUILD_DIR ) && \
64
- cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) -DODIN_DEBUG=on ..
76
+ cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) $( _YOSYS_COMPILE_FLAG ) -DODIN_DEBUG=on ..
65
77
66
78
_set_warn : $(ODIN_BUILD_DIR ) /.warn.build
67
79
cd $(BUILD_DIR ) && \
68
- cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) -DODIN_WARN=on ..
80
+ cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) $( _YOSYS_COMPILE_FLAG ) -DODIN_WARN=on ..
69
81
70
82
_set_gcov : $(ODIN_BUILD_DIR ) /.gcov.build
71
83
cd $(BUILD_DIR ) && \
72
- cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) -DODIN_COVERAGE=on ..
84
+ cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) $( _YOSYS_COMPILE_FLAG ) -DODIN_COVERAGE=on ..
73
85
74
86
_set_clang_tidy : $(ODIN_BUILD_DIR ) /.tidy.build
75
87
cd $(BUILD_DIR ) && \
76
- cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) -DODIN_TIDY=on ..
88
+ cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) $( _YOSYS_COMPILE_FLAG ) -DODIN_TIDY=on ..
77
89
78
90
_set_sanitize : $(ODIN_BUILD_DIR ) /.sanitize.build
79
91
cd $(BUILD_DIR ) && \
80
- cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) -DODIN_SANITIZE=on ..
92
+ cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) $( _YOSYS_COMPILE_FLAG ) -DODIN_SANITIZE=on ..
81
93
82
- _set_yosys+odin : $(ODIN_BUILD_DIR ) /.yosys+odin.build
83
- cd $(BUILD_DIR ) && \
84
- cmake $(CMAKE_GEN_ARGS ) $(CMAKE_ARGS ) -DODIN_USE_YOSYS=ON ..
85
-
86
- BUILD_IT_TARGETS = build debug warn gcov clang_tidy sanitize yosys+odin
94
+ BUILD_IT_TARGETS = build debug warn gcov clang_tidy sanitize
87
95
$(foreach t,$(BUILD_IT_TARGETS), $(eval $(call _build_it_gen,$(t))))
88
96
89
97
scrub :
@@ -105,17 +113,27 @@ test_coverage:
105
113
$(MAKE ) gcovr
106
114
107
115
test :
116
+ ifeq ($(_ELABORATOR ) , ODIN)
108
117
$(MAKE) sanitize \
109
118
&& ./verify_odin.sh --no_report -j $(NB_OF_PROCESS) \
110
119
-t regression_test/benchmark/suite/light_suite \
111
120
-t regression_test/benchmark/suite/vtr_light_suite \
112
121
&& $(MAKE) build \
113
122
&& ./verify_odin.sh --no_report --continue -j $(NB_OF_PROCESS) \
114
123
-t regression_test/benchmark/suite/heavy_suite; \
115
- ./verify_odin.sh --status_only
116
-
124
+ ./verify_odin.sh --status_only
125
+ else ifeq ($(_ELABORATOR), YOSYS)
126
+ $(MAKE) sanitize ELABORATOR=YOSYS \
127
+ && ./verify_odin.sh --no_report -j $(NB_OF_PROCESS) \
128
+ -t regression_test/benchmark/suite/yosys+odin/techmap_lightsuite \
129
+ && $(MAKE) build ELABORATOR=YOSYS \
130
+ && ./verify_odin.sh --no_report --continue -j $(NB_OF_PROCESS) \
131
+ -t regression_test/benchmark/suite/yosys+odin/techmap_heavysuite; \
132
+ ./verify_odin.sh --status_only
133
+ endif
117
134
118
135
generate_expectation :
136
+ ifeq ($(_ELABORATOR ) , ODIN)
119
137
$(MAKE) sanitize \
120
138
&& ./verify_odin.sh --$@ --no_report -j $(NB_OF_PROCESS) \
121
139
-t regression_test/benchmark/suite/light_suite \
@@ -124,8 +142,18 @@ generate_expectation:
124
142
&& ./verify_odin.sh --$@ --no_report --continue -j $(NB_OF_PROCESS) \
125
143
-t regression_test/benchmark/suite/heavy_suite; \
126
144
./verify_odin.sh --status_only
145
+ else ifeq ($(_ELABORATOR), YOSYS)
146
+ $(MAKE) sanitize ELABORATOR=YOSYS \
147
+ && ./verify_odin.sh --$@ --no_report -j $(NB_OF_PROCESS) \
148
+ -t regression_test/benchmark/suite/yosys+odin/techmap_lightsuite \
149
+ $(MAKE) build ELABORATOR=YOSYS \
150
+ && ./verify_odin.sh --$@ --no_report --continue -j $(NB_OF_PROCESS) \
151
+ -t regression_test/benchmark/suite/yosys+odin/techmap_heavysuite; \
152
+ ./verify_odin.sh --status_only
153
+ endif
127
154
128
155
regenerate_expectation :
156
+ ifeq ($(_ELABORATOR ) , ODIN)
129
157
$(MAKE) sanitize \
130
158
&& ./verify_odin.sh --$@ --no_report -j $(NB_OF_PROCESS) \
131
159
-t regression_test/benchmark/suite/light_suite \
@@ -134,3 +162,12 @@ regenerate_expectation:
134
162
&& ./verify_odin.sh --$@ --no_report --continue -j $(NB_OF_PROCESS) \
135
163
-t regression_test/benchmark/suite/heavy_suite; \
136
164
./verify_odin.sh --status_only
165
+ else ifeq ($(_ELABORATOR), YOSYS)
166
+ $(MAKE) sanitize ELABORATOR=YOSYS \
167
+ && ./verify_odin.sh --$@ --no_report -j $(NB_OF_PROCESS) \
168
+ -t regression_test/benchmark/suite/yosys+odin/techmap_lightsuite \
169
+ $(MAKE) build ELABORATOR=YOSYS \
170
+ && ./verify_odin.sh --$@ --no_report --continue -j $(NB_OF_PROCESS) \
171
+ -t regression_test/benchmark/suite/yosys+odin/techmap_heavysuite; \
172
+ ./verify_odin.sh --status_only
173
+ endif
0 commit comments