Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 50 additions & 13 deletions ODIN_II/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
ODIN_ROOT=$(PWD)
NB_OF_PROCESS ?= $(shell /usr/bin/env python3 -c "import multiprocessing; print(multiprocessing.cpu_count())")

# handling elaborator name
ifdef ELABORATOR
_ELABORATOR=$(shell echo $(ELABORATOR) | tr '[:lower:]' '[:upper:]')
else
_ELABORATOR=ODIN
endif

# Yosys+Odin-II compile flags
ifeq ($(_ELABORATOR), YOSYS)
_YOSYS_COMPILE_FLAG="-DODIN_USE_YOSYS=ON"
endif

################
# build with ninja when doable
################
Expand Down Expand Up @@ -57,33 +69,29 @@ $(ODIN_BUILD_DIR)/.%.build: _init

_set_build: $(ODIN_BUILD_DIR)/.regular.build
cd $(BUILD_DIR) &&\
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) ..
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) $(_YOSYS_COMPILE_FLAG) ..

_set_debug: $(ODIN_BUILD_DIR)/.debug.build
cd $(BUILD_DIR) &&\
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) -DODIN_DEBUG=on ..
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) $(_YOSYS_COMPILE_FLAG) -DODIN_DEBUG=on ..

_set_warn: $(ODIN_BUILD_DIR)/.warn.build
cd $(BUILD_DIR) &&\
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) -DODIN_WARN=on ..
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) $(_YOSYS_COMPILE_FLAG) -DODIN_WARN=on ..

_set_gcov: $(ODIN_BUILD_DIR)/.gcov.build
cd $(BUILD_DIR) &&\
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) -DODIN_COVERAGE=on ..
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) $(_YOSYS_COMPILE_FLAG) -DODIN_COVERAGE=on ..

_set_clang_tidy: $(ODIN_BUILD_DIR)/.tidy.build
cd $(BUILD_DIR) &&\
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) -DODIN_TIDY=on ..
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) $(_YOSYS_COMPILE_FLAG) -DODIN_TIDY=on ..

_set_sanitize: $(ODIN_BUILD_DIR)/.sanitize.build
cd $(BUILD_DIR) &&\
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) -DODIN_SANITIZE=on ..
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) $(_YOSYS_COMPILE_FLAG) -DODIN_SANITIZE=on ..

_set_yosys+odin: $(ODIN_BUILD_DIR)/.yosys+odin.build
cd $(BUILD_DIR) &&\
cmake $(CMAKE_GEN_ARGS) $(CMAKE_ARGS) -DODIN_USE_YOSYS=ON ..

BUILD_IT_TARGETS = build debug warn gcov clang_tidy sanitize yosys+odin
BUILD_IT_TARGETS = build debug warn gcov clang_tidy sanitize
$(foreach t,$(BUILD_IT_TARGETS), $(eval $(call _build_it_gen,$(t))))

scrub:
Expand All @@ -105,17 +113,27 @@ test_coverage:
$(MAKE) gcovr

test:
ifeq ($(_ELABORATOR), ODIN)
$(MAKE) sanitize \
&& ./verify_odin.sh --no_report -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/light_suite \
-t regression_test/benchmark/suite/vtr_light_suite \
&& $(MAKE) build \
&& ./verify_odin.sh --no_report --continue -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/heavy_suite; \
./verify_odin.sh --status_only

./verify_odin.sh --status_only
else ifeq ($(_ELABORATOR), YOSYS)
$(MAKE) sanitize ELABORATOR=YOSYS \
&& ./verify_odin.sh --no_report -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/yosys+odin/techmap_lightsuite \
&& $(MAKE) build ELABORATOR=YOSYS \
&& ./verify_odin.sh --no_report --continue -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/yosys+odin/techmap_heavysuite; \
./verify_odin.sh --status_only
endif

generate_expectation:
ifeq ($(_ELABORATOR), ODIN)
$(MAKE) sanitize \
&& ./verify_odin.sh --$@ --no_report -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/light_suite \
Expand All @@ -124,8 +142,18 @@ generate_expectation:
&& ./verify_odin.sh --$@ --no_report --continue -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/heavy_suite; \
./verify_odin.sh --status_only
else ifeq ($(_ELABORATOR), YOSYS)
$(MAKE) sanitize ELABORATOR=YOSYS \
&& ./verify_odin.sh --$@ --no_report -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/yosys+odin/techmap_lightsuite \
$(MAKE) build ELABORATOR=YOSYS \
&& ./verify_odin.sh --$@ --no_report --continue -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/yosys+odin/techmap_heavysuite; \
./verify_odin.sh --status_only
endif

regenerate_expectation:
ifeq ($(_ELABORATOR), ODIN)
$(MAKE) sanitize \
&& ./verify_odin.sh --$@ --no_report -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/light_suite \
Expand All @@ -134,3 +162,12 @@ regenerate_expectation:
&& ./verify_odin.sh --$@ --no_report --continue -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/heavy_suite; \
./verify_odin.sh --status_only
else ifeq ($(_ELABORATOR), YOSYS)
$(MAKE) sanitize ELABORATOR=YOSYS \
&& ./verify_odin.sh --$@ --no_report -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/yosys+odin/techmap_lightsuite \
$(MAKE) build ELABORATOR=YOSYS \
&& ./verify_odin.sh --$@ --no_report --continue -j $(NB_OF_PROCESS) \
-t regression_test/benchmark/suite/yosys+odin/techmap_heavysuite; \
./verify_odin.sh --status_only
endif
2 changes: 1 addition & 1 deletion ODIN_II/regression_test/tools/run_yosys.sh
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ RED=$'\033[31;1m'
NC=$'\033[0m' # No Color

# defaults
_YOSYS_EXEC="yosys"
_YOSYS_EXEC="${VTR_DIR}/libs/EXTERNAL/libyosys/yosys"
_TEST_INPUT_LIST=()
_VERILOG_INPUT_LIST=()
_REGENERATE_BLIF="off"
Expand Down
8 changes: 5 additions & 3 deletions ODIN_II/regression_test/tools/synth.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ yosys -import
# Feel free to specify file paths using "$env(VTR_ROOT)/ ..."

# Read the hardware decription Verilog
read_verilog -nomem2reg -nolatches $env(VTR_ROOT)/ODIN_II/regression_test/benchmark/verilog/common/mux.v;
read_verilog -nomem2reg -nolatches $env(TCL_CIRCUIT);
# Check that cells match libraries and find top module
hierarchy -check -auto-top;

Expand All @@ -20,8 +20,8 @@ memory_collect; memory_dff; opt;
# Looking for combinatorial loops, wires with multiple drivers and used wires without any driver.
check;
# resolve asynchronous dffs
techmap -map $env(VTR_ROOT)/ODIN_II/techlib/adff2dff.v;
techmap -map $env(VTR_ROOT)/ODIN_II/techlib/adffe2dff.v;
techmap -map $env(ODIN_TECHLIB)/adff2dff.v;
techmap -map $env(ODIN_TECHLIB)/adffe2dff.v;
# convert mem block to bram/rom

# [NOTE]: Yosys complains about expression width more than 24 bits.
Expand All @@ -40,3 +40,5 @@ opt -undriven -full; # -noff #potential option to remove all sdff and etc. Only
autoname;
# Print statistics
stat;

write_blif -param -impltf $env(TCL_BLIF);