The crooked ways of UVM's register model's coverage methods
"Welcome to the world of Coverage" I have been dabbling now for a couple of weeks with coverage. Working my way through the SV LRM, looking at some examples and running a few simple cases. My first case was some protocol coverage. We wanted to verify certain types of traffic are getting through the design. I extended a uvm_subscriber for that purpose, added a covergroup as part of the class, instantiated the covergroup in the new function of the class and called the sample function in the write function of the subscriber: class my_coverage_collector extends uvm_subscriber #(trans_type); ... covergroup my_covergroup; .... endgroup function new ( string name = "my_coverage_collector", uvm_component parent = null); super.new (name, parent) ; my_covergroup = new; endfunction function write(trans_type t); my_covergroup.sample() ; endfunction endclass Si