aboutsummaryrefslogtreecommitdiff
path: root/fpga/Makefile
diff options
context:
space:
mode:
authorNathan Ringo <nathan@remexre.com>2024-09-23 21:46:34 -0500
committerNathan Ringo <nathan@remexre.com>2024-09-23 21:46:34 -0500
commitfc1959bd9887ecc4d4ceb62a53e87abc6f49ef00 (patch)
tree801fad484692ca226eb2dfdf792338cabe218c72 /fpga/Makefile
parent777da6874bdbda1c83108024eb37dc901e04838e (diff)
Adds README, moves fpga stuff to a subdirectory.
Diffstat (limited to 'fpga/Makefile')
-rw-r--r--fpga/Makefile41
1 files changed, 41 insertions, 0 deletions
diff --git a/fpga/Makefile b/fpga/Makefile
new file mode 100644
index 0000000..c9326a7
--- /dev/null
+++ b/fpga/Makefile
@@ -0,0 +1,41 @@
+BSC_COMP_FLAGS = -bdir tmp -p src:+ -simdir tmp -vdir tmp
+BSC_LINK_FLAGS = -bdir tmp -simdir tmp -vdir tmp
+BSC_SOURCES = BRAM2.v FIFO1.v FIFO10.v RevertReg.v SizedFIFO.v
+TOPFILE = Top
+TOPMODULE = mkTop
+SRCS = $(shell find src -name '*.bs')
+
+all: tmp/$(TOPMODULE).bin
+flash: tmp/$(TOPMODULE).bin
+ sudo iceprog $<
+gtkwave: tmp/sim.vcd
+ gtkwave -A $<
+.PHONY: all flash gtkwave
+
+tmp/sim.vcd: tmp/$(TOPMODULE)Sim.exe
+ tmp/$(TOPMODULE)Sim.exe -V $@
+tmp/%.bin: tmp/%.asc
+ # https://github.com/YosysHQ/icestorm/issues/114
+ # icetime -d up5k -c 12 $<
+ icepack $< $@
+tmp/%.asc tmp/%-report.json: tmp/%.json src/icebreaker.pcf
+ nextpnr-ice40 -ql tmp/$*.nplog --up5k --package sg48 --freq 12 \
+ --asc $@ --report tmp/$*-report.json \
+ --pcf src/icebreaker.pcf --json $<
+tmp/$(TOPMODULE).json: tmp/$(TOPMODULE).v $(addprefix $(BSC)/lib/Verilog/,$(BSC_SOURCES))
+ yosys -ql tmp/$(TOPMODULE).yslog -p 'synth_ice40 -top mkTop -json $@' $^
+tmp/$(TOPMODULE)Sim.exe: tmp/$(TOPFILE).bo
+ bsc -u -sim -g $(TOPMODULE)Sim $(BSC_COMP_FLAGS) src/$(TOPFILE)Sim.bs
+ bsc -sim -e $(TOPMODULE)Sim $(BSC_LINK_FLAGS) -o $@
+tmp/$(TOPMODULE).v: tmp/$(TOPFILE).bo
+ bsc -g $(TOPMODULE) -verilog $(BSC_COMP_FLAGS) src/$(TOPFILE).bs
+tmp/%.bo:
+ @mkdir -p $(dir $@)
+ bsc -verilog $(BSC_COMP_FLAGS) $<
+# Hack around not having precise dependency information for Bluespec files.
+.PHONY: tmp/$(TOPFILE).bo
+
+tmp/depends.mk:
+ @mkdir -p $(dir $@)
+ bluetcl -exec makedepend $(BSC_COMP_FLAGS) src/$(TOPFILE).bs > $@
+include tmp/depends.mk