VUnit / vunit

VUnit is a unit testing framework for VHDL/SystemVerilog
http://vunit.github.io/
Other
696 stars 250 forks source link

Drive invalid in AXI VCs #994

Closed LukasVik closed 3 months ago

LukasVik commented 3 months ago

When the 'valid' signal is low for an AXI (-Lite) channel, the signals of the channel should be driven with 'X'. They should not keep their value from the last time the channel was valid. This can hide errors in the DUT if the DUT samples values in the wrong clock cycle.

This change is largely inspired by the AXI-Stream VCs.

Note that this changes the default behavior of the three VCs, so in some sense it is a breaking change. This could be avoided by setting the default value drive_invalid generic to false. Though having it set to true is symmetric with the AXI-Stream VCs. And in my personal opinion it should be enabled in pretty much all cases, to get a stronger test.

LukasVik commented 3 months ago

Note that this is a reopen of #802, which I accidentally closed by deleting my fork, not realizing that this would close the PR. Could not find a way to open that again, so I create this new PR instead.

The diff is exactly the same, which has been reviewed by two people in #802. I have added two commits above, however, that fix some minor formatting and comments.

LarsAsplund commented 3 months ago

I'm ok with these changes but still some work on the test cases to have them pass. At this point, breaking changes are ok since next release is v5.0.

LukasVik commented 3 months ago

Ah sorry, I didn't check CI status. Should be fixed now @LarsAsplund. Thank you!

umarcor commented 3 months ago

See #997.