Hi,
I have some questions regarding the dual-ready protocol:
1) Is the transmitter required to keep TransmitReady asserted
once it has asserted it until ReceiveReady is seen asserted
or is it allowed to deassert TransmitReady even if
ReceiveReady is not seen asserted. Of course, no message
is transferred in this case.
2) Similarly, is the receiver required to keep ReceiveReady
asserted once it has asserted until TrasnmitReady is seen
asserted or is it allowed to deassert ReceiveReady even if
TransmitReady is not seen asserted. Again, I am not
expecting messages to be transferred in this case.
3) On an input port, when TransmitReady is asserted, the message
vector is stable and carries valid data, i.e., the
transactor/BFM can sample it and use it even if it does not
assert ReceiveReady. Correct? Once the transactor asserts
ReceiveReady, the transactor must assume the message will
change on the next rising edge of uclock.
4) On an output port, when TransmitReady is asserted, the
transactor is required to drive the message vector with
what it wants to send. This is intentionally vague, because
the transactor may want its message to be a sampling of
some internal state that can potentially vary every clock
cycle. But, regardless of this wrinkle, the implementation
is allowed to assume the transactor is holding the message
data and is not required to sample the message data on the
rising edge of TransmitReady. Correct?
Re 1 and 2 above, these have some bearing on the message ordering
discussion. For instance, if a transactor is allowed to cancel
a TransmitReady on an output port, the port should lose its place
in the queue of ports pending to be serviced. If ordering is
strict, this is harder to implement than if ordering is loose.
Per
Received on Fri Mar 12 07:22:54 2004
This archive was generated by hypermail 2.1.8 : Fri Mar 12 2004 - 07:23:04 PST