@@ -21,6 +21,40 @@ DIFFTEST_HOME := $(ROOT_PATH)/difftest
2121DRAMSIM3_HOME := $(ROOT_PATH ) /DRAMsim3
2222YSYXSOC_HOME := $(ROOT_PATH ) /ysyxSoC/ysyx
2323
24+ # ##### soc var ######
25+ SOC_CSRC_HOME += $(ROOT_PATH ) /src/main/csrc
26+ SOC_CSRC_LIB_HOME += $(ROOT_PATH ) /ysyxSoC/ysyx/peripheral/spiFlash
27+ SOC_CXXFILES += $(shell find $(SOC_CSRC_HOME ) -name "* .cpp")
28+ SOC_CXXFILES += $(shell find $(SOC_CSRC_LIB_HOME ) -name "* .cpp")
29+
30+ SOC_VSRC_HOME += $(BUILD_DIR ) /soc
31+ SOC_COMPILE_HOME := $(SOC_VSRC_HOME ) /emu-compile
32+ SOC_VSRC_TOP := ysyxSoCFull
33+ SOC_VSRC_LIB_HOME += $(ROOT_PATH ) /ysyxSoC/ysyx/peripheral/
34+ SOC_VXXFILES += $(shell find $(SOC_VSRC_HOME ) -name "* .v")
35+ SOC_VXXFILES += $(shell find $(SOC_VSRC_LIB_HOME ) -name "* .v")
36+
37+ SOC_VSRC_INCLPATH += -I$(SOC_VSRC_HOME )
38+ SOC_VSRC_INCLPATH += -I$(ROOT_PATH ) /ysyxSoC/ysyx/peripheral/uart16550/rtl
39+ SOC_VSRC_INCLPATH += -I$(ROOT_PATH ) /ysyxSoC/ysyx/peripheral/spi/rtl
40+ SOC_CSRC_INCLPATH += -I$(SOC_CSRC_HOME )
41+ SOC_CSRC_INCLPATH += -I$(SOC_CSRC_LIB_HOME )
42+
43+ SOC_CXXFLAGS += -std=c++11 -static -Wall $(SOC_CSRC_INCLPATH )
44+ SOC_FLAGS += --cc --exe --top-module $(SOC_VSRC_TOP )
45+ SOC_FLAGS += --x-assign unique -O3 -CFLAGS "$(SOC_CXXFLAGS ) "
46+ SOC_FLAGS += --trace --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000
47+ SOC_FLAGS += --timescale "1ns/1ns" -Wno-fatal --trace
48+ SOC_FLAGS += -o $(BUILD_DIR ) /soc/emu
49+ SOC_FLAGS += -Mdir $(BUILD_DIR ) /soc/emu-compile
50+ SOC_FLAGS += $(SOC_VSRC_INCLPATH ) $(SOC_CXXFILES ) $(SOC_VXXFILES )
51+
52+ CCACHE := $(if $(shell which ccache) ,ccache,)
53+ ifneq ($(CCACHE ) ,)
54+ export OBJCACHE = ccache
55+ endif
56+
57+
2458export AM_HOME := $(AM_FOLDER_PATH ) /abstract-machine
2559export NEMU_HOME := $(ROOT_PATH ) /NEMU
2660export NOOP_HOME := $(ROOT_PATH )
@@ -80,7 +114,7 @@ difftestBuild:
80114 @sed -i ' s/io_memAXI_0_\([a-z]*\)_bits_data,/io_memAXI_0_\1_bits_data[3:0],/g' $(BUILD_DIR ) /SimTop.v
81115 @sed -i ' s/io_memAXI_0_w_bits_data =/io_memAXI_0_w_bits_data[0] =/g' $(BUILD_DIR ) /SimTop.v
82116 @sed -i ' s/ io_memAXI_0_r_bits_data;/ io_memAXI_0_r_bits_data[0];/g' $(BUILD_DIR ) /SimTop.v
83- $(MAKE ) -C $(DIFFTEST_HOME ) WITH_DRAMSIM3=1
117+ $(MAKE ) -C $(DIFFTEST_HOME ) WITH_DRAMSIM3=1 EMU_TRACE=1
84118
85119diffAllBuild : diffBuild difftestBuild
86120
@@ -185,17 +219,18 @@ $(cpuTestCaseName): cputest-%: $(CPUTEST_HOME)/build/%-riscv64-mycpu.bin
185219
186220# ##### soc name rule test target ######
187221socTopModify :
188- @cp $(BUILD_DIR ) /SoCTop.v $(BUILD_DIR ) /ysyx_210324.v
189- @sed -i ' s/module ysyx_210324_SoCTop/module ysyx_210324/g' $(BUILD_DIR ) /ysyx_210324.v
190- @sed -i ' s/io_\([a-z]*\)_\([a-z]*\)_[bits]*_*\([a-z]*\)/io_\1_\2\3/g' $(BUILD_DIR ) /ysyx_210324.v
222+ @mkdir -p $(BUILD_DIR ) /soc
223+ @cp $(BUILD_DIR ) /SoCTop.v $(BUILD_DIR ) /soc/ysyx_210324.v
224+ @sed -i ' s/module ysyx_210324_SoCTop/module ysyx_210324/g' $(BUILD_DIR ) /soc/ysyx_210324.v
225+ @sed -i ' s/io_\([a-z]*\)_\([a-z]*\)_[bits]*_*\([a-z]*\)/io_\1_\2\3/g' $(BUILD_DIR ) /soc/ysyx_210324.v
191226
192227# FIMXE: need a better solution, not just copy to dir everytime
193228socNameCheck : socTopModify
194- @cp $(YSYXSOC_HOME ) /soc/cpu-check.py $(BUILD_DIR )
195- @cd $(BUILD_DIR ) && echo 324 | python3 cpu-check.py
229+ @cp $(YSYXSOC_HOME ) /soc/cpu-check.py $(BUILD_DIR ) /soc
230+ @cd $(BUILD_DIR ) /soc && echo 324 | python3 cpu-check.py
196231
197232socLintCheck : socNameCheck
198- @cp $(BUILD_DIR ) /ysyx_210324.v $(YSYXSOC_HOME ) /lint/
233+ @cp $(BUILD_DIR ) /soc/ ysyx_210324.v $(YSYXSOC_HOME ) /lint/
199234 @sed -i ' s/ID = \([0-9]*\)/ID = 210324/g' $(YSYXSOC_HOME ) /lint/Makefile
200235 @echo -e " \033[1;32mstart lint check....\033[0m"
201236 $(MAKE ) -C $(YSYXSOC_HOME ) /lint/ lint
@@ -204,6 +239,18 @@ socLintCheck: socNameCheck
204239 $(MAKE ) -C $(YSYXSOC_HOME ) /lint/ lint-unused
205240 @echo -e " \033[1;32mlint-unused check done\033[0m"
206241
242+ socPrevBuild :
243+ # FIXME: if only need to moidfy core, commit it
244+ # @cp $(YSYXSOC_HOME)/soc/ysyxSoCFull.v $(BUILD_DIR)/soc
245+ @sed -i s/ysyx_000000/ysyx_210324/g $(BUILD_DIR)/soc/ysyxSoCFull.v
246+ verilator $(SOC_FLAGS)
247+
248+ socBuild : socPrevBuild
249+ $(MAKE ) VM_PARALLEL_BUILDS=1 OPT_FAST=" -O3" -C $(SOC_COMPILE_HOME ) -f V$(SOC_VSRC_TOP ) .mk
250+
251+ socSimRun :
252+ $(SOC_VSRC_HOME ) /emu -i $(YSYXSOC_HOME ) /program/bin/flash/hello-flash.bin --dump-wave
253+
207254# ##### clean target ######
208255cleanBuild :
209256 rm -rf $(BUILD_DIR )
@@ -219,5 +266,5 @@ cleanAll: cleanBuild cleanMillOut cleanDepRepo
219266
220267.PHONY : millTest diffBuild help compile bsp reformat checkformat \
221268 nemuBuild difftestBuild riscvTestBuild cpuTestBuild amTestBuild demoTest \
222- socTopModify socNameCheck \
269+ socTopModify socNameCheck socBuild \
223270 cleanBuild cleanMillOut cleanDepRepo cleanAll
0 commit comments