Jump to content

Using put_response() in driver

Recommended Posts

Hi ,

I don't know what's implemented in your sequences . I guess there are send_request() and get_response() in your sequences.

Then, The driver uses the put(rsp) method to indicate that the sequence_item has been consumed and to return a response, and then the the driver response handler will do the things.

If you had used this way, the sequence needs to follow the finish_item() <the driver will call to item_done() unlocks the finish_item() call in the sequence> call with a get_response() call which will block until the driver calls put(rsp). Then The driver will update the rsp side of the pin level transaction.

BTW, the put() method is not connected with the driver-sequencer request handshaking mechanism.

Edited by Roman
Link to comment
Share on other sites

You must not call put_response() if the driver has not received a request. What response would there be to put?

Also, using put_response() will REQUIRE that sequences call get_response(), otherwise the response queue will overflow.

For simple, in-order, non-pipelined protocols, it is simplest to annotate the request with the response and simply call item_done() and have the sequence assume that finish_item() returning implies that the transaction has completed and contains the response.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...