-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathMakefile
More file actions
107 lines (88 loc) · 3.69 KB
/
Makefile
File metadata and controls
107 lines (88 loc) · 3.69 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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#================DO NOT MODIFY BELOW=====================
# Compiler and simulator settings
IVERILOG = iverilog
VVP = vvp
COCOTB_PREFIX = $(shell cocotb-config --prefix)
COCOTB_LIBS = $(COCOTB_PREFIX)/cocotb/libs
SIM_BUILD_DIR = sim_build
SIM_VVP = $(SIM_BUILD_DIR)/sim.vvp
# Environment variables
export COCOTB_REDUCED_LOG_FMT=1
export LIBPYTHON_LOC=$(shell cocotb-config --libpython)
export PYTHONPATH := test:$(PYTHONPATH)
SOURCES = src/counter.sv \
src/cnn.sv \
src/maxpool.sv \
src/division.sv \
src/simple_divide.sv \
src/flatten.sv \
src/neuron.sv
# Test targets
test_counter: $(SIM_BUILD_DIR)
$(IVERILOG) -o $(SIM_VVP) -s counter -s dump -g2012 $(SOURCES) src/dump/dump_counter.sv
PYTHONOPTIMIZE=$(NOASSERT) MODULE=test_counter $(VVP) -M $(COCOTB_LIBS) -m libcocotbvpi_icarus $(SIM_VVP)
! grep failure results.xml
mv counter.vcd waveforms/ 2>/dev/null || true
@echo "Opening GTKWave..."
gtkwave waveforms/counter.vcd &
test_cnn: $(SIM_BUILD_DIR)
$(IVERILOG) -o $(SIM_VVP) -s cnn -s dump -g2012 $(SOURCES) src/dump/dump_cnn.sv
PYTHONOPTIMIZE=$(NOASSERT) MODULE=test_cnn $(VVP) -M $(COCOTB_LIBS) -m libcocotbvpi_icarus $(SIM_VVP)
! grep failure results.xml
mv cnn.vcd waveforms/ 2>/dev/null || true
@echo "Opening GTKWave..."
gtkwave waveforms/cnn.vcd &
test_maxpool: $(SIM_BUILD_DIR)
$(IVERILOG) -o $(SIM_VVP) -s maxpool -s dump -g2012 $(SOURCES) src/dump/dump_maxpool.sv
PYTHONOPTIMIZE=$(NOASSERT) MODULE=test_maxpool $(VVP) -M $(COCOTB_LIBS) -m libcocotbvpi_icarus $(SIM_VVP)
! grep failure results.xml
mv maxpool.vcd waveforms/ 2>/dev/null || true
@echo "Opening GTKWave..."
gtkwave waveforms/maxpool.vcd &
test_division: $(SIM_BUILD_DIR)
$(IVERILOG) -o $(SIM_VVP) -s division -s dump -g2012 $(SOURCES) src/dump/dump_division.sv
PYTHONOPTIMIZE=$(NOASSERT) MODULE=test_division $(VVP) -M $(COCOTB_LIBS) -m libcocotbvpi_icarus $(SIM_VVP)
! grep failure results.xml
mv division.vcd waveforms/ 2>/dev/null || true
@echo "Opening GTKWave..."
gtkwave waveforms/division.vcd &
test_simple_divide: $(SIM_BUILD_DIR)
$(IVERILOG) -o $(SIM_VVP) -s simple_divide -s dump -g2012 $(SOURCES) src/dump/dump_simple_divide.sv
PYTHONOPTIMIZE=$(NOASSERT) MODULE=test_simple_divide $(VVP) -M $(COCOTB_LIBS) -m libcocotbvpi_icarus $(SIM_VVP)
! grep failure results.xml
mv simple_divide.vcd waveforms/ 2>/dev/null || true
@echo "Opening GTKWave..."
gtkwave waveforms/simple_divide.vcd &
test_flatten: $(SIM_BUILD_DIR)
$(IVERILOG) -o $(SIM_VVP) -s flatten -s dump -g2012 $(SOURCES) src/dump/dump_flatten.sv
PYTHONOPTIMIZE=$(NOASSERT) MODULE=test_flatten $(VVP) -M $(COCOTB_LIBS) -m libcocotbvpi_icarus $(SIM_VVP)
! grep failure results.xml
mv flatten.vcd waveforms/ 2>/dev/null || true
@echo "Opening GTKWave..."
gtkwave waveforms/flatten.vcd &
test_neuron: $(SIM_BUILD_DIR)
$(IVERILOG) -o $(SIM_VVP) -s neuron -s dump -g2012 $(SOURCES) src/dump/dump_neuron.sv
PYTHONOPTIMIZE=$(NOASSERT) MODULE=test_neuron $(VVP) -M $(COCOTB_LIBS) -m libcocotbvpi_icarus $(SIM_VVP)
! grep failure results.xml
mv neuron.vcd waveforms/ 2>/dev/null || true
@echo "Opening GTKWave..."
gtkwave waveforms/neuron.vcd &
# ============ DO NOT MODIFY BELOW THIS LINE ==============
# Create simulation build directory and waveforms directory
$(SIM_BUILD_DIR):
mkdir -p $(SIM_BUILD_DIR)
mkdir -p waveforms
# Waveform viewing (standalone)
show_counter:
@if [ -f waveforms/counter.vcd ]; then \
gtkwave waveforms/counter.vcd & \
else \
echo "No VCD file found. Run 'make test_counter' first."; \
fi
# Linting
lint:
verible-verilog-lint src/*sv --rules_config verible.rules 2>/dev/null || echo "Verible not available"
# Cleanup
clean:
rm -rf waveforms/*.vcd $(SIM_BUILD_DIR) test/__pycache__ results.xml
.PHONY: clean test_counter show_counter lint