# # picorv32 / sbst config # SBST_SRCS := $(wildcard sbst_programs/*.c) # # jpeg_core config # JPEG_CORE_VVP := jpeg_core_tb.vvp JPEG_CORE_INFILE ?= test.jpg JPEG_CORE_OUTFILE ?= output.ppm JPEG_CORE_VVP_FLAGS ?= JPEG_CORE_DIR := core_jpeg/src_v JPEG_CORE_SRCS := $(wildcard $(JPEG_CORE_DIR)/*.v) JPEG_CORE_TB := jpeg_core_tb.v # # General targets # .PHONY: all jpeg_rtl_sim clean all: $(JPEG_CORE_VVP) clean: rm -f $(JPEG_CORE_VVP) $(JPEG_CORE_OUTFILE) *.vcd $(SBST_SRCS:.c=.bin) $(SBST_SRCS:.c=.hex) # # jpeg_core targets # $(JPEG_CORE_VVP): $(JPEG_CORE_TB) $(JPEG_CORE_SRCS) iverilog -g2005 -Wall -o $@ $^ # Run RTL simulation jpeg_rtl_sim: $(JPEG_CORE_VVP) vvp $< $(JPEG_CORE_VVP_FLAGS) +infile=$(JPEG_CORE_INFILE) +outfile=$(JPEG_CORE_OUTFILE) # # picorv32 targets # test_vcd: make -C picorv32 test_vcd test_ez_vcd: make -C picorv32 test_ez_vcd testbench.npy: ./picorv32_vcd_import.py picorv32/testbench.vcd testbench.npy sbst_programs: $(SBST_SRCS:.c=.bin) $(SBST_SRCS:.c=.hex) sbst_programs/%.elf: sbst_programs/%.c sbst_programs/start.S riscv64-unknown-elf-gcc -march=rv32ima_zicsr -mabi=ilp32 -ffreestanding -O0 -nostdlib -o $@ $^ -T picorv32/firmware/riscv.ld sbst_programs/%.bin: sbst_programs/%.elf riscv64-unknown-elf-objcopy -O binary $^ $@ sbst_programs/%.hex: sbst_programs/%.bin python3 -c "import os; d=open('$^','rb').read(); [print('{:02x}{:02x}{:02x}{:02x}'.format(d[i+3],d[i+2],d[i+1],d[i])) for i in range(0,len(d),4)]" > $@