Я попробовал один и тот же код и он печатает сообщения от переопределенного класса. Класс uvm_default_report_server
. Вместо того, чтобы просто uvm_report_server
.
Ниже мой фрагмент кода, который печатает вывод в соответствии с требованиями:
// User report server
class my_report_server extends uvm_report_server;
`uvm_object_utils(my_report_server)
function new(string name="my_report_server");
super.new();
$display("Constructing report serevr %0s",name);
endfunction : new
// Return type is string
virtual function string compose_message(uvm_severity severity,string name,string id,string message,string filename,int line);
// DEBUG MESSAGE
$display("From Super: \n %0s",super.compose_message(severity,name,id,message,filename,line));
//This display comes.
$display("This is from extended class");
endfunction
class test extends uvm_test;
// ... Some stuff here...
// Declare handle here.
my_report_server srv_h;
function void build_phase(uvm_phase phase);
super.build_phase(phase);
srv_h = new();
uvm_report_server::set_server(srv_h);
endfunction
endclass
Одна вещь, которую я хотел бы отметить, это вы объявили ручку внутри build_phase себя. Это может создать проблемы с определением области охвата (хотя с VCS он отлично работает).
Также обратите внимание, что тип возврата compose_message
имеет значение string
. Таким образом, должен быть выход из вашей переопределенной функции. Я добавил отладочное сообщение за то же самое, это печатает по умолчанию форматированное сообщение.
Дополнительную информацию о uvm_report_server можно найти по ссылке this.
Вы используете библиотеку uvm1.2? Я возвращаю строку. – user3510047
Это было на EdaPlayground. Библиотека UVM1.1d. Рабочий пример доступен по [этой ссылке] (http://www.edaplayground.com/x/NzV). Для ** UVM1.2 ** функция 'compose_report_message', доступная по [этой ссылке] (https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.2/html/files/base/uvm_report_server -svh.html # uvm_report_server.compose_report_message). – sharvil111