diff --git a/Makefile b/Makefile index d71ac71d6..7b63eb77f 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ riscv-tests = rv64ui-p-add rv64ui-p-addi rv64ui-p-slli rv64ui-p-addiw rv64ui-p-a rv64mi-p-ma_addr rv64mi-p-ma_fetch rv64mi-p-sbreak rv64mi-p-scall \ rv64si-p-csr rv64si-p-ma_fetch rv64si-p-scall rv64si-p-wfi rv64si-p-sbreak \ rv64si-p-dirty rv64uc-p-rvc \ - rv64ui-v-sll + rv64ui-v-sll rv64ui-v-srl rv64ui-v-sd riscv-test = rv64ui-p-add diff --git a/README.md b/README.md index 99bf2f176..54601a02b 100644 --- a/README.md +++ b/README.md @@ -43,32 +43,32 @@ Check out the [contribution guide](CONTRIBUTING.md) ## User Mode Integer Tests -| **Test Name** | **P/V** | **Test Name** | **P/V** | **Test Name** | **P/V** | -|---------------|-----------------------------------------|---------------|----------------------------------------|---------------|-----------------------------------------| -| add | :white_check_mark: :white_large_square: | lb | :white_check_mark::white_large_square: | sll | :white_check_mark: :white_check_mark: | -| addi | :white_check_mark: :white_large_square: | lbu | :white_check_mark::white_large_square: | slli | :white_check_mark: :white_large_square: | -| addiw | :white_check_mark: :white_large_square: | ld | :white_check_mark::white_large_square: | slliw | :white_check_mark: :white_large_square: | -| addw | :white_check_mark: :white_large_square: | lh | :white_check_mark::white_large_square: | sllw | :white_check_mark: :white_large_square: | -| and | :white_check_mark: :white_large_square: | lhu | :white_check_mark::white_large_square: | slt | :white_check_mark: :white_large_square: | -| andi | :white_check_mark: :white_large_square: | lui | :white_check_mark::white_large_square: | slti | :white_check_mark: :white_large_square: | -| auipc | :white_check_mark: :white_large_square: | lw | :white_check_mark::white_large_square: | sltiu | :white_check_mark: :white_large_square: | -| beq | :white_check_mark: :white_large_square: | lwu | :white_check_mark::white_large_square: | sltu | :white_check_mark: :white_large_square: | -| bge | :white_check_mark: :white_large_square: | or | :white_check_mark::white_large_square: | sra | :white_check_mark: :white_large_square: | -| bgeu | :white_check_mark: :white_large_square: | ori | :white_check_mark::white_large_square: | srai | :white_check_mark: :white_large_square: | -| blt | :white_check_mark: :white_large_square: | sb | :white_check_mark::white_large_square: | sraiw | :white_check_mark: :white_large_square: | -| bltu | :white_check_mark: :white_large_square: | sd | :white_check_mark::white_check_mark: | sraw | :white_check_mark: :white_large_square: | -| bne | :white_check_mark: :white_large_square: | sh | :white_check_mark::white_large_square: | srl | :white_check_mark: :white_check_mark: | -| sub | :white_check_mark: :white_large_square: | simple | :white_check_mark::white_large_square: | srli | :white_check_mark: :white_large_square: | -| subw | :white_check_mark: :white_large_square: | jal | :white_check_mark::white_large_square: | srliw | :white_check_mark: :white_large_square: | -| sw | :white_check_mark: :white_large_square: | jalr | :white_check_mark::white_large_square: | srlw | :white_check_mark: :white_large_square: | -| xor | :white_check_mark: :white_large_square: | | | | | -| xori | :white_check_mark: :white_large_square: | | | | | +| **Test Name** | **P/V** | **Test Name** | **P/V** | **Test Name** | **P/V** | +|---------------|-----------------------------------------|---------------|-----------------------------------------|---------------|-----------------------------------------| +| add | :white_check_mark: :white_large_square: | lb | :white_check_mark: :white_large_square: | sll | :white_check_mark: :white_check_mark: | +| addi | :white_check_mark: :white_large_square: | lbu | :white_check_mark: :white_large_square: | slli | :white_check_mark: :white_large_square: | +| addiw | :white_check_mark: :white_large_square: | ld | :white_check_mark: :white_check_mark: | slliw | :white_check_mark: :white_large_square: | +| addw | :white_check_mark: :white_large_square: | lh | :white_check_mark: :white_large_square: | sllw | :white_check_mark: :white_large_square: | +| and | :white_check_mark: :white_large_square: | lhu | :white_check_mark: :white_large_square: | slt | :white_check_mark: :white_large_square: | +| andi | :white_check_mark: :white_large_square: | lui | :white_check_mark: :white_large_square: | slti | :white_check_mark: :white_large_square: | +| auipc | :white_check_mark: :white_large_square: | lw | :white_check_mark: :white_large_square: | sltiu | :white_check_mark: :white_large_square: | +| beq | :white_check_mark: :white_large_square: | lwu | :white_check_mark: :white_large_square: | sltu | :white_check_mark: :white_large_square: | +| bge | :white_check_mark: :white_large_square: | or | :white_check_mark: :white_large_square: | sra | :white_check_mark: :white_large_square: | +| bgeu | :white_check_mark: :white_large_square: | ori | :white_check_mark: :white_large_square: | srai | :white_check_mark: :white_large_square: | +| blt | :white_check_mark: :white_large_square: | sb | :white_check_mark: :white_large_square: | sraiw | :white_check_mark: :white_large_square: | +| bltu | :white_check_mark: :white_large_square: | sd | :white_check_mark: :white_check_mark: | sraw | :white_check_mark: :white_large_square: | +| bne | :white_check_mark: :white_large_square: | sh | :white_check_mark: :white_large_square: | srl | :white_check_mark: :white_check_mark: | +| sub | :white_check_mark: :white_large_square: | simple | :white_check_mark: :white_large_square: | srli | :white_check_mark: :white_large_square: | +| subw | :white_check_mark: :white_large_square: | jal | :white_check_mark: :white_large_square: | srliw | :white_check_mark: :white_large_square: | +| sw | :white_check_mark: :white_large_square: | jalr | :white_check_mark: :white_large_square: | srlw | :white_check_mark: :white_large_square: | +| xor | :white_check_mark: :white_large_square: | | | | | +| xori | :white_check_mark: :white_large_square: | | | | | ## Compressed Instruction Tests | **Test Name** | **P/V** | **Test Name** | **P/V** | **Test Name** | **P/V** | |---------------|----------------------------------------|---------------|---------|---------------|---------| -| rvc | :white_check_mark::white_large_square: | | | | | +| rvc | :white_check_mark: :white_large_square: | | | | | ## Machine Mode Tests diff --git a/src/load_unit.sv b/src/load_unit.sv index e2ffc76e9..65221d89c 100644 --- a/src/load_unit.sv +++ b/src/load_unit.sv @@ -248,6 +248,10 @@ module load_unit ( if (ex_i.valid) valid_o = 1'b1; end + // an exception occurred during translation + if (CS == WAIT_TRANSLATION && ex_i.valid) begin + valid_o = 1'b1; + end end