Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

are rvfi_valid and rvfi_trap mutually exclusive. #56

Open
eroom1966 opened this issue Jan 19, 2022 · 0 comments
Open

are rvfi_valid and rvfi_trap mutually exclusive. #56

eroom1966 opened this issue Jan 19, 2022 · 0 comments

Comments

@eroom1966
Copy link

Hi

in the description of the interface, rvfi_valid is said to indicate the following

  1. When the core retires an instruction, it asserts the rvfi_valid
  2. The signals are only valid during such a cycle and can be driven to arbitrary values in a cycle in which rvfi_valid is not asserted.

later

rvfi_trap must be set for an instruction that cannot be decoded as a legal instruction, such as 0x00000000.

The purpose if the rvfi_trap is to indicate an exception, an instruction which causes an exception, by definition does not retire.
But this contradicts the previous statement, a good example is the misaligned LD/ST

If I have the following instruction (assuming the implementation does not support misaligned LD/ST)
lw x1, x0(1)

This will take an exception, and X1 will not update as the instruction does not complete (retire)
How can this be described in the interface, as it should be the following
rvfi_valid=0, rvfi_trap=1, ....

But this would be ignored as rvfi_valid is 0

If rvfi_valid indicates a retirement, and rvfi_trap indicates an exception - then these two signals must surely be mutually exclusive ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant