SRC_ALL=$(wildcard src/**/*.sv src/*.sv) SRC_MODULE=$(filter-out %_top.sv,$(filter-out %_tb.sv,$(SRC_ALL))) DEF_MODULE=$(wildcard src/*.svh) FIRMWARE_SRC=firmware/src/entry.S \ firmware/src/main.rs \ firmware/link.ld \ firmware/Cargo.toml MAIN_TOP=src/rvx0_soc_top.sv all: obj_dir/rvx0 obj_dir/apb0_memory.hex: obj_dir/firmware.bin tool/makebin.py ./tool/makebin.py obj_dir/firmware.bin $@ obj_dir/firmware.bin: firmware/target/riscv32i-unknown-none-elf/release/firmware mkdir -p obj_dir llvm-objcopy -O binary $< $@ firmware/target/riscv32i-unknown-none-elf/release/firmware: $(FIRMWARE_SRC) cd firmware && cargo build --release obj_dir/rvx0: $(SRC_MODULE) $(DEF_MODULE) $(MAIN_TOP) obj_dir/apb0_memory.hex mkdir -p obj_dir verilator -Wno-fatal --assert --binary -Isrc -o rvx0 $(MAIN_TOP) $(SRC_MODULE) # # obj_dir/firmware.elf: $(FIRMWARE_OBJ) src/firmware.ld # # obj_dir/apb0_memory.hex: src/apb0_memory.S tool/makebin.py # mkdir -p obj_dir # riscv64-elf-gcc -c -o obj_dir/apb0_memory.o src/apb0_memory.S # llvm-objcopy -O binary obj_dir/apb0_memory.o obj_dir/apb0_memory.bin # ./tool/makebin.py obj_dir/apb0_memory.bin $@