367 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			367 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# UCB use only
 | 
						|
-include $(base_dir)/Makefrag-refchip
 | 
						|
 | 
						|
# check RISCV environment variable
 | 
						|
ifndef RISCV
 | 
						|
$(error Please set environment variable RISCV. Please take a look at README)
 | 
						|
endif
 | 
						|
 | 
						|
MODEL := Top
 | 
						|
CXX := g++
 | 
						|
CXXFLAGS := -O1
 | 
						|
 | 
						|
SBT := java -Xmx2048M -Xss8M -XX:MaxPermSize=128M -jar sbt-launch.jar
 | 
						|
 | 
						|
src_path = src/main/scala
 | 
						|
chisel_srcs = $(base_dir)/$(src_path)/*.scala $(base_dir)/rocket/$(src_path)/*.scala $(base_dir)/uncore/$(src_path)/*.scala $(SRC_EXTENSION)
 | 
						|
 | 
						|
disasm := 2>
 | 
						|
which_disasm := $(shell which riscv-dis)
 | 
						|
ifneq ($(which_disasm),)
 | 
						|
	disasm := 3>&1 1>&2 2>&3 | $(which_disasm) $(DISASM_EXTENSION) >
 | 
						|
endif
 | 
						|
 | 
						|
timeout_cycles = 100000000
 | 
						|
 | 
						|
#--------------------------------------------------------------------
 | 
						|
# Verilog Generation
 | 
						|
#--------------------------------------------------------------------
 | 
						|
 | 
						|
$(generated_dir)/$(MODEL).$(CONFIG).v: $(chisel_srcs)
 | 
						|
	cd $(base_dir) && mkdir -p $(generated_dir) && $(SBT) "project rocketchip" "elaborate $(MODEL) --backend $(BACKEND) --targetDir $(generated_dir) --noInlineMem --configInstance rocketchip.$(CONFIG) --configDump"
 | 
						|
	cd $(generated_dir) && \
 | 
						|
	if [ -a $(MODEL).$(CONFIG).conf ]; then \
 | 
						|
	  $(mem_gen) $(generated_dir)/$(MODEL).$(CONFIG).conf >> $(generated_dir)/$(MODEL).$(CONFIG).v; \
 | 
						|
	fi
 | 
						|
 | 
						|
$(generated_dir)/consts.$(CONFIG).vh: $(generated_dir)/$(MODEL).$(CONFIG).v
 | 
						|
	echo "\`ifndef CONST_VH" > $@
 | 
						|
	echo "\`define CONST_VH" >> $@
 | 
						|
	sed -r 's/\(([A-Za-z0-9_]+),([A-Za-z0-9_]+)\)/`define \1 \2/' $(patsubst %.v,%.prm,$<) >> $@
 | 
						|
	echo "\`endif // CONST_VH" >> $@
 | 
						|
 | 
						|
$(generated_dir)/memdessertMemDessert.$(CONFIG).v: $(base_dir)/$(src_path)/*.scala $(base_dir)/uncore/$(src_path)/*.scala
 | 
						|
	cd $(base_dir) && mkdir -p $(generated_dir) && $(SBT) "project rocketchip" "elaborate MemDessert --backend v --targetDir $(generated_dir) --moduleNamePrefix memdessert --configInstance rocketchip.$(CONFIG)"
 | 
						|
 | 
						|
#--------------------------------------------------------------------
 | 
						|
# DRAMSim2
 | 
						|
#--------------------------------------------------------------------
 | 
						|
 | 
						|
DRAMSIM_OBJS := $(patsubst %.cpp,%.o,$(wildcard $(base_dir)/dramsim2/*.cpp))
 | 
						|
$(DRAMSIM_OBJS): %.o: %.cpp
 | 
						|
	$(CXX) $(CXXFLAGS) -DNO_STORAGE -DNO_OUTPUT -Dmain=nomain -c -o $@ $<
 | 
						|
$(sim_dir)/libdramsim.a: $(DRAMSIM_OBJS)
 | 
						|
	ar rcs $@ $^
 | 
						|
 | 
						|
#--------------------------------------------------------------------
 | 
						|
# ISA Tests
 | 
						|
#--------------------------------------------------------------------
 | 
						|
 | 
						|
tests_isa_dir = $(base_dir)/riscv-tools/riscv-tests/isa
 | 
						|
 | 
						|
asm_p_tests = \
 | 
						|
	rv64ui-p-add \
 | 
						|
	rv64ui-p-addi \
 | 
						|
	rv64ui-p-amoadd_d \
 | 
						|
	rv64ui-p-amoadd_w \
 | 
						|
	rv64ui-p-amoand_d \
 | 
						|
	rv64ui-p-amoand_w \
 | 
						|
	rv64ui-p-amoor_d \
 | 
						|
	rv64ui-p-amoor_w \
 | 
						|
	rv64ui-p-amoxor_d \
 | 
						|
	rv64ui-p-amoxor_w \
 | 
						|
	rv64ui-p-amoswap_d \
 | 
						|
	rv64ui-p-amoswap_w \
 | 
						|
	rv64ui-p-amomax_d \
 | 
						|
	rv64ui-p-amomax_w \
 | 
						|
	rv64ui-p-amomaxu_d \
 | 
						|
	rv64ui-p-amomaxu_w \
 | 
						|
	rv64ui-p-amomin_d \
 | 
						|
	rv64ui-p-amomin_w \
 | 
						|
	rv64ui-p-amominu_d \
 | 
						|
	rv64ui-p-amominu_w \
 | 
						|
	rv64ui-p-auipc \
 | 
						|
	rv64ui-p-fence_i \
 | 
						|
	rv64ui-p-sb \
 | 
						|
	rv64ui-p-sd \
 | 
						|
	rv64ui-p-sh \
 | 
						|
	rv64ui-p-sw \
 | 
						|
	rv64ui-p-addiw \
 | 
						|
	rv64ui-p-addw \
 | 
						|
	rv64ui-p-and \
 | 
						|
	rv64ui-p-andi \
 | 
						|
	rv64ui-p-beq \
 | 
						|
	rv64ui-p-bge \
 | 
						|
	rv64ui-p-bgeu \
 | 
						|
	rv64ui-p-blt \
 | 
						|
	rv64ui-p-bltu \
 | 
						|
	rv64ui-p-bne \
 | 
						|
	rv64ui-p-div \
 | 
						|
	rv64ui-p-divu \
 | 
						|
	rv64ui-p-divuw \
 | 
						|
	rv64ui-p-divw \
 | 
						|
	rv64ui-p-j \
 | 
						|
	rv64ui-p-jal \
 | 
						|
	rv64ui-p-jalr \
 | 
						|
	rv64ui-p-lb \
 | 
						|
	rv64ui-p-lbu \
 | 
						|
	rv64ui-p-ld \
 | 
						|
	rv64ui-p-lh \
 | 
						|
	rv64ui-p-lhu \
 | 
						|
	rv64ui-p-lui \
 | 
						|
	rv64ui-p-lw \
 | 
						|
	rv64ui-p-lwu \
 | 
						|
	rv64ui-p-mul \
 | 
						|
	rv64ui-p-mulh \
 | 
						|
	rv64ui-p-mulhsu \
 | 
						|
	rv64ui-p-mulhu \
 | 
						|
	rv64ui-p-mulw \
 | 
						|
	rv64ui-p-or \
 | 
						|
	rv64ui-p-ori \
 | 
						|
	rv64ui-p-rem \
 | 
						|
	rv64ui-p-remu \
 | 
						|
	rv64ui-p-remuw \
 | 
						|
	rv64ui-p-remw \
 | 
						|
	rv64ui-p-simple \
 | 
						|
	rv64ui-p-sll \
 | 
						|
	rv64ui-p-slli \
 | 
						|
	rv64ui-p-slliw \
 | 
						|
	rv64ui-p-sllw \
 | 
						|
	rv64ui-p-slt \
 | 
						|
	rv64ui-p-slti \
 | 
						|
	rv64ui-p-sltiu \
 | 
						|
	rv64ui-p-sltu \
 | 
						|
	rv64ui-p-sra \
 | 
						|
	rv64ui-p-srai \
 | 
						|
	rv64ui-p-sraiw \
 | 
						|
	rv64ui-p-sraw \
 | 
						|
	rv64ui-p-srliw \
 | 
						|
	rv64ui-p-srlw \
 | 
						|
	rv64ui-p-sub \
 | 
						|
	rv64ui-p-subw \
 | 
						|
	rv64ui-p-xor \
 | 
						|
	rv64ui-p-xori \
 | 
						|
	rv64uf-p-ldst \
 | 
						|
	rv64uf-p-move \
 | 
						|
	rv64uf-p-fsgnj \
 | 
						|
	rv64uf-p-fcmp \
 | 
						|
	rv64uf-p-fcvt \
 | 
						|
	rv64uf-p-fcvt_w \
 | 
						|
	rv64uf-p-fclass \
 | 
						|
	rv64uf-p-fadd \
 | 
						|
	rv64uf-p-fmin \
 | 
						|
	rv64uf-p-fmadd \
 | 
						|
	rv64uf-p-structural \
 | 
						|
	rv64si-p-coreid \
 | 
						|
	rv64si-p-csr \
 | 
						|
	rv64si-pm-ipi \
 | 
						|
	rv64ui-pm-lrsc \
 | 
						|
 | 
						|
asm_v_tests = \
 | 
						|
	rv64ui-v-add \
 | 
						|
	rv64ui-v-addi \
 | 
						|
	rv64ui-v-amoadd_d \
 | 
						|
	rv64ui-v-amoadd_w \
 | 
						|
	rv64ui-v-amoand_d \
 | 
						|
	rv64ui-v-amoand_w \
 | 
						|
	rv64ui-v-amoor_d \
 | 
						|
	rv64ui-v-amoor_w \
 | 
						|
	rv64ui-v-amoxor_d \
 | 
						|
	rv64ui-v-amoxor_w \
 | 
						|
	rv64ui-v-amoswap_d \
 | 
						|
	rv64ui-v-amoswap_w \
 | 
						|
	rv64ui-v-amomax_d \
 | 
						|
	rv64ui-v-amomax_w \
 | 
						|
	rv64ui-v-amomaxu_d \
 | 
						|
	rv64ui-v-amomaxu_w \
 | 
						|
	rv64ui-v-amomin_d \
 | 
						|
	rv64ui-v-amomin_w \
 | 
						|
	rv64ui-v-amominu_d \
 | 
						|
	rv64ui-v-amominu_w \
 | 
						|
	rv64ui-v-auipc \
 | 
						|
	rv64ui-v-fence_i \
 | 
						|
	rv64ui-v-sb \
 | 
						|
	rv64ui-v-sd \
 | 
						|
	rv64ui-v-sh \
 | 
						|
	rv64ui-v-sw \
 | 
						|
	rv64ui-v-addiw \
 | 
						|
	rv64ui-v-addw \
 | 
						|
	rv64ui-v-and \
 | 
						|
	rv64ui-v-andi \
 | 
						|
	rv64ui-v-beq \
 | 
						|
	rv64ui-v-bge \
 | 
						|
	rv64ui-v-bgeu \
 | 
						|
	rv64ui-v-blt \
 | 
						|
	rv64ui-v-bltu \
 | 
						|
	rv64ui-v-bne \
 | 
						|
	rv64ui-v-div \
 | 
						|
	rv64ui-v-divu \
 | 
						|
	rv64ui-v-divuw \
 | 
						|
	rv64ui-v-divw \
 | 
						|
	rv64ui-v-j \
 | 
						|
	rv64ui-v-jal \
 | 
						|
	rv64ui-v-jalr \
 | 
						|
	rv64ui-v-lb \
 | 
						|
	rv64ui-v-lbu \
 | 
						|
	rv64ui-v-ld \
 | 
						|
	rv64ui-v-lh \
 | 
						|
	rv64ui-v-lhu \
 | 
						|
	rv64ui-v-lui \
 | 
						|
	rv64ui-v-lw \
 | 
						|
	rv64ui-v-lwu \
 | 
						|
	rv64ui-v-mul \
 | 
						|
	rv64ui-v-mulh \
 | 
						|
	rv64ui-v-mulhsu \
 | 
						|
	rv64ui-v-mulhu \
 | 
						|
	rv64ui-v-mulw \
 | 
						|
	rv64ui-v-or \
 | 
						|
	rv64ui-v-ori \
 | 
						|
	rv64ui-v-rem \
 | 
						|
	rv64ui-v-remu \
 | 
						|
	rv64ui-v-remuw \
 | 
						|
	rv64ui-v-remw \
 | 
						|
	rv64ui-v-sll \
 | 
						|
	rv64ui-v-slli \
 | 
						|
	rv64ui-v-slliw \
 | 
						|
	rv64ui-v-sllw \
 | 
						|
	rv64ui-v-slt \
 | 
						|
	rv64ui-v-slti \
 | 
						|
	rv64ui-v-sltiu \
 | 
						|
	rv64ui-v-sltu \
 | 
						|
	rv64ui-v-sra \
 | 
						|
	rv64ui-v-srai \
 | 
						|
	rv64ui-v-sraiw \
 | 
						|
	rv64ui-v-sraw \
 | 
						|
	rv64ui-v-srliw \
 | 
						|
	rv64ui-v-srlw \
 | 
						|
	rv64ui-v-sub \
 | 
						|
	rv64ui-v-subw \
 | 
						|
	rv64ui-v-xor \
 | 
						|
	rv64ui-v-xori \
 | 
						|
	rv64uf-v-ldst \
 | 
						|
	rv64uf-v-move \
 | 
						|
	rv64uf-v-fsgnj \
 | 
						|
	rv64uf-v-fcmp \
 | 
						|
	rv64uf-v-fcvt \
 | 
						|
	rv64uf-v-fcvt_w \
 | 
						|
	rv64uf-v-fclass \
 | 
						|
	rv64uf-v-fadd \
 | 
						|
	rv64uf-v-fmin \
 | 
						|
	rv64uf-v-fmadd \
 | 
						|
	rv64uf-v-structural \
 | 
						|
 | 
						|
#--------------------------------------------------------------------
 | 
						|
# Benchmark Tests
 | 
						|
#--------------------------------------------------------------------
 | 
						|
 | 
						|
tests_bmark_dir = $(base_dir)/riscv-tools/riscv-tests/benchmarks
 | 
						|
bmarks = \
 | 
						|
	median.riscv \
 | 
						|
	multiply.riscv \
 | 
						|
	qsort.riscv \
 | 
						|
	towers.riscv \
 | 
						|
	vvadd.riscv \
 | 
						|
	mm.riscv \
 | 
						|
	dhrystone.riscv \
 | 
						|
	spmv.riscv \
 | 
						|
	#vec-vvadd.riscv \
 | 
						|
	#vec-cmplxmult.riscv \
 | 
						|
	#vec-matmul.riscv \
 | 
						|
	#mt-vvadd.riscv \
 | 
						|
	#mt-matmul.riscv \
 | 
						|
 | 
						|
#--------------------------------------------------------------------
 | 
						|
# Multi-threaded Benchmark Tests
 | 
						|
#--------------------------------------------------------------------
 | 
						|
 | 
						|
test_mt_bmark_dir = $(base_dir)/riscv-tools/riscv-tests/mt
 | 
						|
mt_bmarks = \
 | 
						|
  ab_matmul.riscv \
 | 
						|
  ab_vvadd.riscv \
 | 
						|
  ad_matmul.riscv \
 | 
						|
  ad_vvadd.riscv \
 | 
						|
  ae_matmul.riscv \
 | 
						|
  ae_vvadd.riscv \
 | 
						|
  af_matmul.riscv \
 | 
						|
  af_vvadd.riscv \
 | 
						|
  ag_matmul.riscv \
 | 
						|
  ag_vvadd.riscv \
 | 
						|
  ai_matmul.riscv \
 | 
						|
  ai_vvadd.riscv \
 | 
						|
  aj_vvadd.riscv \
 | 
						|
  ak_matmul.riscv \
 | 
						|
  ak_vvadd.riscv \
 | 
						|
  al_matmul.riscv \
 | 
						|
  al_vvadd.riscv \
 | 
						|
  am_matmul.riscv \
 | 
						|
  am_vvadd.riscv \
 | 
						|
  an_matmul.riscv \
 | 
						|
  ap_matmul.riscv \
 | 
						|
  ap_vvadd.riscv \
 | 
						|
  aq_matmul.riscv \
 | 
						|
  aq_vvadd.riscv \
 | 
						|
  ar_matmul.riscv \
 | 
						|
  ar_vvadd.riscv \
 | 
						|
  as_matmul.riscv \
 | 
						|
  as_vvadd.riscv \
 | 
						|
  at_matmul.riscv \
 | 
						|
  at_vvadd.riscv \
 | 
						|
  av_matmul.riscv \
 | 
						|
  av_vvadd.riscv \
 | 
						|
  ay_matmul.riscv \
 | 
						|
  ay_vvadd.riscv \
 | 
						|
  az_matmul.riscv \
 | 
						|
  az_vvadd.riscv \
 | 
						|
  ba_matmul.riscv \
 | 
						|
  ba_vvadd.riscv \
 | 
						|
  bb_matmul.riscv \
 | 
						|
  bb_vvadd.riscv \
 | 
						|
  bc_matmul.riscv \
 | 
						|
  bc_vvadd.riscv \
 | 
						|
  be_matmul.riscv \
 | 
						|
  be_vvadd.riscv \
 | 
						|
  bf_matmul.riscv \
 | 
						|
  bf_vvadd.riscv \
 | 
						|
  bh_matmul.riscv \
 | 
						|
  bh_vvadd.riscv \
 | 
						|
  bj_matmul.riscv \
 | 
						|
  bj_vvadd.riscv \
 | 
						|
  bk_matmul.riscv \
 | 
						|
  bk_vvadd.riscv \
 | 
						|
  bm_matmul.riscv \
 | 
						|
  bm_vvadd.riscv \
 | 
						|
  bn_matmul.riscv \
 | 
						|
  bn_vvadd.riscv \
 | 
						|
  bo_matmul.riscv \
 | 
						|
  bo_vvadd.riscv \
 | 
						|
  bp_matmul.riscv \
 | 
						|
  bp_vvadd.riscv \
 | 
						|
  br_matmul.riscv \
 | 
						|
  br_vvadd.riscv \
 | 
						|
  bs_matmul.riscv \
 | 
						|
  bs_vvadd.riscv \
 | 
						|
  bt_matmul.riscv \
 | 
						|
  bt_vvadd.riscv \
 | 
						|
 | 
						|
#--------------------------------------------------------------------
 | 
						|
# Build Tests
 | 
						|
#--------------------------------------------------------------------
 | 
						|
 | 
						|
%.hex:
 | 
						|
	$(MAKE) -C $(dir $@) $(notdir $@)
 | 
						|
 | 
						|
%.riscv.hex: %
 | 
						|
	$(MAKE) -C $(dir $@) $(notdir $@)
 | 
						|
 | 
						|
$(addprefix $(output_dir)/, $(addsuffix .hex, $(asm_p_tests) $(asm_v_tests))): $(output_dir)/%.hex: $(tests_isa_dir)/%.hex
 | 
						|
	mkdir -p $(output_dir)
 | 
						|
	ln -fs $< $@
 | 
						|
 | 
						|
$(addprefix $(output_dir)/, $(addsuffix .hex, $(bmarks))): $(output_dir)/%.hex: $(tests_bmark_dir)/%.hex
 | 
						|
	mkdir -p $(output_dir)
 | 
						|
	ln -fs $< $@
 | 
						|
 | 
						|
$(addprefix $(output_dir)/, $(addsuffix .hex, $(mt_bmarks))): $(output_dir)/%.hex: $(test_mt_bmark_dir)/%.hex
 | 
						|
	mkdir -p $(output_dir)
 | 
						|
	ln -fs $< $@
 |