Делаю тестовый пример для демонстрации внедрения UVM.
Есть класс на базе uvm_scoreboard. В нем есть два порта:
Код
uvm_analysis_imp #(uart_item, uart_sb) transmitted;
uvm_analysis_imp #(uart_phy, uart_sb) received;
Специально сделал двух разных типов, чтобы можно было сделать две функции write - одна с типом uart_item, вторая с типом uart_phy. Но UVM жалуется, что нельзя дважды одну и ту же функцию определять.
Как же тогда принимать item-ы из разных источников, чтобы их сравнивать???
Пробовал с одной функцией write, с одним типом данных, т.е. всего-лишь один объект типа uvm_analysis_imp.
В итоге часть сообщений теряется, затем дублируются лишние старые. Явно работает не так как надо.
Я пытаюсь подключить два uvm_monitor к одному scoreboard (а почему бы и нет?). Если подключать только один монитор к scoreboard - то в обоих вариантах всё работает как надо.
UPDATE: В этом документе
https://www.testandverification.com/DVClub/...es-Francois.pdf нашел вроде как решение.
Позволяет иметь два и более write при помощи uvm_analysis_imp_decl. Но оно почему-то все равно пропускает первый и дублирует последний item в моем тесте. Видимо проблема в логике, а не самом UVM.