diff --git a/hw/syn/quartus/.gitignore b/hw/syn/quartus/.gitignore index 0c2cba5a..7a0867fe 100644 --- a/hw/syn/quartus/.gitignore +++ b/hw/syn/quartus/.gitignore @@ -1,6 +1,9 @@ /unittest/* !/unittest/Makefile +/smem/* +!/smem/Makefile + /cache/* !/cache/Makefile diff --git a/hw/syn/quartus/Makefile b/hw/syn/quartus/Makefile index fa002563..9cf2a79b 100644 --- a/hw/syn/quartus/Makefile +++ b/hw/syn/quartus/Makefile @@ -1,20 +1,25 @@ BUILDIR ?= build -.PHONY: unittest pipeline cache core vortex top1 top2 top4 top8 top16 top32 top64 +.PHONY: unittest pipeline smem cache core vortex top1 top2 top4 top8 top16 top32 top64 unittest: mkdir -p unittest/$(BUILDIR) - cp core/Makefile unittest/$(BUILDIR) + cp unittest/Makefile unittest/$(BUILDIR) $(MAKE) -C unittest/$(BUILDIR) clean && $(MAKE) -C unittest/$(BUILDIR) > unittest//$(BUILDIR)build.log 2>&1 & pipeline: mkdir -p pipeline/$(BUILDIR) - cp core/Makefile pipeline/$(BUILDIR) + cp pipeline/Makefile pipeline/$(BUILDIR) $(MAKE) -C pipeline/$(BUILDIR) clean && $(MAKE) -C pipeline/$(BUILDIR) > pipeline/$(BUILDIR)/build.log 2>&1 & +smem: + mkdir -p smem/$(BUILDIR) + cp smem/Makefile smem/$(BUILDIR) + $(MAKE) -C smem/$(BUILDIR) clean && $(MAKE) -C smem/$(BUILDIR) > smem/$(BUILDIR)/build.log 2>&1 & + cache: mkdir -p cache/$(BUILDIR) - cp core/Makefile cache/$(BUILDIR) + cp cache/Makefile cache/$(BUILDIR) $(MAKE) -C cache/$(BUILDIR) clean && $(MAKE) -C cache/$(BUILDIR) > cache/$(BUILDIR)/build.log 2>&1 & core: @@ -24,40 +29,40 @@ core: vortex: mkdir -p vortex/$(BUILDIR) - cp core/Makefile vortex/$(BUILDIR) + cp vortex/Makefile vortex/$(BUILDIR) $(MAKE) -C vortex/$(BUILDIR) clean && $(MAKE) -C vortex/$(BUILDIR) > vortex/$(BUILDIR)/build.log 2>&1 & top1: mkdir -p top1/$(BUILDIR) - cp core/Makefile top1/$(BUILDIR) + cp top1/Makefile top1/$(BUILDIR) $(MAKE) -C top1/$(BUILDIR) clean && $(MAKE) -C top1/$(BUILDIR) > top1/$(BUILDIR)/build.log 2>&1 & top2: mkdir -p top2/$(BUILDIR) - cp core/Makefile top2/$(BUILDIR) + cp top2/Makefile top2/$(BUILDIR) $(MAKE) -C top2/$(BUILDIR) clean && $(MAKE) -C top2/$(BUILDIR) > top2/$(BUILDIR)/build.log 2>&1 & top4: mkdir -p top4/$(BUILDIR) - cp core/Makefile top4/$(BUILDIR) + cp top4/Makefile top4/$(BUILDIR) $(MAKE) -C top4/$(BUILDIR) clean && $(MAKE) -C top4/$(BUILDIR) > top4/$(BUILDIR)/build.log 2>&1 & top8: mkdir -p top8/$(BUILDIR) - cp core/Makefile top8/$(BUILDIR) + cp top8/Makefile top8/$(BUILDIR) $(MAKE) -C top8/$(BUILDIR) clean && $(MAKE) -C top8/$(BUILDIR) > top8/$(BUILDIR)/build.log 2>&1 & top16: mkdir -p top16/$(BUILDIR) - cp core/Makefile top16/$(BUILDIR) + cp top16/Makefile top16/$(BUILDIR) $(MAKE) -C top16/$(BUILDIR) clean && $(MAKE) -C top16/$(BUILDIR) > top16/$(BUILDIR)build.log 2>&1 & top32: mkdir -p top32/$(BUILDIR) - cp core/Makefile top32/$(BUILDIR) + cp top32/Makefile top32/$(BUILDIR) $(MAKE) -C top32/$(BUILDIR) clean && $(MAKE) -C top32/$(BUILDIR) > top32/$(BUILDIR)/build.log 2>&1 & top64: mkdir -p top64/$(BUILDIR) - cp core/Makefile top64/$(BUILDIR) + cp top64/Makefile top64/$(BUILDIR) $(MAKE) -C top64/$(BUILDIR) clean && $(MAKE) -C top64/$(BUILDIR) > top64/$(BUILDIR)/build.log 2>&1 & \ No newline at end of file diff --git a/hw/syn/quartus/smem/Makefile b/hw/syn/quartus/smem/Makefile new file mode 100755 index 00000000..3b0c0872 --- /dev/null +++ b/hw/syn/quartus/smem/Makefile @@ -0,0 +1,72 @@ +PROJECT = VX_shared_mem +TOP_LEVEL_ENTITY = VX_shared_mem +SRC_FILE = VX_shared_mem.v +RTL_DIR = ../../../../rtl + +FAMILY = "Arria 10" +DEVICE = 10AX115N3F40E2SG + +RTL_INCLUDE = $(RTL_DIR);$(RTL_DIR)/libs;$(RTL_DIR)/interfaces;$(RTL_DIR)/cache +PROJECT_FILES = $(PROJECT).qpf $(PROJECT).qsf + +# Executable Configuration +SYN_ARGS = --parallel --read_settings_files=on +FIT_ARGS = --parallel --part=$(DEVICE) --read_settings_files=on +ASM_ARGS = +STA_ARGS = --parallel --do_report_timing + +# Build targets +all: $(PROJECT).sta.rpt + +syn: $(PROJECT).syn.rpt + +fit: $(PROJECT).fit.rpt + +asm: $(PROJECT).asm.rpt + +sta: $(PROJECT).sta.rpt + +smart: smart.log + +# Target implementations +STAMP = echo done > + +$(PROJECT).syn.rpt: smart.log syn.chg $(SOURCE_FILES) + quartus_syn $(PROJECT) $(SYN_ARGS) + $(STAMP) fit.chg + +$(PROJECT).fit.rpt: smart.log fit.chg $(PROJECT).syn.rpt + quartus_fit $(PROJECT) $(FIT_ARGS) + $(STAMP) asm.chg + $(STAMP) sta.chg + +$(PROJECT).asm.rpt: smart.log asm.chg $(PROJECT).fit.rpt + quartus_asm $(PROJECT) $(ASM_ARGS) + +$(PROJECT).sta.rpt: smart.log sta.chg $(PROJECT).fit.rpt + quartus_sta $(PROJECT) $(STA_ARGS) + +smart.log: $(PROJECT_FILES) + quartus_sh --determine_smart_action $(PROJECT) > smart.log + +# Project initialization +$(PROJECT_FILES): + quartus_sh -t ../../project.tcl -project $(PROJECT) -family $(FAMILY) -device $(DEVICE) -top $(TOP_LEVEL_ENTITY) -src $(SRC_FILE) -sdc ../../project.sdc -inc "$(RTL_INCLUDE)" + +syn.chg: + $(STAMP) syn.chg + +fit.chg: + $(STAMP) fit.chg + +sta.chg: + $(STAMP) sta.chg + +asm.chg: + $(STAMP) asm.chg + +program: $(PROJECT).sof + quartus_pgm --no_banner --mode=jtag -o "$(PROJECT).sof" + +clean: + rm -rf bin *.rpt *.chg *.qsf *.qpf *.qws *.log *.htm *.eqn *.pin *.sof *.pof qdb incremental_db tmp-clearbox