In reply to shivabachu:
You should be able to declare this array covergroups in a package, interface, or module.
In reply to shivabachu:
You should be able to declare this array covergroups in a package, interface, or module.
In reply to dave_59:
Hi everyone,
Thanks for your quick replies.
Create a wrapper class for covergroup solved the issue. But it seems that array of covergroup could not be declared inside an interface, or possibly it is the difference between Cadence IUS and Mentor ModelSim.
Thanks,
In reply to An Pham:
Hi Dave,
You mentioned a note for "ref" in this line: covergroup skew_val_cg (ref int skew_val_vl); // note the use of a ref argument
why did you have to use “ref” and what is the use of it ?
Thanks,
Madhu
In reply to dave_59:
Hi Dave,
I am facing same problem as An Pham.
When i instantiate an array of covergroup inside an interface it says “Syntactically this identifier appears to begin a datatype but it does not refer to a visible datatype in the current scope.”
Any solution to this ?
In reply to dave_59:
Hi Dave,
To the above class, I added
task test();
foreach(sv_cg[i]) begin
skew_val_vl[i] = 100*i;
sv_cg[i].sample();
end
endtask
and called it for an instance of the class.
When I run vcover report -details <filename.ucdb>, I get 100% result. I also added “option.per_instance=1” to the covergroup definition. Can you tell me, how do I produce overall numbers to accurately reflect my instance coverage?
Covergroup Metric Goal Status
TYPE /por_pub_routing_checker_pkg/skew_val_cg 100.0% 100 Covered
covered/total bins: 4 4
missing/total bins: 0 4
% Hit: 100.0% 100
Coverpoint skew_val_cg::skew_val_vl 100.0% 100 Covered
covered/total bins: 4 4
missing/total bins: 0 4
% Hit: 100.0% 100
bin skew_range_1 4 1 Covered
bin skew_range_2 4 1 Covered
bin skew_range_3 4 1 Covered
bin skew_range_oor 4 1 Covered
Covergroup instance /por_pub_routing_checker_pkg::my_class::sv_cg#1
25.0% 100 Uncovered
covered/total bins: 1 4
missing/total bins: 3 4
% Hit: 25.0% 100
Coverpoint skew_val_vl 25.0% 100 Uncovered
covered/total bins: 1 4
missing/total bins: 3 4
% Hit: 25.0% 100
bin skew_range_1 1 1 Covered
bin skew_range_2 0 1 ZERO
bin skew_range_3 0 1 ZERO
bin skew_range_oor 0 1 ZERO
…
…
TOTAL COVERGROUP COVERAGE: 100.0% COVERGROUP TYPES: 1
In reply to dave_59:
Hello Dave,
Can you please give little hint, how the class will recognise the “skew_val_cg” covergroup.
In my case the class is not recognising the covergroup name.
Please guide and help.
Reagrds
Sunil
*In reply to sunils:*It needs to be in the same scope as the class, or you need to put the covergroup in a package and import it.
Hello Dave,
I need little bit more guidance in knowing the error which i am finding after putting in the same scope as per guide:
class coverage extends uvm_subscriber #(my_seq_item);
`uvm_component_utils(coverage)
my_seq_item tx_cfg;
tx_cfg_cg one[16];
function new(string name = "coverage", uvm_component parent);
super.new(name, parent);
foreach (one[i])
one[i] = new(tx_cfg.AttrID[i]);
endfunction : new
function void write(T t);
tx_cfg = t;
tx_cfg.sample();
endfunction : write
endclass
covergroup tx_cfg_cg (ref int tx_cfg.AttrID);
coverpoint tx_cfg.AttrID {
bins B0 = {8'h21};
bins B1 = {8'h22};
bins B2 = {8'h23};
bins B3 = {8'h24};
bins B4 = {8'h25};
bins B5 = {8'h12};
}
endgroup
The error i am getting is: Line number:4 Invalid type: tx_cfg_cg. Please check the type of the variable one.
Please help.
Thanks and Regards
Sunil Sharma
How to get array of coverpoints?
In reply to sunils:
Types must be declared before use. Move the covergroup declaration before the class that uses it.
Hi,
I have used same scenario in my code. It is working fine. But it is not showing coverage for every instance of covergroup individually in dve tool. It is showing overall coverage of all the instances of covergroup in coverage tool. Can you help me with that?
Thanks,
Mansi Kelawala
In reply to mansi.kelawala:
This is a Mentor sponsored methodology forum not for tool specific help. Please contact your vendor for support.
In reply to mansi.kelawala:
Did you set
option.per_instance = 1;
Then you should see the coverage numbers per instance.
If you did and it is showing still the average coverage numbers then it is an tool issue.
In reply to dave_59:
Hi Dave,
how to write the same covergroup if i want to have many coverpoints inside. can you please show with same example?
With Regards
Ajay
In reply to Ajay2112:
In reply to dave_59:
Hi Dave,
how to write the same covergroup if i want to have many coverpoints inside. can you please show with same example?
With Regards
Ajay
i now understand that ‘ref’ should be written only once. i.e. at the start of argument when passing multiple arguments.
ex-covergroup skew_val_cg (ref int cp1, int cp2, int cp3); // ref argument, only once
coverpoint cp1 {
bins skew_range_1 = {[124:0]};
}
coverpoint cp2 {
bins something = {range};
}
coverpoint cp3 {
bins ~~~~;
}
endgroup : skew_val_cg