Рассмотрим следующий код:
class my_class;
// *** constructor
function new(string name = "");
super.new(name);
endfunction
// ** my_function
function void my_function();
static int my_static_int = 0;
my_static_int++;
$display("my_static_int = %0d", my_static_int);
endfunction
endclass
В моем коде предположим, что у меня есть последовательность с телом -
// ** body
task body();
my_class my_class_A = new;
my_class_A.my_function();
endtask
Моя проблема в том, что если бы я дважды вызывал body
из своего теста, во второй раз my_static_int
имел значение 2 вместо того, что я ожидал, которое равно 1.
Поскольку my_class_A
уничтожается при каждом запуске тела (я проверяю это с помощью %p), не должен ли последующий запуск совершенно другого объекта my_class
снова печатать значение 1
Может быть, здесь не хватает моего понимания. Любая помощь приветствуется