Slave sequence & driver cookbook example

In the APB3 slave agent website, there is code that is available to download. I have downloaded the code and looked it over.
Question: Is there a website that has this code simulated? Meaning, the code is compiled and run through a simulator like modelsim?
Please do let me know know since I’d like to follow the code/signals while it is running.

Website of shared code (It is the single sequence that is tar.gz)
https://verificationacademy.com/cookbook/sequences/slave

Example Download Link
Complete APB3 Slave Agent
Download-tarball.png Download a complete working example related to this page content
(tarball: uvm_slave_agent.tgz)

Thanks in advance !!!

In reply to peegu:
What’s your problem?
This is UVM-1.2 code. Setup your simulator properly and it works perfectly.

In reply to chr_sue:

Could you share a snapshot a waveform with the interface signals?
There seems to be files that are not relevant. Are the 2 files below being used?
apb_if.sv
ef_apb_slave_agent_config.svh

I believe I have compiled it correctly, but when I run it…nothing is happening.

Thanks in advance !!!

Did you give the test name while running? Can you post the code or minimal example?

In reply to peegu:

A lot is happening. But you do not see the waves and the testbench is very quiet. I believe this is your problem.
You do not see the waves because this coding approach is not using the SV interface. Instead it uses the BFM as interface. You can put in to the driver and the monitor more uvm_infos to indicate what is happening.
It’s up to you to judge this approach. I do my UVM environments differently using the virtual interface instead of the BFM.

In reply to chr_sue:

I finally got to see the waveform signals. What timescale are you using?
-timescale=1ns/1ns is this correct?

Also, the apb_listener is giving an error because the transfers do not equal 60.
I do see a repeat(60 in apb_slave_sequence.svh and I added a count there. It seems to be sending 60 transfers, but the apb_listener is not recognizing all 60. Do you know what triggers the “transfers” count in apb_listener?

Thanks in advance !!!

In reply to peegu:

The timescale does not matter as all modules/interfaces have the same one. Because it is not defined the simulator settings are used instead.
I do not see an error and the listener is observing all 60 transactions. Its write method is called by the monitor_bfm.
And I see all (60) transactions for req and rsp.
To summarize: this is a good example as a UVM testbench should NOT be, totally quiet, reporting only number you could somply fake. And it does not follow the basic rule: asap - as simple as possible.
The listener is not needed.
And I do not like bfm approach. In my eyes it makes the code more complicated.
I did not change the code, I was only inserting report commands to visualize the testbench execution.
I could share my could with you if you respond on my email
christoph@christoph-suehnel.de