This is a demo of the SimpleRegModel package used in a uvm testbench.
The SRM package provides several advantages over the uvm_reg package that is shipped with uvm. The demo focusses on showing how a block level sequence can be reused unchanged across multiple testbench hierarchy and different access mechanism.
Details about the designs and testbenches can be found here
Running the demo requires that you have already installed the following software.
-
Recent version of Verilog Simulator like vcs. I have tested it with vcs/2014.03-SP-3
-
UVM
Ensure that the env variable UVM_HOME is pointing to the installation directory like below.
>ls $UVM_HOME
bin docs examples LICENSE.txt README.txt release-notes.txt src UVM_Reference.html
- Simple Reg Model Download the release file srm-0.2.tar.gz and untar it in a install directory. Ensure that the env variable SRM_HOME is pointing to the installation directory.
>ls $SRM_HOME
examples License.txt README.txt src SRM_Reference.html
Download the tar file from release area.
Say the tar file is srm_sap-0.1-alpha.tar.gz
Untar and setup the env variable SAP_HOME
tar xvzf srm_sap-0.1.tar.gz
cd srm_sap-0.1-alpha
setenv SAP_HOME `pwd` // For CSH
export SAP_HOME=`pwd` // For Bash
At this point the following should be true.
>ls $SAP_HOME
agents blockA docs my_setup.csh notes.md README.md sap1 sap2
To run the blockA testbench, run the target 'run_vcs' in the run directory,
cd $SAP_HOME/blockA/run
make run_vcs
The test spawns a basic sequence that writes and reads the register and the table.
To run the SAP1 testbench, run the target 'run_vcs' in the run directory,
cd $SAP_HOME/sap1/run
make run_vcs
Note that the test in the SAP1 testbench spawns the same sequence from the block level test. No changes are done to the sequence, yet it runs on different adapters. It is spawned on the host agent just like real world. If faster simulation time is desired, we can spawn it on the internal block PIO bus. If backdoor path is known then we can even directly program the registers in zero time.
To run the SAP2 testbench, run the target 'run_vcs' in the run directory,
cd $SAP_HOME/sap2/run
make run_vcs
As before, the test in the SAP2 testbench spawns the same sequence from the block level test. No changes are done to the sequence, yet it runs on different adapters like in SAP1, but targetted towards different instances of SAP1.