vunit
vunit copied to clipboard
Drive invalid in AXI VCs
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 changed 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.
Looks good to me! Added a small comment on an unused constant.
@LarsAsplund Sorry to ping you like this, but would it be possible to merge this? It has been reviewed by Ludvig.
LGTM too. I would even say that this should not be a generic settings as it should be the default behaviour. Maybe for v5.0? But for the next minor release, yeah we need that generic.
@LukasVik Sorry for the delay. It's in the pipe but unfortunately I haven't had time to work on that pipe. Been more of that lately so I will deal with shortly... I hope
@LarsAsplund No problem at all, I know how it is.
@std-max Well with the default value true of the drive_invalid generic it is the default behavior. Which is a breaking change since the ports used to keep their value before. The generic configuration, and the default behavior, is now symmetric with the AXI-Stream verification components.
With that said, I agree with you in the sense that I personally will always leave the drive_invalid generic as true. Off the top of my head I can not think of a scenario where I would not. But perhaps I am missing something.
I rebased the source branch upon upstream master in order to solve a merge conflict. No functional changes apart from that. Is ready for review/merge.