Comments (4)
I guess this is effectively a duplicate of issue #26 so Iโll guess it will get same response!
from riscv-formal.
This appears to be not what the RVFI checkers are expecting when rvfi_trap is raised on an unaligned branch, as they barf on mismatching rd_addr/rd_wdata (if the DUT has indeed squashed the writeback to RD of the faulting JAL/JALR instructions).
I don't think this is a dup of #26 because in #26 the core said it wrote a register when it should not, but you are saying the core reports that it does not write the destination register for a misaligned branch (as is the correct behavior) and the check is still complaining? That is weird.
Are you sure the riscv-formal spec agrees that the instruction should trap, i.e. is spec_trap
high? Because from the little information you provided I would guess you have configured riscv-formal for a core with support for compressed instructions (RISCV_FORMAL_COMPRESSED), and then the core should never encounter an instruction address misaligned trap.
from riscv-formal.
The checker was in agreement that the trap should happen (spec_trap was high), however it also expects that the core continues to writeback to RD.
This is not the case with my core or the spike reference model, as the faulting instruction (a branch to a misaligned destination) should be stopped from causing architectural side effects and should fault instead (effectively the instruction would be left un-executed).
This would make it a precise fault, e.g. like a recoverable fault like a page fault.
I am not using compressed instructions.
I canโt see that the checker has enough information to disambiguate what to do on the various fault causes.
from riscv-formal.
The checker was in agreement that the trap should happen (spec_trap was high), however it also expects that the core continues to writeback to RD.
I don't think this is true. Currently the insn checker only checks rd writeback when spec_trap is low:
riscv-formal/checks/rvfi_insn_check.sv
Lines 149 to 158 in 726255f
Arguably it should check that rd_addr = 0 and rd_wdata = 0 when spec_trap is high, but right now it doesn't check rd writeback at all in case of a trap.
from riscv-formal.
Related Issues (20)
- Adding support for a newRISC-V processor to riscv-formal HOT 4
- Failed Checks in picorv32 Verification Following Quickstart Guide HOT 3
- JAL handling procedure HOT 1
- Value of rs1 during CSR*I instructions HOT 2
- OOPS forget i said anything
- Incorrect width of insn_funct6 in I-type (shift variation) instruction format?
- Debug modelling
- "ERROR: syntax error, unexpected TOK_RAND" in quick start guide HOT 2
- Instruction checks: non-universal assertions should be generated based on instruction type
- How to set values in the genchecks.cfg file?
- Support for Zce?
- When is rvfi_halt supposed to be used?
- rvfi_reg_check is possibly broken (picorv32 also fails the assertion) HOT 3
- Can WARL read-only be handled in csrw_check?
- are rvfi_valid and rvfi_trap mutually exclusive.
- Some confusion about skip option
- Is this repo no longer active?
- syntax error in quickstart HOT 1
- RV32I and RV64I
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from riscv-formal.