TLM works in scoreboard

Dear All,

After implementation 2 TLM Analysis port in my scoreboard, I could get a log which was 2 TLM write() functions worked in my scoreboard.
In my scoreboard there are 2 2 TLM Analysis port, my_apb_drv_data_imp, my_apb_mon_data_imp.

Basically, I though that write_my_drv_data_imp function will work firstly then write_my_mon_data_imp function work. But I got a different log from my scoreboard.

In log, write_my_mon_data_imp function worked at the first time then write_my_drv_data_imp write function worked in log. I think it does not make sense because the monitor works through the driver not vice versa. I mean basically the driver send the transaction into the DUT then the monitor will capture the all transaction and send it into the scoreboard.

And I found the “How TLM Works Session” in verificationarcademy.com.

Choice 1: Use imp suffixes defined via macro
• Declare macros outside of component
• Instantiate suffixed imps
• Implement write_SUFFIX methods
Write methods are functions
• Can’t synchronize between streams

So I’m confused whether write() functions can’t synchronize between streams in “Use imp suffixes defined via macro” method.
Can I ignore about the order between stream?, why(when) do we use “Use imp suffixes defined via macro” method in scoreboard?

For reference code : I was made (1) - EDA Playground

In reply to UVM_LOVE:

your problem is you dont have a synchronizing event in monitor to sample all the signals. you just have a forever which collects all the signals at every clock. See the fixed code here. I dont understand why you have TLM from driver to scoreboard, it looks you can collect all those from monitor itself.

In reply to rag123:

In reply to UVM_LOVE:
your problem is you dont have a synchronizing event in monitor to sample all the signals. you just have a forever which collects all the signals at every clock. See the fixed code here. I dont understand why you have TLM from driver to scoreboard, it looks you can collect all those from monitor itself.
(2) - EDA Playground

Thank you for giving me insight about “synchronizing event”. I got your point. Really Thank you.