Я пытаюсь написать пакет, который включает некоторые общие задачи и функции для использования тестовой среды. Например,получить виртуальный интерфейс один раз в пакете
package test_misc_pkg;
`include "uvm_macros.svh"
import uvm_pkg::*;
task wait_rest();
virtual test_if test_vif;
if (!uvm_config_db #(virtual test_if)::get(null, "uvm_test_top.env", "test_vif", test_vif))
`uvm_fatal("NOVIF", "virtual interface should be set")
@(posedge test_vif.clk);
//do something...
endtask
endpackage : test_misc_pkg
Затем тест окр может просто вызвать wait_rest() после импорта test_misc_pkg.
Но, если есть другая задача, используйте те же test_vif, мне все равно нужно получить db в начале каждого задания. Мой вопрос: можем ли мы просто получить uvm_config_db один раз в пакете, пусть все задачи могут напрямую использовать test_vif?
Или, лучший способ сделать это?
Спасибо.
Да, я пытаюсь уменьшить ненужный uvm_config_db :: get() и сохранить код чистым. Возможно, я могу написать подзадачу для проверки переменной null или нет и поместить ее в каждую задачу перед использованием. Спасибо за ваш комментарий. – DexterH