如何获得封面的句柄,以便我可以使用该句柄调用方法? 首先,我需要知道封面点的类型,以便我可以实例化句柄。
以下是一个例子:
class my_coverage_class;
rand bit my_coverpoint;
covergroup my_covergroup;
option.per_instance = 1;
coverpoint my_coverpoint;
endgroup
function new;
my_covergroup = new;
endfunction
endclass: my_coverage_class
program automatic testbench;
initial begin
my_coverage_class inst = new();
begin
var type(inst.my_covergroup.my_coverpoint) cp
= inst.my_covergroup.my_coverpoint; // BREAKS HERE
cp.get_inst_coverage();
end
end
endprogram // testbench
当我使用VCS 2013.06运行上述内容时,我得到:
Error-[NYI] Not Yet Implemented
testbench, 16
Feature is not yet supported: Type operator not supported
注意:当我运行$display("%s", $typename(inst.my_covergroup.my_coverpoint))
时,我会获得<unknown>
答案 0 :(得分:1)
根据错误消息,您的模拟器尚不支持type
。即使它确实如此,我也看不到任何IEEE Std 1800-2012表明可以有coverpoint
的句柄。如果您的模拟器支持covergorups
的句柄,那么您应该能够执行以下操作:
package my_package;
covergroup my_cover_group(bit cp);
option.per_instance = 1;
coverpoint cp;
endgroup
class my_coverage_class;
rand bit my_coverpoint;
my_cover_group my_covergroup;
function new;
this.my_covergroup = new(this.my_coverpoint);
endfunction
endclass: my_coverage_class
endpackage : my_package
program automatic testbench;
import my_package::*;
my_cover_group covgrp_handle;
initial begin
my_coverage_class inst = new();
begin
covgrp_handle = inst.my_covgrp;
covgrp_handle.cp.get_inst_coverage();
end
end
endprogram // testbench
其他选项是使用宏(例如:`define cp inst.my_covergroup.my_coverpoint
)。这适用于所提供的测试用例,但如果用于处理许多(可能是唯一的)实例/封面组/封面点,则它不是很灵活。