this question is best answered here nowhere else, ur approach to explain pictorially with diagrams make us easy to relate things and understand the flow very well.. Keep uploading more such videos. Thanks alot
How does the driver handles if the DUT is giving more then one or out of order responses back, how the driver send same response back to original sequence and not any other sequence?
Hi Ken. I have few queries, 1)What is the argument passed in item done function? 2) when we use item_done () with and without argument in our environment?
Hi Naseem, 1) Item done take a ref of the sequence item that has finished running. 2) Item done is typically called without an argument, when you call it from within the sequence item itself and is called with an argument when called from outside the seq item
What was the idea behind having sequencer? In most cases it looks like an extra layer without good purpose. Most of sequencers implementations I saw were plain proxy between sequencer and driver. Sequencer layer weren't doing any work. I would say it only make sense if you actually have an arbitration based on priority or you have to control sequencer e.g. by purging FIFO when reset or end of the test comes.
there are multiple reasons, the first as you mentioned providing a arbitration for sequence request and grand. second, sequencer provide a hierarchical component for sequence, if you wanna pass some config setting, sequence can retrieve the seqr handler to config your transaction in running time. Then if you are trying to implement some complicate sequence like layer sequences, sequencer offer a convenient way to implement that.
@@kuangquan08 1. what do you mean by layer sequences? 2. I don't see why configuration idea is good unless that is runtime driver specific configuration (there are better uvm ways, imo for other configurations). Then, again, why don't use driver for that type of configuration? I believe arbitration argument is good other arguments not so much convincing.
The transactions to the DUT are initiated by the sequencer. The driver's start item method is called by the sequencer in order to submit the transaction to the DUT. The item done function on the sequencer is then called by the driver to signal that the transaction is finished after it has waited for a response from the DUT.
1) While using second option of handshake(using get and put method in driver side), whether finish_item() in sequence is non blocking func? If yes, then how its blocking for 1st approach and non blocking for 2nd approach? 2) During 2nd approach, what will happen to rsp port? Can you please explain how port will work in both approach?
HI Tejasvi, the main things to remember in this question is the order of method being called and their names. TLM connection related details i.e. uvm_sequence_item_pull_port/export) between sequencer and driver can be ignored if the question is just about the handshake between sequence, sequencer, driver and dut. But you do need to know which methods/tasks belong to sequence (start_item/finsih_item) and driver (get_next_item/item_done). and whether they are blocking or not.
this question is best answered here nowhere else,
ur approach to explain pictorially with diagrams make us easy to relate things and understand the flow very well.. Keep uploading more such videos.
Thanks alot
Glad it helped
Yes your pictorial representation makes it very easy to grasp the concepts. This topic is best explained here.
thank you for your videos.....it is heplful alot
Glad to hear that
Thank you.
You're welcome!
How does the driver handles if the DUT is giving more then one or out of order responses back, how the driver send same response back to original sequence and not any other sequence?
Hi Ken. I have few queries,
1)What is the argument passed in item done function?
2) when we use item_done () with and without argument in our environment?
Hi Naseem,
1) Item done take a ref of the sequence item that has finished running.
2) Item done is typically called without an argument, when you call it from within the sequence item itself and is called with an argument when called from outside the seq item
What was the idea behind having sequencer?
In most cases it looks like an extra layer without good purpose.
Most of sequencers implementations I saw were plain proxy between sequencer and driver. Sequencer layer weren't doing any work.
I would say it only make sense if you actually have an arbitration based on priority or you have to control sequencer e.g. by purging FIFO when reset or end of the test comes.
there are multiple reasons, the first as you mentioned providing a arbitration for sequence request and grand. second, sequencer provide a hierarchical component for sequence, if you wanna pass some config setting, sequence can retrieve the seqr handler to config your transaction in running time. Then if you are trying to implement some complicate sequence like layer sequences, sequencer offer a convenient way to implement that.
@@kuangquan08 1. what do you mean by layer sequences?
2. I don't see why configuration idea is good unless that is runtime driver specific configuration (there are better uvm ways, imo for other configurations). Then, again, why don't use driver for that type of configuration?
I believe arbitration argument is good other arguments not so much convincing.
Who will initiate the transaction driver or sequencer? Most of them say driver why? Is it because we connect port to driver and export to sequencer?
The transactions to the DUT are initiated by the sequencer. The driver's start item method is called by the sequencer in order to submit the transaction to the DUT. The item done function on the sequencer is then called by the driver to signal that the transaction is finished after it has waited for a response from the DUT.
1) While using second option of handshake(using get and put method in driver side), whether finish_item() in sequence is non blocking func? If yes, then how its blocking for 1st approach and non blocking for 2nd approach?
2) During 2nd approach, what will happen to rsp port? Can you please explain how port will work in both approach?
pre_do(),post_do(),mid_do() why these methods are calling when the seq is calling?can you explain these methods .thank you
hi Gana,
Added it to my list.
Why configuration database is used?...can you explain
Hi Tejasvi , added it to my list. Will upload a video soon. Thanks
make make video on AXI
Thanks, Could you describe the raise objection and drop objection mechanism in next video, looking forward for that.
Added to my list. Will upload soon.Thanks
what are handshaking signals ?...should we exactly explain all the setup
HI Tejasvi, the main things to remember in this question is the order of method being called and their names. TLM connection related details i.e. uvm_sequence_item_pull_port/export) between sequencer and driver can be ignored if the question is just about the handshake between sequence, sequencer, driver and dut. But you do need to know which methods/tasks belong to sequence (start_item/finsih_item) and driver (get_next_item/item_done). and whether they are blocking or not.
@@KenIntQ thanks for explaining