Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
0530d22a1This file is pinned to the selected release. Download the original to open it in your design tool.
DEBUG?=no
REGRESSION_PATH?=./
VEXRISCV_FILE?=../../../../VexRiscv.v
IBUS?=CACHED
IBUS_TC?=no
IBUS_DATA_WIDTH?=32
DBUS?=CACHED
DBUS_LOAD_DATA_WIDTH?=32
DBUS_STORE_DATA_WIDTH?=32
TRACE?=no
TRACE_ACCESS?=no
TRACE_START=0
TRACE_SPORADIC?=no
ISA_TEST?=yes
MUL?=yes
DIV?=yes
RVF?=no
RVD?=no
CSR?=yes
CSR_SKIP_TEST?=no
EBREAK?=no
FENCEI?=no
MMU?=yes
DBUS_EXCLUSIVE?=no
DBUS_INVALIDATE?=no
PMP?=no
SEED?=no
LRSC?=no
AMO?=no
NO_STALL?=no
DEBUG_PLUGIN?=STD
DEBUG_PLUGIN_EXTERNAL?=no
RUN_HEX=no
WITH_RISCV_REF=yes
CUSTOM_SIMD_ADD?=no
CUSTOM_CSR?=no
DHRYSTONE=yes
FREERTOS?=no
ZEPHYR?=no
REDO?=10
REF=no
TRACE_WITH_TIME=no
REF_TIME=no
THREAD_COUNT?=$(shell nproc)
MTIME_INSTR_FACTOR?=no
COMPRESSED?=no
SUPERVISOR?=no
STOP_ON_ERROR?=no
COREMARK=no
WITH_USER_IO?=no
ADDCFLAGS += -CFLAGS -DREGRESSION_PATH='\"$(REGRESSION_PATH)/\"'
ADDCFLAGS += -CFLAGS -DIBUS_${IBUS}
ADDCFLAGS += -CFLAGS -DIBUS_DATA_WIDTH=${IBUS_DATA_WIDTH}
ADDCFLAGS += -CFLAGS -DDBUS_LOAD_DATA_WIDTH=${DBUS_LOAD_DATA_WIDTH}
ADDCFLAGS += -CFLAGS -DDBUS_STORE_DATA_WIDTH=${DBUS_STORE_DATA_WIDTH}
ADDCFLAGS += -CFLAGS -DDBUS_${DBUS}
ADDCFLAGS += -CFLAGS -DREDO=${REDO}
ADDCFLAGS += -CFLAGS -pthread
ADDCFLAGS += -CFLAGS -Wno-unused-result
ADDCFLAGS += -CFLAGS -DTHREAD_COUNT=${THREAD_COUNT}
ifeq ($(DEBUG),yes)
ADDCFLAGS += -CFLAGS -O0 -CFLAGS -g
else
ADDCFLAGS += -CFLAGS -O3 -O3
endif
ifeq ($(CONCURRENT_OS_EXECUTIONS),yes)
ADDCFLAGS += -CFLAGS -DCONCURRENT_OS_EXECUTIONS
endif
ifeq ($(LITEX),yes)
ADDCFLAGS += -CFLAGS -DLITEX
ADDCFLAGS += -CFLAGS -DVMLINUX='\"$(VMLINUX)\"'
ADDCFLAGS += -CFLAGS -DDTB='\"$(DTB)\"'
ADDCFLAGS += -CFLAGS -DRAMDISK='\"$(RAMDISK)\"'
ADDCFLAGS += -CFLAGS -DEMULATOR='\"$(EMULATOR)\"'
endif
ifeq ($(LINUX_SOC),yes)
ADDCFLAGS += -CFLAGS -DLINUX_SOC
ADDCFLAGS += -CFLAGS -DVMLINUX='\"$(VMLINUX)\"'
ADDCFLAGS += -CFLAGS -DDTB='\"$(DTB)\"'
ADDCFLAGS += -CFLAGS -DRAMDISK='\"$(RAMDISK)\"'
ADDCFLAGS += -CFLAGS -DEMULATOR='\"$(EMULATOR)\"'
endif
ifeq ($(LINUX_SOC_SMP),yes)
ADDCFLAGS += -CFLAGS -DLINUX_SOC_SMP
ADDCFLAGS += -CFLAGS -DVMLINUX='\"$(VMLINUX)\"'
ADDCFLAGS += -CFLAGS -DDTB='\"$(DTB)\"'
ADDCFLAGS += -CFLAGS -DRAMDISK='\"$(RAMDISK)\"'
ADDCFLAGS += -CFLAGS -DEMULATOR='\"$(EMULATOR)\"'
endif
ARCH_LINUX=rv32i
ifeq ($(MUL),yes)
ifeq ($(DIV),yes)
ARCH_LINUX:=$(ARCH_LINUX)m
endif
endif
ARCH_LINUX:=$(ARCH_LINUX)a
ifeq ($(COMPRESSED),yes)
ARCH_LINUX:=$(ARCH_LINUX)c
endif
ifeq ($(LINUX_REGRESSION),yes)
ifneq ($(ARCH_LINUX),rv32iac)
ifneq ($(ARCH_LINUX),rv32ia)
ADDCFLAGS += -CFLAGS -DLINUX_REGRESSION
ADDCFLAGS += -CFLAGS -DARCH_LINUX='\"$(ARCH_LINUX)\"'
ADDCFLAGS += -CFLAGS -DVMLINUX='\"../../resources/VexRiscvRegressionData/sim/linux/$(ARCH_LINUX)/Image\"'
ADDCFLAGS += -CFLAGS -DDTB='\"../../resources/VexRiscvRegressionData/sim/linux/$(ARCH_LINUX)/rv32.dtb\"'
ADDCFLAGS += -CFLAGS -DRAMDISK='\"../../resources/VexRiscvRegressionData/sim/linux/$(ARCH_LINUX)/rootfs.cpio\"'
ADDCFLAGS += -CFLAGS -DEMULATOR='\"../../resources/VexRiscvRegressionData/sim/linux/emulator/emulator.bin\"'
endif
endif
endif
ifeq ($(FLOW_INFO),yes)
ADDCFLAGS += -CFLAGS -DFLOW_INFO
endif
ifeq ($(COREMARK),yes)
ADDCFLAGS += -CFLAGS -DCOREMARK
endif
ifeq ($(WITH_RISCV_REF),yes)
ADDCFLAGS += -CFLAGS -DWITH_RISCV_REF
endif
ifneq ($(shell grep timerInterrupt ${VEXRISCV_FILE} -w),)
ADDCFLAGS += -CFLAGS -DTIMER_INTERRUPT
endif
ifneq ($(shell grep externalInterrupt ${VEXRISCV_FILE} -w),)
ifneq ($(EXTERNAL_INTERRUPT),no)
ADDCFLAGS += -CFLAGS -DEXTERNAL_INTERRUPT
endif
endif
ifneq ($(shell grep utime ${VEXRISCV_FILE} -w),)
ADDCFLAGS += -CFLAGS -DUTIME_INPUT
endif
ifneq ($(shell grep dBus_rsp_payload_aggregated ${VEXRISCV_FILE} -w),)
ADDCFLAGS += -CFLAGS -DDBUS_AGGREGATION
endif
ifneq ($(RUN_HEX),no)
ADDCFLAGS += -CFLAGS -DRUN_HEX='\"$(RUN_HEX)\"'
endif
ifeq ($(IBUS_TC),yes)
ADDCFLAGS += -CFLAGS -DIBUS_TC=yes
endif
ifeq ($(WITH_USER_IO),yes)
ADDCFLAGS += -CFLAGS -DWITH_USER_IO=yes
endif
ifeq ($(COMPRESSED),yes)
ADDCFLAGS += -CFLAGS -DCOMPRESSED
endif
ifeq ($(SUPERVISOR),yes)
ADDCFLAGS += -CFLAGS -DSUPERVISOR
endif
ifeq ($(FENCEI),yes)
ADDCFLAGS += -CFLAGS -DFENCEI
endif
ifeq ($(EBREAK),yes)
ADDCFLAGS += -CFLAGS -DEBREAK
endif
ifeq ($(DHRYSTONE),yes)
ADDCFLAGS += -CFLAGS -DDHRYSTONE
endif
ifeq ($(STOP_ON_ERROR),yes)
ADDCFLAGS += -CFLAGS -DSTOP_ON_ERROR
endif
ifeq ($(NO_STALL),yes)
ADDCFLAGS += -CFLAGS -DSTALL=0
else
ADDCFLAGS += -CFLAGS -DSTALL=1
endif
ifneq ($(MTIME_INSTR_FACTOR),no)
ADDCFLAGS += -CFLAGS -DMTIME_INSTR_FACTOR=${MTIME_INSTR_FACTOR}
endif
ifneq ($(SEED),no)
ADDCFLAGS += -CFLAGS -DSEED=${SEED}
endif
ifeq ($(TRACE),yes)
VERILATOR_ARGS += --trace-fst
ADDCFLAGS += -CFLAGS -DTRACE
endif
ifeq ($(TRACE_SPORADIC),yes)
ADDCFLAGS += -CFLAGS -DTRACE_SPORADIC
endif
ifeq ($(CSR),yes)
ADDCFLAGS += -CFLAGS -DCSR
endif
ifeq ($(CSR_SKIP_TEST),yes)
ADDCFLAGS += -CFLAGS -DCSR_SKIP_TEST
endif
ifeq ($(LRSC),yes)
ADDCFLAGS += -CFLAGS -DLRSC
endif
ifeq ($(AMO),yes)
ADDCFLAGS += -CFLAGS -DAMO
endif
ifeq ($(CUSTOM_SIMD_ADD),yes)
ADDCFLAGS += -CFLAGS -DCUSTOM_SIMD_ADD
endif
ifeq ($(CUSTOM_CSR),yes)
ADDCFLAGS += -CFLAGS -DCUSTOM_CSR
endif
ifeq ($(TRACE_WITH_TIME),yes)
ADDCFLAGS += -CFLAGS -DTRACE_WITH_TIME
endif
ifeq ($(REF_TIME),yes)
ADDCFLAGS += -CFLAGS -DREF_TIME
endif
ifeq ($(ISA_TEST),yes)
ADDCFLAGS += -CFLAGS -DISA_TEST
endif
ifeq ($(MMU),yes)
ADDCFLAGS += -CFLAGS -DMMU
endif
ifeq ($(DBUS_EXCLUSIVE),yes)
ADDCFLAGS += -CFLAGS -DDBUS_EXCLUSIVE
endif
ifeq ($(DBUS_INVALIDATE),yes)
ADDCFLAGS += -CFLAGS -DDBUS_INVALIDATE
endif
ifeq ($(PMP),yes)
ADDCFLAGS += -CFLAGS -DPMP
endif
ifeq ($(MUL),yes)
ADDCFLAGS += -CFLAGS -DMUL
endif
ifeq ($(RVF),yes)
ADDCFLAGS += -CFLAGS -DRVF
endif
ifeq ($(RVD),yes)
ADDCFLAGS += -CFLAGS -DRVD
endif
ifeq ($(DIV),yes)
ADDCFLAGS += -CFLAGS -DDIV
endif
ifeq ($(TRACE_ACCESS),yes)
ADDCFLAGS += -CFLAGS -DTRACE_ACCESS
endif
ifneq ($(DEBUG_PLUGIN),no)
ADDCFLAGS += -CFLAGS -DDEBUG_PLUGIN
ADDCFLAGS += -CFLAGS -DDEBUG_PLUGIN_${DEBUG_PLUGIN}
endif
ifeq ($(DEBUG_PLUGIN_EXTERNAL),yes)
ADDCFLAGS += -CFLAGS -DDEBUG_PLUGIN_EXTERNAL
endif
ifeq ($(REF),yes)
ADDCFLAGS += -CFLAGS -DREF
endif
ADDCFLAGS += -CFLAGS -DTRACE_START=${TRACE_START}
ifeq ($(FREERTOS),yes)
ADDCFLAGS += -CFLAGS -DFREERTOS
ADDCFLAGS += -CFLAGS -DFREERTOS_COUNT=99999
else
ifneq ($(FREERTOS),no)
ADDCFLAGS += -CFLAGS -DFREERTOS
ADDCFLAGS += -CFLAGS -DFREERTOS_COUNT=$(FREERTOS)
endif
endif
ifeq ($(ZEPHYR),yes)
ADDCFLAGS += -CFLAGS -DZEPHYR
ADDCFLAGS += -CFLAGS -DZEPHYR_COUNT=99999
else
ifneq ($(ZEPHYR),no)
ADDCFLAGS += -CFLAGS -DZEPHYR
ADDCFLAGS += -CFLAGS -DZEPHYR_COUNT=$(ZEPHYR)
endif
endif
all: clean run
run: compile
./obj_dir/VVexRiscv
verilate: ${VEXRISCV_FILE}
cp ${VEXRISCV_FILE}*.bin . | true
verilator -cc ${VEXRISCV_FILE} -O3 -CFLAGS -std=c++11 -LDFLAGS -pthread ${ADDCFLAGS} --gdbbt ${VERILATOR_ARGS} -Wno-UNOPTFLAT -Wno-WIDTH --x-assign unique --exe main.cpp
compile: verilate
make -j${THREAD_COUNT} -C obj_dir/ -f VVexRiscv.mk VVexRiscv
clean:
rm -rf obj_dir