Chapter 11 – Running the simulation

To run the simulation, we simply execute the provided Makefile in the GitHub repository:

$ make -f Makefile.vcs

The testbench will generate random inputs and then those inputs will be sent to the DUT. The monitors will capture the data in the communication bus and make a prediction of the expected result. Finally the scoreboard will evaluate the functionality by matching the DUT’s response with the prediction made by one of the monitors. If the DUT and the prediction match, an “OK” message will be outputted, otherwise, we will se a “Fail” message.

So, in the output of the simulation, we must find for the messages starting with UVM_INFO because the compare() method from the scoreboard is going to print a message using the macro `uvm_info() with the result of the test.

The result of the simulation can be seen below:

***********       IMPORTANT RELEASE NOTES         ************

You are using a version of the UVM library that has been compiled
with `UVM_NO_DEPRECATED undefined.
See http://www.eda.org/svdb/view.php?id=3313 for more details.

(Specify +UVM_NO_RELNOTES to turn off this notice)

UVM_INFO @ 0: reporter [RNTST] Running test simpleadder_test…
UVM_INFO simpleadder_scoreboard.sv(49) @ 70: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 130: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 190: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 250: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 310: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 370: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 430: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 490: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 550: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 610: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 670: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 730: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 790: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO simpleadder_scoreboard.sv(49) @ 850: uvm_test_top.sa_env.sa_sb [compare] Test: OK!
UVM_INFO ../uvm-src/uvm-1.1d/src/base/uvm_objection.svh(1268) @ 900: reporter [TEST_DONE] ‘run’ phase is ready to proceed to the ‘extract’ phase

— UVM Report Summary —

** Report counts by severity
UVM_INFO :   16
UVM_WARNING :    0
UVM_ERROR :    0
UVM_FATAL :    0
** Report counts by id
[RNTST]     1
[TEST_DONE]     1
[compare]    14
$finish called from file “../uvm-src/uvm-1.1d/src/base/uvm_root.svh”, line 430.
$finish at simulation time                  900
V C S   S i m u l a t i o n   R e p o r t
Time: 900 ns
CPU Time:      2.040 seconds;       Data structure size:   0.2Mb

 

This chapter concludes this beginner’s guide. You can access all the code in this repository.