Jump to content

Enabling inbuilt UVM RAL coverage sampling

Recommended Posts



I want to use in-built UVM RAL cover groups.

I tried following steps but did not help :


1) Enable coverage building:

     Before building register model, I use following :



2) To enable sampling :



In my regmodel there are two types of cover groups: UVM_CVR_ADDR_MAP in top level register model and UVM_CVR_REG_BITS in individual registers.


I was hoping that UVM_CVR_ALL would enable sampling of all.


I could see cover groups getting built but are not sampled.


Am I missing something ?


Please let me know.



Share this post

Link to post
Share on other sites



to collect coverage you need


1. the reg model needs to declare the coverage models via build_coverage(<mask>) in the ctor of the uvm_reg's 

2. in the uvm_reg ctor the coverage model needs to be constructed conditionally via if(has_coverage(..)) <covgroup> = new();...

3. before building the reg model you need to set uvm_reg::include_coverage(...) to say which models you want to be constructed

4. eventually you need to tell the sv compiler to enable coverage collection


(now you should see at least empty coverage)


and finally you need to wire the events/sample calls and trigger the collection.



Share this post

Link to post
Share on other sites


I'm facing a similar issue. I'm seeing an empty coverage dump. I have done 1-4 steps as suggested above..i have also called sample_values() function from base test run phase

I'm not sure .. sample called worked or not...




Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now