-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
77 lines (52 loc) · 1.83 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
SHELL:=/bin/bash
SIM?=verilator
# Options for GCC compiler
COMPILE_OPT=-cc -no-decoration -O3 -CFLAGS -Wno-attributes -CFLAGS -O2
# Options for C++ model analysis
#ANALYSIS_OPT=-stats -Wwarn-IMPERFECTSCH
# Comment this line to disable VCD generation
# TRACE_OPT=-trace -no-trace-params
# Clock signals
# CLOCK_OPT=-clk v_clk
VERILOG_SRC= tb_top.sv
VERILOG_PARAMS?=
SIM_ARGS=
COMPILE_ARGS=
BUILD_DIR?=build
ifeq ($(SIM),verilator)
VERILOG_DEFINES=+define+SIM_VERILATOR
else
VERILOG_DEFINES=
COMPILE_ARGS+=
ifndef GUI
SIM_ARGS+=-batch -do "run -all"
COMPILE_ARGS+=-vopt
else
SIM_ARGS+=-gui -voptargs="+acc"
COMPILE_ARGS+= -timescale 10ns/1ns
endif
endif
# Verilog top module
TOP_FILE=tb_top
# C++ support files
DPI_C_FILES = dpi.cpp
CPP_FILES=tb_top.cpp $(DPI_C_FILES)
.phony: sim
sim: sim_$(SIM)
clean:
rm -rf $(BUILD_DIR) *.vcd *.wlf transcript *.jou *.pb obj_dir xsim.dir Vtb_top__Dpi.h
# Simulation on verilator ---------------------------------------------------------------
sim_verilator: $(BUILD_DIR)/V$(TOP_FILE)
./$(BUILD_DIR)/V$(TOP_FILE)
$(BUILD_DIR)/V$(TOP_FILE): $(BUILD_DIR)/$(TOP_FILE).mk
@cd ./$(BUILD_DIR) && \
make -j -f V$(TOP_FILE).mk V$(TOP_FILE) && \
cd -
$(BUILD_DIR)/$(TOP_FILE).mk: $(CPP_FILES) $(VERILOG_SRC) $(DPI_C_FILES)
@verilator -Mdir $(BUILD_DIR) $(VERILOG_SRC) $(ANALYSIS_OPT) $(COMPILE_OPT) $(CLOCK_OPT) \
$(TRACE_OPT) $(VERILOG_DEFINES) $(VERILOG_PARAMS) -top-module $(TOP_FILE) -exe $(CPP_FILES)
# Simulation on questasim ----------------------------------------------------------------
$(BUILD_DIR)/_vmake $(BUILD_DIR)/_lib.qdb: $(VERILOG_SRC) $(DPI_C_FILES)
@vlog -work $(BUILD_DIR) $(COMPILE_ARGS) $(VERILOG_SRC) $(VERILOG_DEFINES) $(DPI_C_FILES) -dpiheader Vtb_top__Dpi.h
sim_questa: $(BUILD_DIR)/_vmake $(BUILD_DIR)/_lib.qdb
@vsim $(BUILD_DIR).$(TOP_FILE) $(VERILOG_PARAMS) $(SIM_ARGS)