65 lines
1.5 KiB
Makefile
65 lines
1.5 KiB
Makefile
|
|
#
|
|
# 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)]" > $@
|