blob: df45f15f8d5508e75dcdd9653b2322178c3a22b5 [file] [log] [blame]
.SUFFIXES:
PATTERN = softshell_top
FIRMWARE_PATH = .
GCC_PATH ?= /opt/riscv32ic/bin
GCC_PREFIX ?= riscv32-unknown-elf
SIM_FLAGS ?= -DSIM -DFUNCTIONAL -DUSE_POWER_PINS
ifdef GL
SIM_FLAGS += -DGL
endif
all: ${PATTERN:=.fst}
%.vvp: %_tb.v firmware.hex
iverilog -I $(PDK_ROOT)/sky130A -I ../rtl -I .. \
$(SIM_FLAGS) \
$< -o $@
%.fst: %.vvp
vvp $< -fst
%.elf: %.c $(FIRMWARE_PATH)/sections_cpu0.lds $(FIRMWARE_PATH)/start.s
${GCC_PATH}/${GCC_PREFIX}-gcc -march=rv32ic -mabi=ilp32 \
-Wl,-Bstatic,-T,$(FIRMWARE_PATH)/sections_cpu0.lds,--strip-debug \
-ffreestanding -nostdlib -o $@ $(FIRMWARE_PATH)/start.s $<
%.hex: %.elf
${GCC_PATH}/${GCC_PREFIX}-objcopy -O verilog $< $@
sed -i 's/@304/@000/g' $@
firmware.hex: $(PATTERN).hex
ln -s $< firmware.hex
clean:
rm -f *.vvp *.vcd *.fst *.log *.hex *.bin *.elf
.PHONY: clean all