У меня есть последовательность регистров SPB, которая устанавливает значения аппаратных регистров в конкретной конфигурации. Значения этой конфигурации используются последующей последовательностью DAI путем присвоения значений регистра значениям последовательности DAI. Мне удалось это правильно, используя следующий код для присвоения значений регистра временным целым числам, которые будут использоваться для ограничения последовательности DAI:
task assign_reg_value();
`uvm_info ("VIRT_SEQ_MODEL_PRINT", $sformatf ("Initial Register Setup : %s", ljf_reg_wr_seq.model.sprint()), UVM_LOW)
//------------------------------------------------------------------------------------------------------
//Get the register field value and assign it to the temporary variable. These are used for the serial
//sequence
//------------------------------------------------------------------------------------------------------
//DAI_CTRL
seq_ser_format = ljf_reg_wr_seq.model.DAI_CTRL.format.get();
//MORE LINES SIMILAR TO ABOVE HERE
endtask
Однако в случае запуска более одной последовательности регистров для разных конфигураций в одном моделировании мне требуется метод обобщения вышеуказанной задачи таким образом, чтобы он принимал аргумент имени последовательности. Без этого мне пришлось бы реплицировать ~ 50 строк кода и изменить имя последовательности. В приведенном ниже псевдокоде показана необходимая мне функциональность:
seq_ser_format = <seq_name>.model.DAI_CTRL.format.get();
Я предполагаю, что есть способ сделать это, установив имя последовательности регистров в базе данных конфигурации перед ее запуском, а затем извлекая ее из задачи после ее завершения. У кого-нибудь есть предложения по этой реализации? Можно ли это сделать с помощью базы данных конфигурации?