-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
93 lines (75 loc) · 2.63 KB
/
Copy pathMakefile
File metadata and controls
93 lines (75 loc) · 2.63 KB
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# ========= FILE LISTS ===========
PKG_SV := ./AXI-4/define/axi_4_pkg.sv
SRC_PKG_HDR := \
./define/vec_de_csr_defs.svh \
./define/vec_regfile_defs.svh \
./define/vector_processor_defs.svh \
./AXI-4/define/axi_4_defs.svh
SRC_SV := ./src/val_ready_controller.sv \
./src/vec_csr_dec.sv \
./src/vec_lsu.sv \
./src/vec_regfile.sv \
./src/vec_csr_regfile.sv \
./src/vec_decode.sv \
./src/vector_processor_controller.sv \
./src/vector_processor.sv \
./src/vector_processor_datapath.sv \
./test/vector_processor_tb.sv \
./AXI-4/src/axi_4_master_controller.sv \
./AXI-4/src/axi_4_master.sv \
./AXI-4/src/axi_4_slave_controller.sv \
./AXI-4/src/axi_4_slave_mem.sv
INCLUDE_DIRS := \
+incdir+$(PWD)/define \
+incdir+$(PWD)/AXI-4/define \
+incdir+$(PWD)/src \
+incdir+$(PWD)/AXI-4/src \
+incdir+$(PWD)/test
WORK_DIR := work
TB_TOP := vector_processor_tb
MODULE := vector_processor_tb
COMP_OPTS_SV := --incr --relax
# ========= VIVADO FLOW ===========
.PHONY: vivado viv_elaborate viv_compile viv_waves clean vsim vsim_compile simulate
vivado: $(TB_TOP)_snapshot.wdb
viv_waves: $(TB_TOP)_snapshot.wdb
@echo "### OPENING VIVADO WAVES ###"
xsim --gui $(TB_TOP)_snapshot.wdb
$(TB_TOP)_snapshot.wdb: .elab.timestamp
@echo "### RUNNING SIMULATION ###"
xsim $(TB_TOP)_snapshot --tclbatch xsim_cfg.tcl
.elab.timestamp: .comp_pkg_sv.timestamp .comp_sv.timestamp
@echo "### ELABORATION ###"
xelab -debug all -top $(TB_TOP) -snapshot $(TB_TOP)_snapshot
touch $@
.comp_pkg_sv.timestamp: $(PKG_SV)
@echo "### COMPILING PACKAGES ###"
xvlog -sv $(COMP_OPTS_SV) $(INCLUDE_DIRS) $(PKG_SV)
touch $@
.comp_sv.timestamp: $(SRC_SV)
@echo "### COMPILING SV SOURCES ###"
rm -f xsim_cfg.tcl
echo "log_wave -recursive *" > xsim_cfg.tcl
echo "run all" >> xsim_cfg.tcl
echo "exit" >> xsim_cfg.tcl
xvlog -sv -d ROOT_PATH="\"$(PWD)\"" $(COMP_OPTS_SV) $(INCLUDE_DIRS) $(SRC_SV)
touch $@
# ========= MODELSIM FLOW ===========
vsim: vsim_compile simulate
vsim_compile:
@echo "### COMPILING FOR MODELSIM ###"
vlib $(WORK_DIR)
vlog -work $(WORK_DIR) -sv +define+ROOT_PATH=\"$(PWD)\" $(INCLUDE_DIRS) $(PKG_SV)
vlog -work $(WORK_DIR) -sv +define+ROOT_PATH=\"$(PWD)\" $(INCLUDE_DIRS) $(SRC_SV)
simulate:
@echo "### RUNNING MODELSIM ###"
vsim -L $(WORK_DIR) $(MODULE) -do "add wave -radix Unsigned sim:/$(MODULE)/VECTOR_PROCESSOR/*; run -all"
# ========= CLEANUP ===========
clean:
@echo "Cleaning..."
rm -rf ./test/__pycache__ ./test/sim_build
rm -rf ./test/*.vcd ./test/*.xml ./test/*.log
rm -rf $(WORK_DIR) transcript vsim.wlf
rm -rf *.jou *.log *.pb *.wdb xsim.dir *.str
rm -rf .*.timestamp *.tcl *.vcd .*.verilate
rm -rf obj_dir .Xil