From 7956338fbc0db79f11d830f7bc4893965b30e461 Mon Sep 17 00:00:00 2001 From: Albin Chaboissier Date: Tue, 4 Nov 2025 15:41:33 +0100 Subject: [PATCH] Stage 1 + removes hardcoded paths --- .vscode/settings.json | 5 +++++ Makefile | 2 +- common/config.gtkw | 2 +- src/main/scala/projet/Rv32i.scala | 32 ++++++++++++++++++++++++++++++- 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..32cfc61 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.watcherExclude": { + "**/target": true + } +} \ No newline at end of file diff --git a/Makefile b/Makefile index f200dca..582ea0d 100644 --- a/Makefile +++ b/Makefile @@ -66,7 +66,7 @@ $(MEM_DIR)/%.elf: $(BENCH_DIR)/%.c $(MEM_DIR)/crt.o|$(MEM_DIR) $(MEM_DIR)/%.elf: $(BENCH_DIR)/%.s |$(MEM_DIR) $(CC) $(CFLAGS) -o $@ $< $(MEM_DIR)/%.mem: $(MEM_DIR)/%.elf |$(MEM_DIR) - $(OBJDUMP) $(ODFLAGS) $< | awk -f $(OBTOMEM) | awk -f common/fix_mem.awk + $(OBJDUMP) $(ODFLAGS) $< | awk -f $(OBTOMEM) | awk -f common/fix_mem.awk > $@ ############################################################################### diff --git a/common/config.gtkw b/common/config.gtkw index 12f5db2..1bba25f 100644 --- a/common/config.gtkw +++ b/common/config.gtkw @@ -21,7 +21,7 @@ @200 -Instruction @c04023 -^>1 /matieres/3MMFMN/riscv32/bin/spike-dasm +^>1 spike-dasm TOP.svsimTestbench.dut.core.insn[31:0] @29 (0)TOP.svsimTestbench.dut.core.insn[31:0] diff --git a/src/main/scala/projet/Rv32i.scala b/src/main/scala/projet/Rv32i.scala index fcbc09c..8fe6335 100644 --- a/src/main/scala/projet/Rv32i.scala +++ b/src/main/scala/projet/Rv32i.scala @@ -10,5 +10,35 @@ class Rv32i(sim: Boolean = true) extends Module { val valid_x31 = if (sim) Some(Output(Bool())) else None }) - locally(sim) + val reg_pc = RegInit(0.U(32.W)); + + // Increment PC each clock + reg_pc := reg_pc + 4.U; + + // Read instruction + io.ibus.en := true.B; + io.ibus.addr := reg_pc; + + val insn = io.ibus.rdata; + dontTouch(insn); + + // Debug instruction + io.x31 := insn; + if(sim) + { + io.valid_x31.get := true.B; + } + + //io.ibus.wdata + //io.ibus.be + + io.dbus.addr := 0.U; + io.dbus.wdata := 0.U; + io.dbus.be := VecInit(false.B,false.B,false.B,false.B) + io.dbus.en := false.B; + + io.ibus.wdata := 0.U; + io.ibus.be := VecInit(false.B,false.B,false.B,false.B) + + //locally(sim) }