75 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| ifndef NEORV32_ROOT
 | |
|     $(error NEORV32_ROOT is undefined)
 | |
| endif
 | |
| 
 | |
| NEORV32_LOCAL_RTL ?= $(NEORV32_ROOT)/sim/work
 | |
| 
 | |
| TARGET_SIM   ?= ghdl
 | |
| TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
 | |
| 
 | |
| ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
 | |
|     $(error Target simulator executable '$(TARGET_SIM)` not found)
 | |
| endif
 | |
| 
 | |
| NEORV32_MARCH ?= rv32i
 | |
| NEORV32_MABI ?= ilp32
 | |
| 
 | |
| RISCV_PREFIX   ?= riscv32-unknown-elf-
 | |
| RISCV_GCC      ?= $(RISCV_PREFIX)gcc
 | |
| RISCV_OBJDUMP  ?= $(RISCV_PREFIX)objdump
 | |
| RISCV_OBJCOPY  ?= $(RISCV_PREFIX)objcopy
 | |
| RISCV_READELF  ?= $(RISCV_PREFIX)readelf
 | |
| RISCV_GCC_OPTS ?= -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles -march=$(NEORV32_MARCH) -mabi=$(NEORV32_MABI)
 | |
| 
 | |
| NEORV32_LINK ?= link.imem_rom.ld
 | |
| 
 | |
| COMPILE_TARGET ?= \
 | |
| 	$$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
 | |
| 	$$(RISCV_TARGET_FLAGS) \
 | |
| 	-I$(ROOTDIR)/riscv-test-suite/env/ \
 | |
| 	-I$(TARGETDIR)/$(RISCV_TARGET)/ \
 | |
| 	-T$(TARGETDIR)/$(RISCV_TARGET)/$(NEORV32_LINK) \
 | |
| 	$$(<) -o $$@
 | |
| 
 | |
| NEORV32_CPU_EXTENSION_RISCV_C ?= false
 | |
| NEORV32_CPU_EXTENSION_RISCV_E ?= false
 | |
| NEORV32_CPU_EXTENSION_RISCV_M ?= false
 | |
| NEORV32_CPU_EXTENSION_RISCV_ZIFENCEI ?= false
 | |
| NEORV32_MEM_INT_IMEM_SIZE ?= '2097152'
 | |
| 
 | |
| NEORV32_SOFTWARE_EXAMPLE ?= $(NEORV32_ROOT)/sw/example/blink_led
 | |
| 
 | |
| ifeq ($(NEORV32_CPU_EXTENSION_RISCV_ZIFENCEI), true)
 | |
| RUN_TARGET ?= \
 | |
| 	echo "copying/using SIM-only IMEM (pre-initialized RAM!)"; \
 | |
| 	rm -f $(NEORV32_LOCAL_RTL)/core/mem/neorv32_imem.default.vhd; \
 | |
| 	cp -f $(NEORV32_ROOT)/sim/simple/neorv32_imem.iram.simple.vhd $(NEORV32_LOCAL_RTL)/core/mem/neorv32_imem.default.vhd;
 | |
| else
 | |
| RUN_TARGET ?= \
 | |
| 	echo "copying/using SIM-only IMEM (pre-initialized ROM!)"; \
 | |
| 	rm -f $(NEORV32_LOCAL_RTL)/core/mem/neorv32_imem.default.vhd; \
 | |
| 	cp -f $(NEORV32_ROOT)/sim/simple/neorv32_imem.simple.vhd $(NEORV32_LOCAL_RTL)/core/mem/neorv32_imem.default.vhd;
 | |
| endif
 | |
| 
 | |
| RUN_TARGET += \
 | |
| 	cd $(work_dir_isa); \
 | |
| 	echo ">"; \
 | |
| 	rm -f $(NEORV32_ROOT)/sim/*.out; \
 | |
| 	make -C $(NEORV32_SOFTWARE_EXAMPLE) main.elf; \
 | |
| 	cp -f $< $(NEORV32_SOFTWARE_EXAMPLE)/main.elf; \
 | |
| 	make -C $(NEORV32_SOFTWARE_EXAMPLE) main.bin install; \
 | |
| 	touch $(NEORV32_ROOT)/sim/simple/neorv32.uart0.sim_mode.data.out; \
 | |
| 	GHDL_DEVNULL=true $(shell which time) -v $(NEORV32_ROOT)/sim/simple/ghdl.run.sh \
 | |
| 	  --stop-time=$(SIM_TIME) \
 | |
| 	  -gCPU_EXTENSION_RISCV_A=false \
 | |
| 	  -gCPU_EXTENSION_RISCV_C=$(NEORV32_CPU_EXTENSION_RISCV_C) \
 | |
| 	  -gCPU_EXTENSION_RISCV_E=$(NEORV32_CPU_EXTENSION_RISCV_E) \
 | |
| 	  -gCPU_EXTENSION_RISCV_M=$(NEORV32_CPU_EXTENSION_RISCV_M) \
 | |
| 	  -gCPU_EXTENSION_RISCV_U=false \
 | |
| 	  -gCPU_EXTENSION_RISCV_Zicsr=true \
 | |
| 	  -gCPU_EXTENSION_RISCV_Zifencei=true \
 | |
| 	  -gEXT_IMEM_C=false \
 | |
| 	  -gMEM_INT_IMEM_SIZE=$(NEORV32_MEM_INT_IMEM_SIZE); \
 | |
| 	cp $(NEORV32_ROOT)/sim/simple/neorv32.uart0.sim_mode.data.out $(*).signature.output; \
 | |
| 	echo "<";
 |