Указатель для нашей среды проверки - это один класс для каждого файла.Поддерживает ли UVM вложенные/внутренние классы?
Иногда a uvm_object
нужен только 1 другому uvm_component
, поэтому, следуя объектно-ориентированной теории, мы должны использовать вложенные/внутренние классы.
Вложенные классы полностью поддерживаются SystemVerilog. Однако поддерживаются ли они UVM?
Можно ли собрать что-то вроде следующего:
class inception_level_1 extends uvm_test;
`uvm_component_utils(inception_level_1)
function new(string name = "inception_level_1", uvm_component parent = null);
super.new(name, parent);
endfunction
class inception_level_2 extends uvm_object;
int a;
`uvm_object_utils_begin(inception_level_2)
`uvm_field_int(a, UVM_DEFAULT)
`uvm_object_utils_end
function new(string name = "inception_level_2");
super.new(name);
endfunction
endclass
endclass
В настоящее время выше код дает ошибку компиляции:
** Error: testbench.sv(20): (vlog-2889) Illegal to access non-static method 'uvm_report_warning' outside its class scope.
Полный пример кода здесь: http://www.edaplayground.com/x/3r8
В моем случае мне нужна только автоматизация поля для методов 'print' и' sprint'. Полагаю, что я мог бы вручную выполнить обратный вызов do_print. –
Как указывает Дэйв выше, вам будет лучше обслуживать, поставив эти два класса в пакет. Это также имеет то преимущество, что он более удобен в обслуживании, поскольку он является стандартным способом его выполнения. – nguthrie