I am getting a Compilation error *Error-[NYI] Not Yet Implemented
cov_c.sv, 358
Feature is not yet supported: Select of an interface array accessed through
virtual interface XMR connected to task/function ref-port is not yet
supported
*
How can i overcome this.
I modified the interface as
interface cov_if
bit [1:0] rate_0;
bit [1:0] rate_1;
assign rate_0=top.rtl.rate[1:0];
assign rate_1=top.rtl.rate[3:2];
....
endinterface
class cov_c extends ovm_component
virtual cov_if cov_if_inst;
cg_rate cg_rate_inst[15:0];
function void build_phase
cg_rate_inst[0]=new(cov_if_inst.rate_0);
cg_rate_inst[1]=new(cov_if_inst.rate_1);
.....
cg_rate_inst[15]=new(cov_if_inst.rate_15);
endfunction
endclass
It is working fine.But what is the Best approach to reduce the code
It is painful job to create 15 instances.
I just gave one example of Rate.There are so many signals like that i need to declare.
Any Expert Advice please.
The problem may be at the “ref” feature at covergroup. Why do you need “ref” at covergroup? Covergroups are just collectors, they shouldn’t change the sample values.
Just my guess, interface in SystemVerilog is a special type. In some cases it behaves like a module. Meanwhile, “ref” is a feature of class. So it depends on if the simulator supports this feature. I don’t know which simulator you are using, but it seems that the feature is not supported by your simulator.
IO observed if i didnot give “ref” it is not sampling properly.
If we use a single instance , i think it will work without “ref”.
As i am usign multiple instances, it is not workign withour “ref”