Tsegorah 0 5 марта, 2022 Опубликовано 5 марта, 2022 · Жалоба Здравствуйте. У меня есть модуль с массивом интерфейсов в портах. Как передать этот массив в тест? Я создал ещё один параметризованный тип интерфейса, где параметр - число исходных интерфейсов. Всё компилится, но, когда я запускаю симуляцию, моделсим пишет, что "illegal assignment to type 'virtual UDDCP_interface_arr' from type 'interface UDDCP_interface_arr #(11)". Видимо, мне надо как-то передать параметр внутрь блока program, чтобы при этом параметр был виден уже в портах. Я попытался это сделать, но так не компилится, выдаёт ошибку из-за того, что рараметр объявлен позже, чем используется: program test(UDDCP_interface UDDCP_rout, UDDCP_interface_arr #(p) UDDCP_inputs, additional_ports add_ports); parameter p=11; ... Можно как-то сделать параметризованные порты у program? Я не нашёл примеров. Или вообще можно не городить огород, а просто как-то передавать массив интерфейсов через программу в объект класса? На всякий случай файлы исходников прикреплю. new.7z Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 5 марта, 2022 Опубликовано 5 марта, 2022 · Жалоба Судя по коду, у вас тестбенч в UVM-like стиле. Тогда мне не ясно зачем вам вообще модуль program? Объявили интерфейсы, сделали на них указатели и передали их в драйвер через env. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tsegorah 0 5 марта, 2022 Опубликовано 5 марта, 2022 (изменено) · Жалоба 1 час назад, des00 сказал: Судя по коду, у вас тестбенч в UVM-like стиле. Тогда мне не ясно зачем вам вообще модуль program? Объявили интерфейсы, сделали на них указатели и передали их в драйвер через env. Так было в примере. Насколько я понял, так сделано потому, что program исполняется в отдельном timing region, чтобы избежать гонок с тестируемым модулем. Исправил вложение, чтобы точно компилилось моделсимом. new.7z Изменено 5 марта, 2022 пользователем Tsegorah Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 5 марта, 2022 Опубликовано 5 марта, 2022 · Жалоба 1 minute ago, Tsegorah said: Так было в примере. Насколько я понял, так сделано потому, что program исполняется в отдельном timing region, чтобы избежать гонок с тестируемым модулем. т.е. это не ваш пример? Просто program одно время много кто использовал. Потом все от это этого ушли на работу с clocking_block. В вашем случае, я бы назначил в топе указатели на интерфейсы и уже их передал в programm. По идее должно работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tsegorah 0 5 марта, 2022 Опубликовано 5 марта, 2022 · Жалоба Разобрался. Только написал на форум, как всё заработало. new.7z Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tsegorah 0 5 марта, 2022 Опубликовано 5 марта, 2022 · Жалоба 40 минут назад, des00 сказал: т.е. это не ваш пример? Просто program одно время много кто использовал. Потом все от это этого ушли на работу с clocking_block. В вашем случае, я бы назначил в топе указатели на интерфейсы и уже их передал в programm. По идее должно работать. Вы говорите "все ушли". Есть какое-то сообщество системвериложников со своей модой и традициями? Как его найти? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 5 марта, 2022 Опубликовано 5 марта, 2022 · Жалоба Just now, Tsegorah said: Вы говорите "все ушли". Есть какое-то сообщество системвериложников со своей модой и традициями? Как его найти? Эмм, да это я образно выразился. Когда SV пошел, во всех статьях и книгах был program, а если посмотреть текущую литературу, там такого нет. Именно сообщества я не знаю, а так, ресурсы всякие есть. Из недавнего я в UVM снова погрузился, UVM – ClueLogic вот эта ссылка мне помогла быстро вспомнить что там и к чему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться