2
2
RISCV_GNU_TOOLCHAIN_GIT_REVISION = 411d134
3
3
RISCV_GNU_TOOLCHAIN_INSTALL_PREFIX = /opt/riscv32
4
4
5
+ # Give the user some easy overrides for local configuration quirks.
6
+ # If you change one of these and it breaks, then you get to keep both pieces.
5
7
SHELL = bash
8
+ PYTHON = python3
9
+ VERILATOR = verilator
10
+ ICARUS_SUFFIX =
11
+ IVERILOG = iverilog$(ICARUS_SUFFIX )
12
+ VVP = vvp$(ICARUS_SUFFIX )
13
+
6
14
TEST_OBJS = $(addsuffix .o,$(basename $(wildcard tests/* .S) ) )
7
15
FIRMWARE_OBJS = firmware/start.o firmware/irq.o firmware/print.o firmware/hello.o firmware/sieve.o firmware/multest.o firmware/stats.o
8
16
GCC_WARNS = -Werror -Wall -Wextra -Wshadow -Wundef -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings
@@ -14,64 +22,64 @@ COMPRESSED_ISA = C
14
22
GIT_ENV = true
15
23
16
24
test : testbench.vvp firmware/firmware.hex
17
- vvp -N $<
25
+ $( VVP ) -N $<
18
26
19
27
test_vcd : testbench.vvp firmware/firmware.hex
20
- vvp -N $< +vcd +trace +noerror
28
+ $( VVP ) -N $< +vcd +trace +noerror
21
29
22
30
test_rvf : testbench_rvf.vvp firmware/firmware.hex
23
- vvp -N $< +vcd +trace +noerror
31
+ $( VVP ) -N $< +vcd +trace +noerror
24
32
25
33
test_wb : testbench_wb.vvp firmware/firmware.hex
26
- vvp -N $<
34
+ $( VVP ) -N $<
27
35
28
36
test_wb_vcd : testbench_wb.vvp firmware/firmware.hex
29
- vvp -N $< +vcd +trace +noerror
37
+ $( VVP ) -N $< +vcd +trace +noerror
30
38
31
39
test_ez : testbench_ez.vvp
32
- vvp -N $<
40
+ $( VVP ) -N $<
33
41
34
42
test_ez_vcd : testbench_ez.vvp
35
- vvp -N $< +vcd
43
+ $( VVP ) -N $< +vcd
36
44
37
45
test_sp : testbench_sp.vvp firmware/firmware.hex
38
- vvp -N $<
46
+ $( VVP ) -N $<
39
47
40
48
test_axi : testbench.vvp firmware/firmware.hex
41
- vvp -N $< +axi_test
49
+ $( VVP ) -N $< +axi_test
42
50
43
51
test_synth : testbench_synth.vvp firmware/firmware.hex
44
- vvp -N $<
52
+ $( VVP ) -N $<
45
53
46
54
test_verilator : testbench_verilator firmware/firmware.hex
47
55
./testbench_verilator
48
56
49
57
testbench.vvp : testbench.v picorv32.v
50
- iverilog -o $@ $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) $^
58
+ $( IVERILOG ) -o $@ $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) $^
51
59
chmod -x $@
52
60
53
61
testbench_rvf.vvp : testbench.v picorv32.v rvfimon.v
54
- iverilog -o $@ -D RISCV_FORMAL $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) $^
62
+ $( IVERILOG ) -o $@ -D RISCV_FORMAL $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) $^
55
63
chmod -x $@
56
64
57
65
testbench_wb.vvp : testbench_wb.v picorv32.v
58
- iverilog -o $@ $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) $^
66
+ $( IVERILOG ) -o $@ $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) $^
59
67
chmod -x $@
60
68
61
69
testbench_ez.vvp : testbench_ez.v picorv32.v
62
- iverilog -o $@ $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) $^
70
+ $( IVERILOG ) -o $@ $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) $^
63
71
chmod -x $@
64
72
65
73
testbench_sp.vvp : testbench.v picorv32.v
66
- iverilog -o $@ $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) -DSP_TEST $^
74
+ $( IVERILOG ) -o $@ $(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) -DSP_TEST $^
67
75
chmod -x $@
68
76
69
77
testbench_synth.vvp : testbench.v synth.v
70
- iverilog -o $@ -DSYNTH_TEST $^
78
+ $( IVERILOG ) -o $@ -DSYNTH_TEST $^
71
79
chmod -x $@
72
80
73
81
testbench_verilator : testbench.v picorv32.v testbench.cc
74
- verilator --cc --exe -Wno-lint -trace --top-module picorv32_wrapper testbench.v picorv32.v testbench.cc \
82
+ $( VERILATOR ) --cc --exe -Wno-lint -trace --top-module picorv32_wrapper testbench.v picorv32.v testbench.cc \
75
83
$(subst C,-DCOMPRESSED_ISA,$(COMPRESSED_ISA ) ) --Mdir testbench_verilator_dir
76
84
$(MAKE ) -C testbench_verilator_dir -f Vpicorv32_wrapper.mk
77
85
cp testbench_verilator_dir/Vpicorv32_wrapper testbench_verilator
@@ -92,7 +100,7 @@ synth.v: picorv32.v scripts/yosys/synth_sim.ys
92
100
yosys -qv3 -l synth.log scripts/yosys/synth_sim.ys
93
101
94
102
firmware/firmware.hex : firmware/firmware.bin firmware/makehex.py
95
- python3 firmware/makehex.py $< 32768 > $@
103
+ $( PYTHON ) firmware/makehex.py $< 32768 > $@
96
104
97
105
firmware/firmware.bin : firmware/firmware.elf
98
106
$(TOOLCHAIN_PREFIX ) objcopy -O binary $< $@
0 commit comments