blob: 1a0b2b8514312a4e89edfab39f14b7567546f54e [file] [log] [blame]
include $(PACKAGES_DIR)/packages.mk
include $(PACKAGES_DIR)/simscripts/mkfiles/plusargs.mk
PLUSARGS += +tool.cocotb
# Ensure cocotb resolves X appropriately when running with signals
COCOTB_RESOLVE_X=ZEROS
export COCOTB_RESOLVE_X
PYTHONPATH:=$(FWRISC)/ve/fwrisc_rv32i/tests/cocotb:$(PYTHONPATH)
PYTHONPATH:=$(FWRISC)/ve/fwrisc_tracer_bfm/src:$(PYTHONPATH)
COCOTB_BFM_MODULES += fwrisc_tracer_bfm
MK_INCLUDES += $(FWRISC)/ve/fwrisc_rv32i/tests/fwrisc_tests.mk
RUN_PRE_TARGETS += ram.hex regs.hex
SRC_DIRS += $(FWRISC)/ve/fwrisc_rv32i/tb
PY_SRC_DIRS += $(FWRISC)/ve/fwrisc_rv32i/tests/pyfv-hpi
PY_SRC_DIRS += $(FWRISC)/ve/fwrisc_tracer_bfm/pyfv-hpi
TB_MODULES_HDL=fwrisc_rv32i_tb_hdl
TB_MODULES_HVL=fwrisc_tb_hvl
PYHPI_CLOCKSPEC=-clk clock=10ns
PYHPI_MODULES += fwrisc_tests
VLSIM_CLOCKSPEC += clock=10ns
SW_IMAGES := $(foreach img,$(call get_plusarg,SW_IMAGE,$(PLUSARGS)),$(subst $(BUILD_DIR)/esw/,,$(img)))
SW_IMAGE := $(firstword $(SW_IMAGES))
ifeq (zephyr.elf,$(notdir $(SW_IMAGE)))
SW_IMAGE := $(subst $(BUILD_DIR)/esw/,,$(SW_IMAGE))
endif
ifneq (,$(SW_IMAGES))
BUILD_PRECOMPILE_TARGETS += embedded_sw
endif
ifeq (vl,$(SIM))
CXXFLAGS += -I$(BUILDDIR)/obj_dir
endif
include $(PACKAGES_DIR)/simscripts/mkfiles/common_sim.mk
regs.hex : $(FWRISC)/rtl/regs.hex
$(Q)cp $(FWRISC)/rtl/regs.hex .
ifneq (,$(SW_IMAGE))
ram.hex : $(BUILD_DIR)/esw/$(SW_IMAGE)
$(Q)riscv32-unknown-elf-objcopy $^ -O verilog ram.vlog
$(Q)perl $(MEMORY_PRIMITIVES)/bin/objcopyvl2vl.pl \
-width 32 -offset 0x80000000 -le ram.vlog ram.hex
else # No software image
ram.hex :
# 00007013 -- ANDI
$(Q)echo "@00000000" > $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
$(Q)echo "00007013" >> $@
endif
embedded_sw :
$(Q)echo SW_IMAGES=$(SW_IMAGES) SW_IMAGE=$(SW_IMAGE)
$(Q)if test ! -d esw; then mkdir -p esw; fi
$(Q)$(MAKE) -C esw VERBOSE=$(VERBOSE) \
-f $(SIM_DIR)/scripts/embedded.mk $(SW_IMAGES)
include $(PACKAGES_DIR)/packages.mk