2017-07-29 22:01:39 +08:00
|
|
|
|
2017-08-07 21:13:27 +08:00
|
|
|
# ---- Generic Testbenches ----
|
|
|
|
|
2017-08-05 23:08:16 +08:00
|
|
|
testbench: testbench.vvp firmware.hex
|
2017-07-29 22:01:39 +08:00
|
|
|
vvp -N $<
|
|
|
|
|
2017-08-07 19:38:07 +08:00
|
|
|
testbench.vvp: spiflash.v spimemio.v testbench.v picosoc.v ../picorv32.v
|
2017-08-05 23:08:16 +08:00
|
|
|
iverilog -s testbench -o $@ $^
|
|
|
|
|
|
|
|
spiflash_tb: spiflash_tb.vvp firmware.hex
|
|
|
|
vvp -N $<
|
|
|
|
|
|
|
|
spiflash_tb.vvp: spiflash.v spiflash_tb.v
|
|
|
|
iverilog -s testbench -o $@ $^
|
|
|
|
|
2017-08-07 21:13:27 +08:00
|
|
|
# ---- iCE40 HX8K Breakout Board ----
|
|
|
|
|
|
|
|
hx8kprog: hx8kdemo.bin firmware.bin
|
|
|
|
iceprog hx8kdemo.bin
|
2017-07-29 22:01:39 +08:00
|
|
|
iceprog -o 1M firmware.bin
|
|
|
|
|
2017-08-08 04:36:58 +08:00
|
|
|
hx8ksim: hx8kdemo_tb.vvp firmware.hex
|
|
|
|
vvp -N $<
|
|
|
|
|
|
|
|
hx8ksynsim: hx8kdemo_syn_tb.vvp firmware.hex
|
|
|
|
vvp -N $<
|
|
|
|
|
2017-08-07 21:13:27 +08:00
|
|
|
hx8kdemo.blif: hx8kdemo.v spimemio.v picosoc.v ../picorv32.v
|
|
|
|
yosys -ql hx8kdemo.log -p 'synth_ice40 -top hx8kdemo -blif hx8kdemo.blif' $^
|
|
|
|
|
2017-08-08 04:36:58 +08:00
|
|
|
hx8kdemo_tb.vvp: hx8kdemo_tb.v hx8kdemo.v spimemio.v picosoc.v ../picorv32.v spiflash.v
|
|
|
|
iverilog -s testbench -o $@ $^ `yosys-config --datdir/ice40/cells_sim.v`
|
|
|
|
|
|
|
|
hx8kdemo_syn_tb.vvp: hx8kdemo_tb.v hx8kdemo_syn.v spiflash.v
|
|
|
|
iverilog -s testbench -o $@ $^ `yosys-config --datdir/ice40/cells_sim.v`
|
|
|
|
|
|
|
|
hx8kdemo_syn.v: hx8kdemo.blif
|
|
|
|
yosys -p 'read_blif -wideports hx8kdemo.blif; write_verilog hx8kdemo_syn.v'
|
|
|
|
|
2017-08-07 21:13:27 +08:00
|
|
|
hx8kdemo.asc: hx8kdemo.pcf hx8kdemo.blif
|
|
|
|
arachne-pnr -d 8k -o hx8kdemo.asc -p hx8kdemo.pcf hx8kdemo.blif
|
|
|
|
|
|
|
|
hx8kdemo.bin: hx8kdemo.asc
|
|
|
|
icetime -d hx8k -c 12 -mtr hx8kdemo.rpt hx8kdemo.asc
|
|
|
|
icepack hx8kdemo.asc hx8kdemo.bin
|
|
|
|
|
|
|
|
# ---- Example Firmware ----
|
|
|
|
|
2017-08-11 22:15:07 +08:00
|
|
|
firmware.elf: sections.lds firmware.S
|
|
|
|
riscv32-unknown-elf-gcc -Wl,-Bstatic,-T,sections.lds,--strip-debug -ffreestanding -nostdlib -o firmware.elf firmware.S
|
2017-07-29 22:01:39 +08:00
|
|
|
|
2017-08-11 22:15:07 +08:00
|
|
|
firmware_up.elf: firmware.elf
|
|
|
|
riscv32-unknown-elf-objcopy --change-addresses 0x100000 firmware.elf firmware_up.elf
|
2017-07-29 22:01:39 +08:00
|
|
|
|
2017-08-11 22:15:07 +08:00
|
|
|
firmware.hex: firmware_up.elf
|
|
|
|
riscv32-unknown-elf-objcopy -O verilog firmware_up.elf firmware.hex
|
2017-07-29 22:01:39 +08:00
|
|
|
|
|
|
|
firmware.bin: firmware.elf
|
|
|
|
riscv32-unknown-elf-objcopy -O binary firmware.elf firmware.bin
|
|
|
|
|
2017-08-07 21:13:27 +08:00
|
|
|
# ---- Clean ----
|
2017-07-29 22:01:39 +08:00
|
|
|
|
|
|
|
clean:
|
2017-08-05 23:08:16 +08:00
|
|
|
rm -f testbench.vvp testbench.vcd spiflash_tb.vvp spiflash_tb.vcd
|
2017-08-11 22:15:07 +08:00
|
|
|
rm -f firmware.elf firmware_up.elf firmware.hex firmware.bin
|
2017-08-07 21:13:27 +08:00
|
|
|
rm -f hx8kdemo.blif hx8kdemo.log hx8kdemo.asc hx8kdemo.rpt hx8kdemo.bin
|
2017-08-08 04:36:58 +08:00
|
|
|
rm -f hx8kdemo_syn.v hx8kdemo_syn_tb.vvp hx8kdemo_tb.vvp
|
2017-07-29 22:01:39 +08:00
|
|
|
|
2017-08-08 04:36:58 +08:00
|
|
|
.PHONY: testbench spiflash_tb hx8kprog hx8ksim hx8ksynsim clean
|
2017-07-29 22:01:39 +08:00
|
|
|
|