I am working on DisplayPort Protocol, has two terminologies, Source (Master) and Sink (Slave).
There is 1-bit bi-directional AUX channel which access the DPCD register (which is at sink side).
All data sends serially onto AUX channel.
To read/write from DPCD register, source initiate AUX transaction with appropriate command (read/write), address of DPCD register (let’s say 50h), length (how much sequential locations we want to access from our given address) (let’s say length = 3 means we’ll access 50h, 51h & 52h), data (in case of write operation only).
This request will be got at sink side, and it will process accordingly and generates response transaction, which will have resp (ACK / NACK / DEFER) & read_data (in case of read request only)
My question is, in sink side the AUX request will be sampled in monitor class and to generate according to response I must have that req in sequence class. So how to get that req in sink side sequence back?
- By connecting sink monitor to the sequencer and send it to the sequence?
- By connecting sink monitor to the sink driver and from driver send it to the sequence by using method put() method or seq_item_port.item_done(rsp)?
Which one is better and Why?
My point of view is 1st approach I have to use, because in 2nd approach the response data should sample directly from the interface to the driver. That is the correct practice for it right ?