Skip to content

Commit 77062f9

Browse files
File structure update
1 parent ffe5d92 commit 77062f9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+102
-198118
lines changed

Makefile

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
.PHONY: all clean flash pack pnr synth
1+
.PHONY: clean flash pack pnr synth synth-all sim-build cmake-cache sim-run sim-test
22

33
FILELIST ?= verible.filelist
44

55
# Optional top module, leave blank to skip hierarchy command
66
TOP_MODULE ?=
77

8-
all: flash
8+
synth-all: flash
99

1010
flash: pack
1111
openFPGALoader -b tangnano20k build/packed.fs
1212

1313
pack: pnr
1414
gowin_pack -d GW2A-18C -o build/packed.fs build/pnr.json
1515

16-
pnr: tangnano20k.cst synth
17-
nextpnr-himbaechel --json build/synth.json --write build/pnr.json --device GW2AR-LV18QN88C8/I7 --vopt family=GW2A-18C --vopt cst=tangnano20k.cst
16+
pnr: synth/tangnano20k.cst synth
17+
nextpnr-himbaechel --json build/synth.json --write build/pnr.json --device GW2AR-LV18QN88C8/I7 --vopt family=GW2A-18C --vopt cst=synth/tangnano20k.cst
1818

1919
synth: $(FILELIST)
2020
mkdir -p build
@@ -38,3 +38,16 @@ synth: $(FILELIST)
3838

3939
clean:
4040
rm -rf build
41+
rm -rf build-sim
42+
43+
sim-build: cmake-cache
44+
cmake --build build-sim
45+
46+
cmake-cache: CMakelists.txt
47+
cmake -S . -B build-sim
48+
49+
sim-test: sim-build
50+
cd mem_files && make && cd -
51+
52+
sim-run: sim-test
53+
cd mem_files && make run-tests && cd -

mem_files/Makefile

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,49 @@
1-
.PHONY: all clean dump hexdump riscv-test
1+
RV32UI_P_DIR := ./rv32ui-p
2+
RV32UI_P_TESTS_DIR := ./rv32ui-p-tests
23

3-
all: add.mem
4+
OBJCOPY=riscv64-unknown-elf-objcopy
45

