Makefile 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. QUARTUS_DIR = /opt/altera/18.1/quartus
  2. MODELSIM_DIR = /opt/altera/18.1/modelsim_ase
  3. PROJECT_NAME = UCL_project_y3
  4. MODELSIM_GUI = ${QUARTUS_DIR}/bin/quartus_sh -t "${QUARTUS_DIR}/common/tcl/internal/nativelink/qnativesim.tcl" --rtl_sim "${PROJECT_NAME}" "${PROJECT_NAME}"
  5. MODELSIM_BIN = ${MODELSIM_DIR}/bin/vsim
  6. # OUTPUT FILES
  7. OUTPUTP = output_files/$(PROJECT_NAME)
  8. OUT_ASM = $(OUTPUTP).sof
  9. # Program & Monitor
  10. JTAG ?= 1
  11. TTY ?= /dev/ttyUSB0
  12. BAUD ?= 9600
  13. GENTABLE_BIN = python3 tools/gen_sv.py
  14. ASMC = python3 tools/asm_compiler.py
  15. MEMDEP := $(shell find memory -name '*.asm')
  16. MEMRES = $(MEMDEP:.asm=.mem)
  17. VERILOG ?= $(wildcard src/*/*.sv)
  18. # Genreate sv case table from csv
  19. CSVS = src/risc/controller.csv
  20. define execute-gentable
  21. $(GENTABLE_BIN) $(1) $(1:.csv=.sv)
  22. endef
  23. analysis: compile_mem
  24. ${QUARTUS_DIR}/bin/quartus_map --read_settings_files=on --write_settings_files=off ${PROJECT_NAME} -c ${PROJECT_NAME} --analysis_and_elaboration
  25. $(OUT_ASM): $(MEMDEP)
  26. ${QUARTUS_DIR}/bin/quartus_map --read_settings_files=on --write_settings_files=off ${PROJECT_NAME} -c ${PROJECT_NAME}
  27. ${QUARTUS_DIR}/bin/quartus_fit --read_settings_files=off --write_settings_files=off ${PROJECT_NAME} -c ${PROJECT_NAME}
  28. ${QUARTUS_DIR}/bin/quartus_asm --read_settings_files=off --write_settings_files=off ${PROJECT_NAME} -c ${PROJECT_NAME}
  29. $(OUT_STA): $(OUT_ASM)
  30. ${QUARTUS_DIR}/bin/quartus_sta ${PROJECT_NAME} -c ${PROJECT_NAME}
  31. eda: $(OUT_STA)
  32. ${QUARTUS_DIR}/bin/quartus_eda --read_settings_files=off --write_settings_files=off ${PROJECT_NAME} -c ${PROJECT_NAME}
  33. program: $(OUT_ASM)
  34. ${QUARTUS_DIR}/bin/quartus_pgm -z -c $(JTAG) -m jtag -o "p;$(OUT_ASM)@1"
  35. listdev:
  36. ${QUARTUS_DIR}/bin/quartus_pgm -l
  37. monitor:
  38. hash cu && echo "Escape with ~." && cu -l $(TTY) -s $(BAUD)
  39. #hash minicom && minicom -D $(TTY) -b $(BAUD)
  40. modelsim_cli:
  41. ${MODELSIM_BIN} -c
  42. modelsim_gui:
  43. ${MODELSIM_GUI}
  44. compile_all:
  45. ${MODELSIM_BIN} -c -do simulation/modelsim/${PROJECT_NAME}_run_msim_rtl_verilog.do -do exit
  46. %.sv: %.csv $(CSVS)
  47. $(GENTABLE_BIN) $< $(@:.csv=.sv)
  48. gentable:
  49. $(foreach x,$(CSVS),$(call execute-gentable,./$(x)))
  50. compile: $(VERILOG)
  51. @echo ${MODELSIM_BIN} -c -do "vlog -sv -work work +incdir+$(abspath $(dir $<)) $(abspath $<)" -do exit
  52. .PHONY: compile
  53. testbench: compile
  54. ${MODELSIM_BIN} -c -do "vsim work.$(basename $(notdir $(VERILOG)))_tb" -do "run -all" -do exit
  55. compile_mem: $(MEMRES)
  56. %.mem: %.asm
  57. $(ASMC) -t mem -o $@ -f $<
  58. clean:
  59. rm -f $(MEMRES)
  60. rm -f $(OUT_ASM)
  61. #.PHONY: clean