### -*-Makefile-*- # ================================================================ .PHONY: help help: @echo ' make compile Recompile Core (CPU, caches) into Verilog_RTL and copies into xilinx_ip/hdl' @echo ' NOTE: needs Bluespec bsc compiler' @echo '' @echo ' make clean Remove intermediate build-files' @echo ' make full_clean Restore this directory to pristine state' .PHONY: all all: compile # ================================================================ REPO ?= .. ARCH ?= RV64ACDFIMSU # ================================================================ # RISC-V config macros passed into Bluespec 'bsc' compiler BSC_COMPILATION_FLAGS += \ -D RV64 \ -D ISA_PRIV_M -D ISA_PRIV_S -D ISA_PRIV_U \ -D SV39 \ -D ISA_I -D ISA_M -D ISA_A -D ISA_F -D ISA_D -D ISA_FD_DIV -D ISA_C \ -D SHIFT_BARREL \ -D MULT_SERIAL \ -D Near_Mem_Caches \ -D FABRIC64 \ -D INCLUDE_GDB_CONTROL \ -D INCLUDE_TANDEM_VERIF \ -D BRVF_TRACE \ -D XILINX_BSCAN -D XILINX_XCVU9P -D JTAG_TAP \ # Only used if we don't have INCLUDE_GDB_CONTROL # -D EXTERNAL_DEBUG_MODULE #================================================================ # Parameter settings for MIT RISCY # We include 'BSC_COMPILATION_FLAGS += D BSIM' to use simulation # models for the integer divier. Omit this for synthesis. ifeq ($(SIM), true) BSC_COMPILATION_FLAGS += -D BSIM endif include $(REPO)/builds/Resources/Include_RISCY_Config.mk # ================================================================ # Path to RISCY-OOO sources RISCY_HOME ?= ../src_Core/RISCY_OOO RISCY_DIRS = $(RISCY_HOME)/procs/RV64G_OOO:$(RISCY_HOME)/procs/lib:$(RISCY_HOME)/coherence/src:$(RISCY_HOME)/fpgautils/lib CONNECTAL_DIRS = $(RISCY_HOME)/connectal/bsv:$(RISCY_HOME)/connectal/tests/spi:$(RISCY_HOME)/connectal/lib/bsv # ALL_RISCY_DIRS = $(RISCY_DIRS) ALL_RISCY_DIRS = $(RISCY_DIRS):$(CONNECTAL_DIRS) # ================================================================ # Search path for bsc for .bsv files CORE_DIRS = $(REPO)/src_Core/CPU:$(REPO)/src_Core/ISA:$(REPO)/src_Core/Core:$(REPO)/src_Core/PLIC:$(REPO)/src_Core/Debug_Module:$(REPO)/src_Core/BSV_Additional_Libs TESTBENCH_DIRS = $(REPO)/src_Testbench/Fabrics/AXI4 BSC_PATH = -p $(ALL_RISCY_DIRS):$(CORE_DIRS):src_BSV:$(TESTBENCH_DIRS):+:%/Libraries/TLM3:%/Libraries/Axi:%/Libraries/Axi4 # ---------------- # Top-level file and module TOPFILE = src_BSV/P3_Core.bsv TOPMODULE = mkP3_Core # ================================================================ # bsc compilation flags BSC_COMPILATION_FLAGS += \ -keep-fires -aggressive-conditions -no-warn-action-shadowing -no-show-timestamps \ -suppress-warnings G0020 \ +RTS -K128M -RTS -show-range-conflict # ================================================================ # Generate Verilog RTL from BSV sources (needs Bluespec 'bsc' compiler) RTL_GEN_DIRS = -vdir Verilog_RTL -bdir build_dir -info-dir build_dir build_dir: mkdir -p $@ Verilog_RTL: mkdir -p $@ .PHONY: compile compile: build_dir Verilog_RTL @echo "INFO: Generating RTL into Verilog_RTL ..." bsc -u -elab -verilog $(RTL_GEN_DIRS) $(BSC_COMPILATION_FLAGS) $(BSC_PATH) $(TOPFILE) @echo "INFO: Generated RTL into Verilog_RTL" # ================================================================ .PHONY: clean clean: rm -r -f *~ Makefile_* build_dir .PHONY: full_clean full_clean: clean rm -r -f *.log Verilog_RTL # ================================================================