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