git-svn-id: http://moon:8086/svn/vhdl/trunk@1443 cc03376c-175c-47c8-b038-4cd826a8556b
86 lines
1.9 KiB
Makefile
86 lines
1.9 KiB
Makefile
# -------------------------------------------------
|
|
# User options
|
|
# -------------------------------------------------
|
|
# SRCS
|
|
# WITH_VCD
|
|
# WITH_GHW
|
|
TARGET ?= default
|
|
ENTITY ?= default
|
|
WORK_DIR ?= work
|
|
WORK_LIB ?= work
|
|
LANG_STD ?= 93c
|
|
IEEE_STD ?= standard
|
|
RUN_TIME ?= 1000ns
|
|
|
|
# Build path
|
|
BUILD_DIR ?= build/$(TARGET)
|
|
|
|
# Can be pre-initialized by user
|
|
RUN_OPTS += --stop-time=$(RUN_TIME)
|
|
GHDL_OPTS += --work=$(WORK_LIB) --workdir=$(BUILD_DIR)/$(WORK_DIR) --std=$(LANG_STD) --ieee=$(IEEE_STD)
|
|
|
|
# -------------------------------------------------
|
|
|
|
# GHDL binary
|
|
GHDL := ghdl
|
|
GHDL_GCC := ghdl-gcc
|
|
|
|
# Output stuff
|
|
SIM_FILE-$(WITH_VCD) := $(BUILD_DIR)/$(TARGET).vcd
|
|
SIM_FILE-$(WITH_FST) := $(BUILD_DIR)/$(TARGET).fst
|
|
SIM_FILE-$(WITH_GHW) := $(BUILD_DIR)/$(TARGET).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)
|
|
|
|
# Targets
|
|
all: analyze
|
|
|
|
$(BUILD_DIR)/$(WORK_DIR):
|
|
mkdir -p $@
|
|
|
|
syntax:
|
|
$(GHDL) -s $(GHDL_OPTS) $(SRCS)
|
|
|
|
import:
|
|
$(GHDL) -i $(GHDL_OPTS) $(SRCS)
|
|
|
|
analyze: $(BUILD_DIR)/$(WORK_DIR) $(SRCS)
|
|
$(GHDL) -a $(GHDL_OPTS) $(SRCS)
|
|
|
|
anaborate: $(BUILD_DIR)/$(WORK_DIR) $(SRCS)
|
|
$(GHDL) -c $(GHDL_OPTS) -o $(BUILD_DIR)/$(TARGET) $(SRCS) -e $(ENTITY)
|
|
|
|
makeunit: analyze
|
|
$(GHDL) -m $(GHDL_OPTS) $(ENTITY)
|
|
|
|
elaborate: analyze
|
|
$(GHDL) -e $(GHDL_OPTS) $(ENTITY)
|
|
|
|
run: analyze
|
|
$(GHDL) -r $(GHDL_OPTS) $(ENTITY) $(RUN_OPTS)
|
|
|
|
run_show: analyze
|
|
$(GHDL) -r $(GHDL_OPTS) $(ENTITY) $(RUN_OPTS) $(GTK_OPTS-y) >$(BUILD_DIR)/$(TARGET).log
|
|
|
|
synth: analyze
|
|
$(GHDL) --synth $(GHDL_OPTS) $(ENTITY)
|
|
|
|
show: run_show
|
|
exec gtkwave -f $(SIM_FILE-y) -a $(BUILD_DIR)/$(TARGET).gtkw &
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR)/$(WORK_DIR)
|
|
rm -f $(BUILD_DIR)/$(TARGET)*.vcd
|
|
rm -f $(BUILD_DIR)/$(TARGET)*.fst
|
|
rm -f $(BUILD_DIR)/$(TARGET)*.ghw
|
|
rm -f $(BUILD_DIR)/$(TARGET)*.log
|
|
rm -f $(BUILD_DIR)/$(TARGET)*.o
|
|
|
|
mrproper:
|
|
rm -rf $(WORK_DIR)
|
|
|
|
|
|
|