Как получить ручку для укрытия?

Как я могу получить дескриптор для точки покрытия, чтобы я мог вызывать методы, используя этот дескриптор? Сначала мне нужно знать тип точки покрытия, чтобы я мог создать экземпляр дескриптора.

Вот пример:

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>

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). Это будет работать для предоставленного тестового примера, однако оно не очень гибкое, если предназначено для работы со многими (возможно, уникальными) типами экземпляров / групп покрытия / точек покрытия.

Другие вопросы по тегам