include .env export $(shell sed 's/=.*//' .env) THREADS := $(shell nproc) all: sim sim: $(WAVEFORM_VCD) $(WAVEFORM_VCD): $(SRC_DIR)/*.vhdl source $(VIVADO_SETTINGS) && \ cd $(BUILD_DIR) && \ xelab -debug typical -top $(SIM_TOP) -snapshot $(SIM_TOP)_snapshot && \ xsim $(SIM_TOP)_snapshot -gui -view ../$(WAVEFORM_CFG) $(SRC_DIR)/*.vhdl: $(BUILD_DIR) source $(VIVADO_SETTINGS) && \ cd $(BUILD_DIR) && \ xvhdl ../$(SRC_DIR)/*.vhdl ../$(SIM_DIR)/*.vhdl $(BUILD_DIR): source $(VIVADO_SETTINGS) && \ mkdir -p $@ build: $(BUILD_DIR)/build.tcl source $(VIVADO_SETTINGS) && \ cd .build && \ vivado -mode batch -nojournal -source build.tcl program: $(BUILD_DIR)/program.tcl source $(VIVADO_SETTINGS) && \ cd .build && \ vivado -mode batch -nojournal -source program.tcl $(BUILD_DIR)/build.tcl: build.tcl.in $(BUILD_DIR) sed -e 's/{{THREADS}}/$(THREADS)/g' \ -e 's/{{CONST}}/$(CONSTRAINTS)/g' \ -e 's/{{PART}}/$(PART)/g' \ -e 's/{{TOP}}/$(TOP)/g' \ -e 's/{{PROJ}}/$(PROJ_NAME)/g' \ -e 's/{{SRC}}/$(SRC_DIR)/g' $< > $@ $(BUILD_DIR)/program.tcl: program.tcl.in $(BUILD_DIR) sed -e 's/{{PROJ}}/$(PROJ_NAME)/g' $< > $@ .PHONY: clean clean: rm -rf $(BUILD_DIR) *.log *.pb *.jou *.wdb *.str xsim.dir .Xil