1
\$\begingroup\$

There is requirement to send transactions (tr) from a uvm_component to a BFM, a uvm_driver. But, there are multiple "imp" ports from component. I am planning to write a task to get transactions from those ports and run them on sequencer like below.

enter image description here

The current idea is to write something similar to the pseudo-code below in the task,

fork
 forever begin
  tr tran;
  tlm_c1.get(tran);
  // add transaction delay
  sequencer_handle.execute_item(tran);
 end 
 forever begin 
   tr tran;
   tlm_c2.get(tran);
   // add transaction delay
   sequencer_handle.execute_item(tran);
 end
join none

Will it work? Any suggestions would be appreciated.

\$\endgroup\$
1
  • \$\begingroup\$ Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking. \$\endgroup\$
    – Community Bot
    Commented Mar 11 at 22:15

1 Answer 1

0
\$\begingroup\$

There are a couple of approaches that come to mind.

  1. UVM TLM FIFO

This class provides storage of transactions between two independently running processes.

  1. UVM Virtual Sequencers

Tests that require coordinated generation of stimulus using multiple driving agents need to use virtual sequences.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.