~ruther/verilog-riscv-semestral-project

ref: 11422de00c50854a650da69469f3646f4e2f500b verilog-riscv-semestral-project/Makefile -rwxr-xr-x 1.5 KiB
11422de0 — Rutherther feat: store c results in memory addr 0 1 year, 5 months ago
                                                                                
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
MODULE=tb_control_unit

## Verilog part
.PHONY:sim
sim: waveform.vcd

.PHONY:verilate
verilate: .stamp.verilate

.PHONY:build

build: obj_dir/V$(MODULE)

.PHONY:waves
show: ./waves/$(MODULE).vcd
	gtkwave ./waves/$(MODULE).vcd

./waves/%.vcd: ./obj_dir/V% ./waves
	$<

./waves:
	mkdir -p $@

./obj_dir/Vtb_%: testbench/tb_%.sv src/*.sv
	verilator --binary --trace \
		--trace-max-array 512 \
		src/cpu_types.sv \
		src/instruction_decoder.sv \
		src/control_unit.sv \
		src/alu.sv \
		src/register_file.sv \
		src/program_counter.sv \
		src/ram.sv \
		src/cpu.sv \
		src/file_program_memory.sv \
		$< \
        --top $(notdir $(basename $<))

## C part
CFLAGS=-march=rv32i -mabi=ilp32 -O0 -c
ASFLAGS=-march=rv32i -mabi=ilp32
LDFLAGS=-Tprograms/link.ld

CC=riscv32-none-elf-gcc
AS=riscv32-none-elf-as
LD=riscv32-none-elf-ld
OBJDUMP=riscv32-none-elf-objdump
OBJCOPY=riscv32-none-elf-objcopy

./programs/bin:
	mkdir -p $@

./programs/bin/start.o: ./programs/start.S ./programs/bin
	$(AS) $(ASFLAGS) $< -o $@

./programs/bin/%.o: ./programs/%.c ./programs/bin
	$(CC) $(CFLAGS) $< -o $@

./programs/bin/start-%.o: ./programs/bin/start.o ./programs/bin/%.o
	$(LD) $(LDFLAGS) $^ -o $@

./programs/bin/%.bin: ./programs/bin/start-%.o
	$(OBJCOPY) $< -O binary $@

./programs/bin/%.dat: ./programs/bin/%.bin
	od $< -t x4 -A n > $@

objdump/%: ./programs/bin/start-%.o
	$(OBJDUMP) -d -M no-aliases $<

.PHONY: clean
clean:
	rm -rf ./waves
	rm -rf ./programs/bin
	rm -rf ./obj_dir
	rm -rf waveform.vcd
Do not follow this link