-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathMakefile
50 lines (36 loc) · 1.36 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Makefile for running simulations of designs using Iverilog
# Design name input (change this to your desired design name)
DESIGN_NAME ?= DSP38
# Directories
FLIST ?= ./sim_models/verilog/$(DESIGN_NAME)
SRC_DIR ?= ./sim_models/verilog
TB_DIR ?= ./tb/$(DESIGN_NAME)
SIM_DIR = sim
SIM_RESULTS_DIR = sim_results
# Source and testbench files
SRC_FILES = $(wildcard $(SRC_DIR)/$(DESIGN_NAME).v)
TB_FILES = $(wildcard $(TB_DIR)/*.v $(TB_DIR)/*.sv)
COMPILE_ARGS_FILE = $(TB_DIR)/compile_args.txt
# Check if COMPILE_ARGS_FILE exists, and set COMPILE_ARGS accordingly
ifeq ($(wildcard $(COMPILE_ARGS_FILE)),)
COMPILE_ARGS :=
else
COMPILE_ARGS := -D$(shell cat $(COMPILE_ARGS_FILE))
endif
# Simulation executable
SIM_EXECUTABLE = $(SIM_DIR)/$(DESIGN_NAME)_sim
# Simulation command
#SIM_COMMAND = iverilog -g2012 -o $(SIM_EXECUTABLE) $(COMPILE_ARGS) $(SRC_FILES) $(TB_FILES)
SIM_COMMAND = iverilog -g2012 -o $(SIM_EXECUTABLE) -DTIMED_SIM $(COMPILE_ARGS) $(TB_FILES) $(FLIST)
.PHONY: all clean
all: $(SIM_EXECUTABLE)
@echo "Simulation executable created: $(SIM_EXECUTABLE)"
@echo "Running simulation..."
@mkdir -p $(SIM_RESULTS_DIR)
@cd $(SIM_DIR) && ./$(DESIGN_NAME)_sim > ../$(SIM_RESULTS_DIR)/$(DESIGN_NAME)_sim_out.log
$(SIM_EXECUTABLE): $(SRC_FILES) $(TB_FILES)
@mkdir -p $(SIM_DIR)
$(SIM_COMMAND)
clean:
@echo "Cleaning up..."
@rm -rf $(SIM_DIR) $(SIM_RESULTS_DIR)