5-
assemble: add2.s
6-
riscv64-linux-gnu-as add2.s -o add2.o
7-
riscv64-linux-gnu-objcopy -O binary add2.o add2.bin
8-
hexdump -v -e '1/1 "%02x\n"' add2.bin > add2.mem
6+
# Find all input files in rv32ui-p directory
7+
BINARY_TESTS := $(filter-out %.dump, $(wildcard $(RV32UI_P_DIR)/*))
8+
DUMPS := $(wildcard $(RV32UI_P_DIR)/*.dump)
9+
BINS := $(patsubst $(RV32UI_P_DIR)/%, $(RV32UI_P_TESTS_DIR)/%, $(BINARY_TESTS))
10+
MEMS := $(patsubst $(RV32UI_P_DIR)/%, $(RV32UI_P_TESTS_DIR)/%.mem, $(BINARY_TESTS))
11+
DATA_MEMS := $(patsubst $(RV32UI_P_DIR)/%, $(RV32UI_P_TESTS_DIR)/%.data.mem, $(BINARY_TESTS))
12+
PASS := $(patsubst $(RV32UI_P_DIR)/%.dump, $(RV32UI_P_TESTS_DIR)/%_pass.txt, $(DUMPS))
13+
FAIL := $(patsubst $(RV32UI_P_DIR)/%.dump, $(RV32UI_P_TESTS_DIR)/%_fail.txt, $(DUMPS))
914

10-
add.mem: add.c
11-
clang --target=riscv32 -march=rv32i -mabi=ilp32 -O3 -ffreestanding -nostdlib -fno-pie -c add.c -o add.o
12-
ld.lld -Ttext=0x80000000 -Tdata=0x80002000 add.o -o add.elf
13-
riscv64-linux-gnu-objcopy -O binary add.elf add.bin
14-
riscv64-linux-gnu-objcopy -O binary -j .data* add.elf add.data.bin
15-
hexdump -v -e '1/1 "%02x\n"' add.bin > add.mem
15+
all: $(BINS) $(MEMS) $(DATA_MEMS) $(PASS) $(FAIL)
1616

17-
riscv-test: rv32ui-p-addi
18-
riscv64-linux-gnu-objcopy -O binary rv32ui-p-addi rv32ui-p-addi.bin
19-
riscv64-linux-gnu-objcopy -O binary -j .data* rv32ui-p-addi rv32ui-p-addi.data.bin
20-
hexdump -v -e '1/1 "%02x\n"' rv32ui-p-addi.bin > rv32ui-p-addi.mem
21-
grep '<pass>:' rv32ui-p-addi.dump | awk '{print $$1}' > pass.txt
22-
grep '<fail>:' rv32ui-p-addi.dump | awk '{print $$1}' > fail.txt
17+
$(RV32UI_P_TESTS_DIR)/%: $(RV32UI_P_DIR)/%
18+
@mkdir -p $(RV32UI_P_TESTS_DIR)
19+
$(OBJCOPY) -O binary -j .text* $< $@
2320

24-
riscv-test2: rv32ui-p/rv32ui-p-lh
25-
riscv64-linux-gnu-objcopy -O binary -j .text* ./rv32ui-p/rv32ui-p-lh rv32ui-p-lh.bin
26-
riscv64-linux-gnu-objcopy -O binary -j .data* ./rv32ui-p/rv32ui-p-lh rv32ui-p-lh.data.bin
27-
hexdump -v -e '1/1 "%02x\n"' rv32ui-p-addi.bin > rv32ui-p-addi.mem
28-
grep '<pass>:' rv32ui-p-addi.dump | awk '{print $$1}' > pass.txt
29-
grep '<fail>:' rv32ui-p-addi.dump | awk '{print $$1}' > fail.txt
21+
$(RV32UI_P_TESTS_DIR)/%.mem: $(RV32UI_P_TESTS_DIR)/%
22+
hexdump -v -e '1/1 "%02x\n"' $< > $@
3023

24+
$(RV32UI_P_TESTS_DIR)/%.data: $(RV32UI_P_DIR)/%
25+
@mkdir -p $(RV32UI_P_TESTS_DIR)
26+
$(OBJCOPY) -O binary -j .data* $< $@
3127

32-
dump: add.o
33-
riscv64-linux-gnu-objdump -d add.elf
28+
$(RV32UI_P_TESTS_DIR)/%.data.mem: $(RV32UI_P_TESTS_DIR)/%.data
29+
hexdump -v -e '1/1 "%02x\n"' $< > $@
3430

35-
hexdump: add.bin
36-
hexdump add.bin
31+
$(RV32UI_P_TESTS_DIR)/%_pass.txt: $(RV32UI_P_DIR)/%.dump
32+
grep '<pass>:' $< | awk '{print $$1}' > $@
33+
34+
$(RV32UI_P_TESTS_DIR)/%_fail.txt: $(RV32UI_P_DIR)/%.dump
35+
grep '<fail>:' $< | awk '{print $$1}' > $@
3736

3837
clean:
39-
rm -f add.o add.bin add.mem add2.o add2.bin add2.mem
38+
rm -rf $(RV32UI_P_TESTS_DIR)
39+
40+
41+
42+
TESTS := $(shell find $(RV32UI_P_DIR) -type f ! -name "*.dump" -exec basename {} \;)
43+
44+
# Run tests target
45+
run-tests:
46+
@for test in $(TESTS); do \
47+
echo "Running $$test"; \
48+
../build-sim/InstructionTest +testname=$$test || exit 1; \
49+
done

mem_files/Makefile-tmp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
.PHONY: all clean dump hexdump riscv-test
2+
3+
all: add.mem
4+
5+
assemble: add2.s
6+
riscv64-linux-gnu-as add2.s -o add2.o
7+
riscv64-linux-gnu-objcopy -O binary add2.o add2.bin
8+
hexdump -v -e '1/1 "%02x\n"' add2.bin > add2.mem
9+
10+
add.mem: add.c
11+
clang --target=riscv32 -march=rv32i -mabi=ilp32 -O3 -ffreestanding -nostdlib -fno-pie -c add.c -o add.o
12+
ld.lld -Ttext=0x80000000 -Tdata=0x80002000 add.o -o add.elf
13+
riscv64-linux-gnu-objcopy -O binary add.elf add.bin
14+
riscv64-linux-gnu-objcopy -O binary -j .data* add.elf add.data.bin
15+
hexdump -v -e '1/1 "%02x\n"' add.bin > add.mem
16+
17+
riscv-test: rv32ui-p-addi
18+
riscv64-linux-gnu-objcopy -O binary rv32ui-p-addi rv32ui-p-addi.bin
19+
riscv64-linux-gnu-objcopy -O binary -j .data* rv32ui-p-addi rv32ui-p-addi.data.bin
20+
hexdump -v -e '1/1 "%02x\n"' rv32ui-p-addi.bin > rv32ui-p-addi.mem
21+
grep '<pass>:' rv32ui-p-addi.dump | awk '{print $$1}' > pass.txt
22+
grep '<fail>:' rv32ui-p-addi.dump | awk '{print $$1}' > fail.txt
23+
24+
riscv-test2: rv32ui-p/rv32ui-p-lh
25+
riscv64-linux-gnu-objcopy -O binary -j .text* ./rv32ui-p/rv32ui-p-lh rv32ui-p-lh.bin
26+
riscv64-linux-gnu-objcopy -O binary -j .data* ./rv32ui-p/rv32ui-p-lh rv32ui-p-lh.data.bin
27+
hexdump -v -e '1/1 "%02x\n"' rv32ui-p-addi.bin > rv32ui-p-addi.mem
28+
grep '<pass>:' rv32ui-p-addi.dump | awk '{print $$1}' > pass.txt
29+
grep '<fail>:' rv32ui-p-addi.dump | awk '{print $$1}' > fail.txt
30+
31+
32+
dump: add.o
33+
riscv64-linux-gnu-objdump -d add.elf
34+
35+
hexdump: add.bin
36+
hexdump add.bin
37+
38+
clean:
39+
rm -f add.o add.bin add.mem add2.o add2.bin add2.mem

mem_files/Makefile2

Lines changed: 0 additions & 38 deletions
This file was deleted.

mem_files/rv32ui-p-tests/rv32ui-p-add

-2.39 KB
Binary file not shown.

0 commit comments

Comments
 (0)