Error injection in communication protocol – Handling direction
A bidirectional interface have data traffic in two directions. As we had discussed in “Error handling verification of serial communication designs” the error handling is…
A bidirectional interface have data traffic in two directions. As we had discussed in “Error handling verification of serial communication designs” the error handling is defined to cover the imperfections in the physical line. In bidirectional interface two physical lines are used for connecting both the directions. Thus effects of imperfections in physical line in both the directions should to be verified.
DUT Receive side error injection
The physical line connecting DUT’s receive(rx) side to BFM’s transmit side(tx), can be exercised by error injection on the BFM’s transmit side.
This is simple to understand. That’s because BFM provides the control for injecting the errors on it’s transmit side. BFM’s are behavioral models meant for doing this and hence naturally provide this support.
DUT Transmit side error injection
Exercising physical line connecting the DUT’s transmit(tx) side to BFM’s receive side(rx) is tricky. This is tricky because the DUT’s do not do any error injection. Now one might question our focus is verifying DUT what do we gain by doing error injection on DUT’s transmit side? Wouldn’t that be something like verifying the BFM? Answer is NO.
There are cases where the effect of the error’s on DUT’s transmit side in real life usage will become visible to DUT’s receive side. BFM’s error recovery mechanism may send certain transactions for recovery. DUT should be capable of handling this. Isn’t it? Now that we agree it’s required but still the problem is, how do we do error injection on the DUT’s transmit side remains open.
DUT is not expected to do anything wrong. It’s always expected to function in compliance with the specifications. Anything which is not in compliance with the specification is expected to be caught by the checks on the BFM’s receive side. Errors will have to be flagged by the BFM. For certain class of errors the simulations itself should be terminated.
Now that DUT cannot do anything wrong on its transmit side, how do we achieve the necessary error injection for DUT’s transmit side? The answer is BFM. How? BFM is expected to allow error injection on its receive side as well. Yes, BFM should have capability to behave as if the physical line connected to its receive side has seen a error without it really happening. This is how the DUT’s transmit side error scenarios will have to be accomplished.
Now that we understood the error scenarios will have to be exercised on both the directions. You can check out field corruptions to understand what types of error scenarios are to be exercised.