AHB Issues
-Aviral Mittal
Connect @ https://www.linkedin.com/in/avimit/

While Debugging a Multilayered AHB bus, I found that the Salve was accepting a transfer, before the
Master has a chance to accept the transfer.
This should be taken into account in any AHB multi-layer design.
The story is something like this:

The Master issues a transaction to address A,
The Master is asked to wait soon after accepting the address phase A, but the Master issues the
address phase B, now the hready towards this mater is still low, but somehow this B address appears
to the slave with HTRANS = 2, and HSEL = 1, the slave accepts this transaction, and responds to it.
This did not seemed right to me. I think the slave should have somehow seen that the hready towards
the master is low, and the hready towards the slave should have seen this hready and have not responded
alternatively, the HTRANS shouldn't have been 2 towards this slave. Either way this is a corner case
and must be looked at.

A. The answer to this situation is: The Hready towards the Slave with Address B, should see hready towards
it being low, and it MUST not respond, till hready towards it gets '1'.
So in a multilayered design, the Hready from 'current' slave must be routed back to the master it is interacting with,
and this hready must also be routed to the Slave with address B, since this master has now issued address phase
to Slave B. This can be simple to implement, as the address decode will produce HSel For slave B, and using this
the Hready from Slave A can be routed to Slave B.

Apparently there is also a issue with 'Locked' transfers. This requires special treatment,
Looks like an IDLE cycle must be inserted, after locked transfer before the master starts another one,
to accommodate the 2 cycle error,split, retry response or only error response in case of AHB Lite.

<-Prev                                             Next ->


KeyWords: AHB Issues, AHB debug AHB Simulation debug. AHB verification, AHB locked AHB corner cases.