Open kliuMsft opened 10 months ago
I have been able to run some DII/TestRIG tests against the sail
model with a handful of hacks in place:
freg
s from the rvfi
simulator target.Unfortunately, it is not particularly robust, as might be expected from heretofore untested code. The much less structured random
test in TestRIG elicits "Assertion failed: invalid current privilege". I'll raise a separate issue for that.
- Adding a status-dump pseudo-instruction so that we can dump all architecturally visible registers and use that as a checkpoint against RTL simulation.
That might be tricky... for all the wires that RVFI does define (including all CSRs...), I think it doesn't define shipping out the entire (GP) register file, just those in use by the current instruction. Of course, we can do anything we want, model-wise, to fake it, but it's just... another shortcoming of RVFI.
I see - is the trace generation in sail tied to RVFI? I am hoping we can just dump everything and do a trace file comparison rather than relying on RVFI packets..
I see - is the trace generation in sail tied to RVFI? I am hoping we can just dump everything and do a trace file comparison rather than relying on RVFI packets..
AFAIK yes, there is no existing support for traces other than ad hoc textual printouts and RVFI. It's part of why I was looking at Nexus 5000 last week, because neither of those are very satisfactory answers.
- "No support for RV32E" can be worked around by just commenting out the high register selector values
A better fix is 0c38f6b2ded3828647e588e3f95f28a2a624f78a, which hackishly, but hopefully correctly, models these high selector values as raising illegal opcode traps, rather than crashing the simulator. :)
The following features when in DII mode are needed in order to use the sail model in the design verification flow.