aboutsummaryrefslogtreecommitdiff
path: root/pnr/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'pnr/makefile')
-rw-r--r--pnr/makefile81
1 files changed, 81 insertions, 0 deletions
diff --git a/pnr/makefile b/pnr/makefile
new file mode 100644
index 0000000..7d2752a
--- /dev/null
+++ b/pnr/makefile
@@ -0,0 +1,81 @@
+# Makefile for Quartus Synthesis
+# Be quiet
+#.SILENT:
+
+LOG_FILE = quartus.log
+FAMILY = "Cyclone II"
+DEVICE = EP2C20F484C7
+PROGFILEEXT = sof
+
+ECHO_TARGET := echo "$$@" >> $(LOG_FILE) 2>&1
+TIME_STAMP := echo "$$@ $$(date --iso=seconds)" >> $(LOG_FILE) 2>&1
+
+help:
+ @echo '"make" does intentionally nothing. Type:'
+ @echo ' "make qproject" to create quartus project only'
+ @echo ' "make compile" to synthesize the design'
+ @echo ' "make prog" to configure programmable device'
+ @echo ' "make warnings to list all warnings'
+ @echo ' "make quartus" to start quartus graphical user interface'
+ @echo ' "make clean" to remove all generated files'
+
+qproject: $(PROJECT).qpf
+
+$(PROJECT).qpf: $(SOURCE_FILES)
+ @echo "Processing ..."
+ @echo "---- $@" >> $(LOG_FILE) 2>&1
+ @$(TIME_STAMP)
+ @# assign VHDL design files
+ @rm -rf quartus_vhdl_source_files.tcl
+ @(for source_file in $(SOURCE_FILES); \
+ do \
+ echo set_global_assignment -name VHDL_FILE $$source_file >> quartus_vhdl_source_files.tcl; \
+ done)
+ @# create a default timing constraint file assuming CLOCK_50
+ @echo "create_clock -period 20.000 -name CLOCK_50 CLOCK_50" > $(PROJECT).sdc
+ @# just create a quartus project
+ @quartus_sh -t ../../scripts/create_quartus_project_settings.tcl \
+ -projectname $(PROJECT) -family $(FAMILY) -device $(DEVICE) >> $(LOG_FILE) 2>&1
+
+compile: $(PROJECT).qpf flowsummary.log
+ @echo "---- $@" >> $(LOG_FILE) 2>&1
+ @$(TIME_STAMP)
+
+flowsummary.log: $(SOURCE_FILES)
+ @echo "---- $@" >> $(LOG_FILE) 2>&1
+ @$(TIME_STAMP)
+ @(quartus_sh -t ../../scripts/quartus_project_flow.tcl \
+ -projectname $(PROJECT) -process compile >> $(LOG_FILE) 2>&1 \
+ || (grep "Error (" $(LOG_FILE) && false))
+ @grep "warnings" $(LOG_FILE)
+ @echo
+ @echo "To display all warnings use: make warnings"
+ @echo
+
+prog: $(PROJECT).qpf flowsummary.log
+ @echo "---- $@" >> $(LOG_FILE) 2>&1
+ @$(TIME_STAMP)
+ @quartus_pgm -c USB-Blaster --mode jtag --operation="p;$(PROJECT).$(PROGFILEEXT)" \
+ >> $(LOG_FILE) 2>&1
+
+quartus: $(PROJECT).qpf
+ @echo "---- $@" >> $(LOG_FILE) 2>&1
+ @$(TIME_STAMP)
+ @quartus $(PROJECT).qpf &
+
+warnings: $(LOG_FILE)
+ @echo "---- $@" >> $(LOG_FILE) 2>&1
+ @$(TIME_STAMP)
+ @grep "Warning (" $(LOG_FILE)
+
+rtlview: $(PROJECT).qpf
+ @echo "---- $@" >> $(LOG_FILE) 2>&1
+ @$(TIME_STAMP)
+ @#(quartus_sh -t ../../scripts/quartus_project_flow.tcl -projectname \
+ $(PROJECT) -process compile >> $(LOG_FILE) 2>&1 || (grep "Error (" $(LOG_FILE) && false))
+ @quartus_map --read_settings_files=on --write_settings_files=off \
+ $(PROJECT) -c $(PROJECT) --analysis_and_elaboration >> $(LOG_FILE) 2>&1
+ @quartus $(PROJECT).qpf &
+
+clean:
+ @rm -rf *.rpt *.chg *.log quartus_vhdl_source_files.tcl *.htm *.eqn *.pin *.sof *.pof db incremental_db *.qpf *.qsf *.summary $(PROJECT).* *.sdc