# NAME # BUILD_DIR # SRCS # ENTITY_RUN # WITH_VCD # WITH_VCD ?= y GHDL := ghdl GHDL_GCC := ghdl-gcc SIM_FILE-$(WITH_VCD) := $(BUILD_DIR)/$(NAME).vcd SIM_FILE-$(WITH_FST) := $(BUILD_DIR)/$(NAME).fst SIM_FILE-$(WITH_GHW) := $(BUILD_DIR)/$(NAME).ghw GTK_OPTS-$(WITH_VCD) := --vcd=$(SIM_FILE-y) GTK_OPTS-$(WITH_FST) := --fst=$(SIM_FILE-y) GTK_OPTS-$(WITH_GHW) := --wave=$(SIM_FILE-y) RUN_OPTS := --assert-level=error TS := ps all: analyze $(BUILD_DIR): mkdir -p $@ analyze: $(BUILD_DIR) $(SRCS) $(GHDL) -a --work=$(NAME) --workdir=$(BUILD_DIR) --time-resolution=$(TS) $(SRCS) anaborate: $(BUILD_DIR) $(SRCS) $(GHDL_GCC) -c -o $(BUILD_DIR)/$(NAME) -Wc,O2 --work=$(NAME) --workdir=$(BUILD_DIR) $(SRCS) -e $(ENTITY_RUN) -$(BUILD_DIR)/$(NAME) $(GTK_OPTS-y) $(RUN_OPTS) >$(BUILD_DIR)/$(NAME).log run: analyze -$(GHDL) -r --work=$(NAME) --workdir=$(BUILD_DIR) --time-resolution=$(TS) $(ENTITY_RUN) $(GTK_OPTS-y) $(RUN_OPTS) >$(BUILD_DIR)/$(NAME).log sim: run exec gtkwave -f $(SIM_FILE-y) -a $(BUILD_DIR)/$(NAME).gtkw & synth: analyze $(GHDL) --synth --work=$(NAME) --workdir=$(BUILD_DIR) $(ENTITY_SYN) clean: rm -f $(BUILD_DIR)/$(NAME)*.cf rm -f $(BUILD_DIR)/$(NAME)*.vcd rm -f $(BUILD_DIR)/$(NAME)*.fst rm -f $(BUILD_DIR)/$(NAME)*.ghw rm -f $(BUILD_DIR)/$(NAME)*.log rm -f $(BUILD_DIR)/$(NAME)*.o mrproper: rm -rf $(BUILD_DIR)