48 lines
No EOL
1.2 KiB
Makefile
48 lines
No EOL
1.2 KiB
Makefile
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
|