1c6d43980SLemover#*************************************************************************************** 2c6d43980SLemover# Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3c6d43980SLemover# 4c6d43980SLemover# XiangShan is licensed under Mulan PSL v2. 5c6d43980SLemover# You can use this software according to the terms and conditions of the Mulan PSL v2. 6c6d43980SLemover# You may obtain a copy of Mulan PSL v2 at: 7c6d43980SLemover# http://license.coscl.org.cn/MulanPSL2 8c6d43980SLemover# 9c6d43980SLemover# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 10c6d43980SLemover# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 11c6d43980SLemover# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 12c6d43980SLemover# 13c6d43980SLemover# See the Mulan PSL v2 for more details. 14c6d43980SLemover#*************************************************************************************** 15c6d43980SLemover 168b037849SYinan XuTOP = XSTop 178b037849SYinan XuFPGATOP = top.TopMain 18c786d283SLingrui98BUILD_DIR = ./build 1984e9d6ebSZihao YuTOP_V = $(BUILD_DIR)/$(TOP).v 2084e9d6ebSZihao YuSCALA_FILE = $(shell find ./src/main/scala -name '*.scala') 211a772c7eSZihao YuTEST_FILE = $(shell find ./src/test/scala -name '*.scala') 22885733f1SZihao YuMEM_GEN = ./scripts/vlsi_mem_gen 2384e9d6ebSZihao Yu 242225d46eSJiawei LinSIMTOP = top.SimTop 25e8ab4e39SZihao YuIMAGE ?= temp 2605f23f57SWilliam WangCONFIG ?= DefaultConfig 27*18432bcfSYinan XuNUM_CORES ?= 1 2807379a26SZihao Yu 29de74d363SYinan Xu# co-simulation with DRAMsim3 30de74d363SYinan Xuifeq ($(WITH_DRAMSIM3),1) 31de74d363SYinan Xuifndef DRAMSIM3_HOME 32de74d363SYinan Xu$(error DRAMSIM3_HOME is not set) 33de74d363SYinan Xuendif 34de74d363SYinan Xuoverride SIM_ARGS += --with-dramsim3 35de74d363SYinan Xuendif 36de74d363SYinan Xu 37672098b7SZihao YuTIMELOG = $(BUILD_DIR)/time.log 38672098b7SZihao YuTIME_CMD = time -a -o $(TIMELOG) 39672098b7SZihao Yu 4006b2abbaSYinan Xu# remote machine with more cores to speedup c++ build 417eaffc59SYinan XuREMOTE ?= localhost 427eaffc59SYinan Xu 430016469dSZihao Yu.DEFAULT_GOAL = verilog 440016469dSZihao Yu 45d22ebddaSZihao Yuhelp: 468b037849SYinan Xu mill XiangShan.test.runMain $(SIMTOP) --help 47d22ebddaSZihao Yu 4884e9d6ebSZihao Yu$(TOP_V): $(SCALA_FILE) 4984e9d6ebSZihao Yu mkdir -p $(@D) 50*18432bcfSYinan Xu mill XiangShan.runMain $(FPGATOP) -td $(@D) \ 51*18432bcfSYinan Xu --config $(CONFIG) --full-stacktrace --output-file $(@F) \ 52*18432bcfSYinan Xu --disable-all --remove-assert --infer-rw \ 53*18432bcfSYinan Xu --repl-seq-mem -c:$(FPGATOP):-o:$(@D)/$(@F).conf $(SIM_ARGS) \ 54*18432bcfSYinan Xu --num-cores $(NUM_CORES) 554f24fc9aSDan Tang $(MEM_GEN) $(@D)/$(@F).conf --tsmc28 --output_file $(@D)/tsmc28_sram.v > $(@D)/tsmc28_sram.v.conf 568b037849SYinan Xu $(MEM_GEN) $(@D)/$(@F).conf --output_file $(@D)/sim_sram.v 57f874f036SYinan Xu # sed -i -e 's/_\(aw\|ar\|w\|r\|b\)_\(\|bits_\)/_\1/g' $@ 58ca388318SYinan Xu @git log -n 1 >> .__head__ 59ca388318SYinan Xu @git diff >> .__diff__ 60ca388318SYinan Xu @sed -i 's/^/\/\// ' .__head__ 61ca388318SYinan Xu @sed -i 's/^/\/\//' .__diff__ 62439dd8f0SYinan Xu @cat .__head__ .__diff__ $@ > .__out__ 63ca388318SYinan Xu @mv .__out__ $@ 64ca388318SYinan Xu @rm .__head__ .__diff__ 6584e9d6ebSZihao Yu 66709152c8SWang Huizhedeploy: build/top.zip 67709152c8SWang Huizhe 68709152c8SWang Huizhe 69709152c8SWang Huizhebuild/top.zip: $(TOP_V) 70709152c8SWang Huizhe @zip -r $@ $< $<.conf build/*.anno.json 71709152c8SWang Huizhe 72709152c8SWang Huizhe.PHONY: deploy build/top.zip 73709152c8SWang Huizhe 740016469dSZihao Yuverilog: $(TOP_V) 750016469dSZihao Yu 762225d46eSJiawei LinSIM_TOP = SimTop 7719dedbf6SZihao YuSIM_TOP_V = $(BUILD_DIR)/$(SIM_TOP).v 781a772c7eSZihao Yu$(SIM_TOP_V): $(SCALA_FILE) $(TEST_FILE) 7919dedbf6SZihao Yu mkdir -p $(@D) 80672098b7SZihao Yu @echo "\n[mill] Generating Verilog files..." > $(TIMELOG) 81672098b7SZihao Yu @date -R | tee -a $(TIMELOG) 82*18432bcfSYinan Xu $(TIME_CMD) mill XiangShan.test.runMain $(SIMTOP) -td $(@D) \ 83*18432bcfSYinan Xu --config $(CONFIG) --full-stacktrace --output-file $(@F) \ 84*18432bcfSYinan Xu --infer-rw --repl-seq-mem -c:$(SIMTOP):-o:$(@D)/$(@F).conf \ 85*18432bcfSYinan Xu --num-cores $(NUM_CORES) $(SIM_ARGS) 862b3df3d4SYinan Xu $(MEM_GEN) $(@D)/$(@F).conf --output_file $(@D)/$(@F).sram.v 872b3df3d4SYinan Xu @git log -n 1 >> .__head__ 882b3df3d4SYinan Xu @git diff >> .__diff__ 892b3df3d4SYinan Xu @sed -i 's/^/\/\// ' .__head__ 902b3df3d4SYinan Xu @sed -i 's/^/\/\//' .__diff__ 912b3df3d4SYinan Xu @cat .__head__ .__diff__ $@ $(@D)/$(@F).sram.v > .__out__ 922b3df3d4SYinan Xu @mv .__out__ $@ 932b3df3d4SYinan Xu @rm .__head__ .__diff__ 94c4401c32SYinan Xu sed -i -e 's/$$fatal/xs_assert(`__LINE__)/g' $(SIM_TOP_V) 9519dedbf6SZihao Yu 96e354ebdcSZihao Yusim-verilog: $(SIM_TOP_V) 97e354ebdcSZihao Yu 982225d46eSJiawei LinSIM_CSRC_DIR = $(abspath ./src/test/csrc/common) 992225d46eSJiawei LinSIM_CXXFILES = $(shell find $(SIM_CSRC_DIR) -name "*.cpp") 10019dedbf6SZihao Yu 1012225d46eSJiawei LinDIFFTEST_CSRC_DIR = $(abspath ./src/test/csrc/difftest) 1022225d46eSJiawei LinDIFFTEST_CXXFILES = $(shell find $(DIFFTEST_CSRC_DIR) -name "*.cpp") 103360f082fSYinan Xu 104acd0ebb7SYinan XuSIM_VSRC = $(shell find ./src/test/vsrc/common -name "*.v" -or -name "*.sv") 1058ea79e0dSYinan Xu 106acd0ebb7SYinan Xuinclude verilator.mk 107acd0ebb7SYinan Xuinclude vcs.mk 10819dedbf6SZihao Yu 10910325796SYinan Xuifndef NEMU_HOME 11010325796SYinan Xu$(error NEMU_HOME is not set) 11110325796SYinan Xuendif 1124a7b9111SLinJiaweiREF_SO := $(NEMU_HOME)/build/riscv64-nemu-interpreter-so 1135211b1c1SZihao Yu$(REF_SO): 114aa38aa4dSWilliam Wang $(MAKE) -C $(NEMU_HOME) ISA=riscv64 SHARE=1 1155211b1c1SZihao Yu 116f19d0b9dSYinan XuSEED ?= $(shell shuf -i 1-10000 -n 1) 1176ddc3619SZihao Yu 1182f32751aSLinJiaweirelease-lock: 1192f32751aSLinJiawei ssh -tt $(REMOTE) 'rm -f $(LOCK)' 1202f32751aSLinJiawei 121acd0ebb7SYinan Xuclean: vcs-clean 122c3515a9cSYinan Xu rm -rf ./build 1230016469dSZihao Yu 1249e38a5d4Slinjiaweiinit: 1259e38a5d4Slinjiawei git submodule update --init 1269e38a5d4Slinjiawei 127917276a0SJiuyang liubump: 128917276a0SJiuyang liu git submodule foreach "git fetch origin&&git checkout master&&git reset --hard origin/master" 129917276a0SJiuyang liu 130917276a0SJiuyang liubsp: 13116cf0dd4SJiawei Lin mill -i mill.bsp.BSP/install 1322225d46eSJiawei Lin 133e354ebdcSZihao Yu.PHONY: verilog sim-verilog emu clean help init bump bsp $(REF_SO) 1342225d46eSJiawei Lin 135