Line 84... |
Line 84... |
SIM_VLT_DIR=$(SIM_DIR)/vlt
|
SIM_VLT_DIR=$(SIM_DIR)/vlt
|
BENCH_DIR=$(PROJECT_ROOT)/bench
|
BENCH_DIR=$(PROJECT_ROOT)/bench
|
BACKEND_DIR=$(PROJECT_ROOT)/backend
|
BACKEND_DIR=$(PROJECT_ROOT)/backend
|
BENCH_VERILOG_DIR=$(BENCH_DIR)/verilog
|
BENCH_VERILOG_DIR=$(BENCH_DIR)/verilog
|
BENCH_SYSC_DIR=$(BENCH_DIR)/sysc
|
BENCH_SYSC_DIR=$(BENCH_DIR)/sysc
|
|
BENCH_SYSC_SRC_DIR=$(BENCH_SYSC_DIR)/src
|
|
BENCH_SYSC_INCLUDE_DIR=$(BENCH_SYSC_DIR)/include
|
RTL_VERILOG_DIR=$(PROJECT_ROOT)/rtl/verilog
|
RTL_VERILOG_DIR=$(PROJECT_ROOT)/rtl/verilog
|
SW_DIR=$(PROJECT_ROOT)/sw
|
SW_DIR=$(PROJECT_ROOT)/sw
|
|
|
ICARUS=iverilog
|
ICARUS=iverilog
|
ICARUS_VVP=vvp
|
ICARUS_VVP=vvp
|
Line 288... |
Line 290... |
echo "\t#### Test $$TEST PASSED ####";\
|
echo "\t#### Test $$TEST PASSED ####";\
|
else echo "\t#### Test $$TEST FAILED ####";\
|
else echo "\t#### Test $$TEST FAILED ####";\
|
fi; \
|
fi; \
|
echo "\t####"; echo; \
|
echo "\t####"; echo; \
|
done
|
done
|
|
SYSC_MODEL_FILES=$(BENCH_SYSC_SRC_DIR)/Or1200Monitor.cpp $(BENCH_SYSC_SRC_DIR)/ResetSC.cpp
|
prepare_vlt: prepare_rtl
|
prepare_vlt: $(SIM_VLT_DIR)/libmodules.a prepare_rtl
|
if [ ! -d $(SIM_VLT_DIR) ]; then mkdir $(SIM_VLT_DIR); fi
|
if [ ! -d $(SIM_VLT_DIR) ]; then mkdir $(SIM_VLT_DIR); fi
|
|
# Generate the compile script to give Verilator
|
cd $(SIM_VLT_DIR) && \
|
cd $(SIM_VLT_DIR) && \
|
sed < $(SIM_BIN_DIR)/$(VLT_COMMAND_FILE) > $(VLT_COMMAND_FILE).generated \
|
sed < $(SIM_BIN_DIR)/$(VLT_COMMAND_FILE) > $(VLT_COMMAND_FILE).generated \
|
-e s!\$$BENCH_DIR!$(BENCH_VERILOG_DIR)! \
|
-e s!\$$BENCH_DIR!$(BENCH_VERILOG_DIR)! \
|
-e s!\$$RTL_DIR!$(RTL_VERILOG_DIR)! \
|
-e s!\$$RTL_DIR!$(RTL_VERILOG_DIR)! \
|
-e s!\$$BACKEND_DIR!$(BACKEND_DIR)! \
|
-e s!\$$BACKEND_DIR!$(BACKEND_DIR)! \
|
-e \\!^//.*\$$!d -e \\!^\$$!d;
|
-e \\!^//.*\$$!d -e \\!^\$$!d;
|
|
# Now call verilator to generate the .mk's
|
cd $(SIM_VLT_DIR) && \
|
cd $(SIM_VLT_DIR) && \
|
verilator -language 1364-2001 -Wno-lint --top-module orpsoc_top -Mdir . -sc -f $(VLT_COMMAND_FILE).generated
|
verilator -language 1364-2001 -Wno-lint --top-module orpsoc_top -Mdir . -sc -I$(BENCH_SYSC_INCLUDE_DIR) -I$(BENCH_SYSC_SRC_DIR) $(SYSC_MODEL_FILES) -f $(VLT_COMMAND_FILE).generated
|
|
# Now call the first makefile it generated
|
cd $(SIM_VLT_DIR) && \
|
cd $(SIM_VLT_DIR) && \
|
$(MAKE) -f Vorpsoc_top.mk Vorpsoc_top__ALL.a
|
$(MAKE) -f Vorpsoc_top.mk Vorpsoc_top__ALL.a
|
# cd $(SIM_VLT_DIR) && \
|
|
$(MAKE) -f Vorpsoc_top.mk sc_main.o
|
|
cd $(SIM_VLT_DIR) && \
|
cd $(SIM_VLT_DIR) && \
|
$(MAKE) -f Vorpsoc_top.mk verilated.o
|
$(MAKE) -f Vorpsoc_top.mk verilated.o
|
|
cd $(SIM_VLT_DIR) && \
|
|
cp Vorpsoc_top__ALL.a libVorpsoc_top.a
|
# Now compile the top level systemC module
|
# Now compile the top level systemC module
|
cd $(SIM_VLD_DIR) && g++ -fbranch-probabilities -fvpt -funroll-loops -fpeel-loops -ftracer -I$(BENCH_SYSC_DIR)/include -I$(SYSTEMC)/include -I$(VERILATOR_ROOT)/include -I$(SIM_VLT_DIR) -L$(SIM_VLT_DIR) -L$(SYSTEMC)/lib-linux64 $(BENCH_SYSC_DIR)/src/OrpsocMain.cpp
|
cd $(SIM_VLT_DIR) && g++ -I$(BENCH_SYSC_INCLUDE_DIR) -I$(VERILATOR_ROOT)/include -I$(SYSTEMC)/include -c $(BENCH_SYSC_SRC_DIR)/OrpsocMain.cpp
|
|
# Order of libraries here is important
|
|
cd $(SIM_VLT_DIR) && g++ -o Vorpsoc_top -L. -L$(BENCH_SYSC_SRC_DIR) -L$(SYSTEMC)/lib-linux64 OrpsocMain.o -lVorpsoc_top -lmodules -lsystemc
|
|
|
|
|
|
# SystemC modules library
|
|
$(SIM_VLT_DIR)/libmodules.a:
|
|
$(MAKE) -C $(BENCH_SYSC_SRC_DIR) -f $(BENCH_SYSC_SRC_DIR)/Modules.make
|
|
|
|
|
|
|
clean-sw:
|
clean-sw:
|
@for TEST in $(TESTS); do \
|
@for TEST in $(TESTS); do \
|
echo "Current test: $$TEST"; \
|
echo "Current test: $$TEST"; \
|