From 72c1cc33f595cbe6d189a7250f81bc8b6572213d Mon Sep 17 00:00:00 2001 From: David Harris Date: Wed, 15 Sep 2021 13:14:00 -0400 Subject: [PATCH] Added Zfencei support in instruction decoder and configurations. Also added riscv-arch-test 32-bit tests to regression. --- .../config/buildroot/wally-config.vh | 5 +- .../config/busybear/wally-config.vh | 5 +- .../config/coremark/wally-config.vh | 5 +- .../config/coremark_bare/wally-config.vh | 5 +- wally-pipelined/config/rv32ic/wally-config.vh | 5 +- .../config/rv32icfd/wally-config.vh | 5 +- wally-pipelined/config/rv64BP/wally-config.vh | 5 +- wally-pipelined/config/rv64ic/wally-config.vh | 5 +- .../config/rv64icfd/wally-config.vh | 5 +- .../config/rv64imc/wally-config.vh | 5 +- .../regression/regression-wally.py | 5 + wally-pipelined/src/hazard/hazard.sv | 9 +- wally-pipelined/src/ieu/controller.sv | 97 +++++++++++-------- wally-pipelined/src/ieu/ieu.sv | 1 + wally-pipelined/src/ifu/ifu.sv | 1 + wally-pipelined/src/lsu/lsu.sv | 1 + wally-pipelined/src/privileged/csr.sv | 2 +- wally-pipelined/src/privileged/csrc.sv | 4 +- .../src/wally/wallypipelinedhart.sv | 3 +- 19 files changed, 104 insertions(+), 69 deletions(-) diff --git a/wally-pipelined/config/buildroot/wally-config.vh b/wally-pipelined/config/buildroot/wally-config.vh index f6373e1a4..1b6e030ff 100644 --- a/wally-pipelined/config/buildroot/wally-config.vh +++ b/wally-pipelined/config/buildroot/wally-config.vh @@ -37,8 +37,9 @@ `define XLEN 64 `define MISA (32'h0014112D) -`define ZCSR_SUPPORTED 1 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 `define COUNTERS 32 // Microarchitectural Features diff --git a/wally-pipelined/config/busybear/wally-config.vh b/wally-pipelined/config/busybear/wally-config.vh index 25394589c..86385bd88 100644 --- a/wally-pipelined/config/busybear/wally-config.vh +++ b/wally-pipelined/config/busybear/wally-config.vh @@ -37,8 +37,9 @@ `define XLEN 64 `define MISA (32'h0014112D) -`define ZCSR_SUPPORTED 1 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 `define COUNTERS 32 // Microarchitectural Features diff --git a/wally-pipelined/config/coremark/wally-config.vh b/wally-pipelined/config/coremark/wally-config.vh index 1706d345f..32006c690 100644 --- a/wally-pipelined/config/coremark/wally-config.vh +++ b/wally-pipelined/config/coremark/wally-config.vh @@ -36,9 +36,10 @@ //`define MISA (32'h00000104) `define MISA (32'h00000104 | 1<<5 | 1<<18 | 1 << 20 | 1 << 12) -`define ZCSR_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 // Microarchitectural Features `define UARCH_PIPELINED 1 diff --git a/wally-pipelined/config/coremark_bare/wally-config.vh b/wally-pipelined/config/coremark_bare/wally-config.vh index e877db395..8f79212b5 100644 --- a/wally-pipelined/config/coremark_bare/wally-config.vh +++ b/wally-pipelined/config/coremark_bare/wally-config.vh @@ -37,9 +37,10 @@ //`define MISA (32'h00000104) //`define MISA (32'h00001104 | 1<<5 | 1<<18 | 1 << 20 | 1 << 12 | 1 << 0) `define MISA (32'h00000104 | 0 << 5 | 0 << 3 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0) -`define ZCSR_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 // Microarchitectural Features `define UARCH_PIPELINED 1 diff --git a/wally-pipelined/config/rv32ic/wally-config.vh b/wally-pipelined/config/rv32ic/wally-config.vh index 6325a2363..dfe1c61e0 100644 --- a/wally-pipelined/config/rv32ic/wally-config.vh +++ b/wally-pipelined/config/rv32ic/wally-config.vh @@ -35,9 +35,10 @@ `define XLEN 32 `define MISA (32'h00000104 | 1 << 20 | 1 << 18 | 1 << 12 | 1 << 0) -`define ZCSR_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 // Microarchitectural Features `define UARCH_PIPELINED 1 diff --git a/wally-pipelined/config/rv32icfd/wally-config.vh b/wally-pipelined/config/rv32icfd/wally-config.vh index fbfd12559..2f0bc378e 100644 --- a/wally-pipelined/config/rv32icfd/wally-config.vh +++ b/wally-pipelined/config/rv32icfd/wally-config.vh @@ -35,9 +35,10 @@ `define XLEN 32 `define MISA (32'h00000104 | 1 << 5 | 1 << 20 | 1 << 18 | 1 << 12) -`define ZCSR_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 // Microarchitectural Features `define UARCH_PIPELINED 1 diff --git a/wally-pipelined/config/rv64BP/wally-config.vh b/wally-pipelined/config/rv64BP/wally-config.vh index 0085c77bf..c189cb0fe 100644 --- a/wally-pipelined/config/rv64BP/wally-config.vh +++ b/wally-pipelined/config/rv64BP/wally-config.vh @@ -37,9 +37,10 @@ //`define MISA (32'h00000105) `define MISA (32'h00000104 | 1 << 5 | 1 << 3 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0) -`define ZCSR_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 // Microarchitectural Features `define UARCH_PIPELINED 1 diff --git a/wally-pipelined/config/rv64ic/wally-config.vh b/wally-pipelined/config/rv64ic/wally-config.vh index 5b3eddb60..ef935ae2c 100644 --- a/wally-pipelined/config/rv64ic/wally-config.vh +++ b/wally-pipelined/config/rv64ic/wally-config.vh @@ -36,9 +36,10 @@ // MISA RISC-V configuration per specification `define MISA (32'h00000104 | 0 << 5 | 0 << 3 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0) -`define ZCSR_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 // Microarchitectural Features `define UARCH_PIPELINED 1 diff --git a/wally-pipelined/config/rv64icfd/wally-config.vh b/wally-pipelined/config/rv64icfd/wally-config.vh index 83a1070f1..a91531dd0 100644 --- a/wally-pipelined/config/rv64icfd/wally-config.vh +++ b/wally-pipelined/config/rv64icfd/wally-config.vh @@ -37,9 +37,10 @@ // MISA RISC-V configuration per specification `define MISA (32'h00000104 | 1 << 5 | 1 << 3 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0) -`define ZCSR_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 // Microarchitectural Features `define UARCH_PIPELINED 1 diff --git a/wally-pipelined/config/rv64imc/wally-config.vh b/wally-pipelined/config/rv64imc/wally-config.vh index 1e8b24376..0a874a72d 100644 --- a/wally-pipelined/config/rv64imc/wally-config.vh +++ b/wally-pipelined/config/rv64imc/wally-config.vh @@ -35,9 +35,10 @@ // MISA RISC-V configuration per specification `define MISA (32'h00000104 | 0 << 5 | 0 << 3 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0) -`define ZCSR_SUPPORTED 1 +`define ZICSR_SUPPORTED 1 +`define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 -`define ZCOUNTERS_SUPPORTED 1 +`define ZICOUNTERS_SUPPORTED 1 // Microarchitectural Features `define UARCH_PIPELINED 1 diff --git a/wally-pipelined/regression/regression-wally.py b/wally-pipelined/regression/regression-wally.py index 4d7baf8e5..e7790f9fc 100755 --- a/wally-pipelined/regression/regression-wally.py +++ b/wally-pipelined/regression/regression-wally.py @@ -38,6 +38,11 @@ configs = [ cmd="vsim > {} -c < {} -c < {} -c <