В моем Testbench у меня есть интерфейс, которым мне нужно управлять. Интерфейс может работать в 2 различных режимах, каждый из которых имеет собственный протокол драйвера и тип транзакции.
До сих пор я проектировал оба uvm_agent отдельно. Теперь мне нужен способ поменять местами один или другой, в зависимости от тестового набора, который я запускаю. Я также хочу сделать это так, чтобы это лучше соответствовало философии UVM.
Мой лучший метод, который я мог придумать, это: в моем uvm_env получить параметр uvm_db_config из теста, который говорит либо «ModeA», либо «ModeB», и на основе этого установить is_active для агентов на «UVM_ACTIVE» и «UVM_PASSIVE». "соответственно.
Хотелось бы узнать мнение об этом методе.
Мне был предложен способ сохранить общий uvm_agent и создать экземпляр uvm_driver / uvm_sequencer на основе конфигурации. Не слишком уверен в этом методе, так как он выглядит неаккуратно.