У меня есть следующий базовый класс:SystemVerilog - идти по всему члену ребенка от родительского класса
class base_transaction extends uvm_sequence_item();
bit [] rand_bit_list;
function int my_randomize(int seed);
....
endfunction: my_randomize()
endclass: base_transaction
Есть несколько классов, который расширяет класс base_transaction.
Есть ли какая-либо опция systemVrilog/UVM для перехода ко всем дочерним элементам (одному из расширенных классов) из функции my_randomize() класса base_transaction?
Я не уверен, что вы имеете в виду. Вы говорите, что существует множество объектов класса _child_class_, и вы хотите их рандомизировать одним вызовом 'my_randomize'? –
@Matthew Taylor - да. – sara8d
Думаю, вам придется реализовать это самостоятельно. Возможно, вы могли бы реализовать статический член, который является очередью самого класса, а затем каждый раз ссылаться на эту очередь каждый раз, когда вы вызываете 'new'. Возможно, вы могли бы иметь статическую функцию, которая выполняет итерацию по очереди и вызывает метод 'my_randomize' в каждом? Я подозреваю, что это возможно. Вы можете задать этот вопрос с помощью тега _design pattern_. (Если вы чувствуете себя храбрым. Вы знаете, что такое переполнение стека. Вероятно, вы совершите несколько ошибок и получите огонь в огне.) –