Jump to content
Sign in to follow this  
noname

Transaction of 2 agents in one sequence

Recommended Posts

Hello,

I have two agents.
A sequence generates an item and send it to the driver of agent1.
Before the driver execute the item I would like create a new item for the second driver according to the first  item. and then I would like to send it to agent2 driver.

I need both driver to start together at the same time to push the signals to the interface according to the items.

hat is the right way to implement this?

Thanks

Share this post


Link to post
Share on other sites

Hi,

 

A common way to achieve this is to have a virtual sequence (i.e. not running on a sequencer that sends sequence items to a driver) that controls the sequences running on both agents. If you only need the sequences to start at the same time, the virtual sequence could call start for each sequence at the appropriate time. If you need to do this periodically, the virtual sequence could grab control of each agent's sequencer and only enable them at the required point in the simulation.

 

Have a look at section 4.8 in the UVM users guide for further information.

 

Regards,

Dave

Share this post


Link to post
Share on other sites

Thank you,

How can a driver control the sequences running? can you refer me any information on this?

and in which function would you send sequence item to the driver (what about wait_for_grant)?

sequence2 is running several times during sequence1 is running.

I need to randomize sequence item1 first and then each time the second sequence start to set the second sequence item according to the first sequence item. 

 

thanks again

Share this post


Link to post
Share on other sites

The driver controls the sequences by sending an acknowledgement back to the sequencer: either implicitly, immediately it has read the transaction by calling set_item_port.get(), or if it calls set_item_port.get_next_item() instead, it must explictly call seq_itme_port.item_done() to send the acknowledgement.

 

I would not usually recommend calling low-level sequence methods such as wait_for_grant - start_item followed by finish_item generally provided sufficient control over when sequence items are sent (if you rally want to use the low-level mechanism, sequence items are sent by send_request).

 

Regards,

Dave

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×