Перейти к содержанию
    

Как использовать интерфейс с параметрами в systemverilog?

Здравствуйте.
У меня есть модуль с массивом интерфейсов в портах. Как передать этот массив в тест? Я создал ещё один параметризованный тип интерфейса, где параметр - число исходных интерфейсов. Всё компилится, но, когда я запускаю симуляцию, моделсим пишет, что "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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя по коду, у вас тестбенч в UVM-like стиле. Тогда мне не ясно зачем вам вообще модуль program? Объявили интерфейсы, сделали на них указатели и передали их в драйвер через env. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, des00 сказал:

Судя по коду, у вас тестбенч в UVM-like стиле. Тогда мне не ясно зачем вам вообще модуль program? Объявили интерфейсы, сделали на них указатели и передали их в драйвер через env. 

Так было в примере. Насколько я понял, так сделано потому, что program исполняется в отдельном timing region, чтобы избежать гонок с тестируемым модулем.

Исправил вложение, чтобы точно компилилось моделсимом.

new.7z

Изменено пользователем Tsegorah

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, Tsegorah said:

Так было в примере. Насколько я понял, так сделано потому, что program исполняется в отдельном timing region, чтобы избежать гонок с тестируемым модулем.

т.е. это не ваш пример? Просто program одно время много кто использовал. Потом все от это этого ушли на работу с clocking_block. 

В вашем случае, я бы назначил в топе указатели на интерфейсы и уже их передал в programm. По идее должно работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

40 минут назад, des00 сказал:

т.е. это не ваш пример? Просто program одно время много кто использовал. Потом все от это этого ушли на работу с clocking_block. 

В вашем случае, я бы назначил в топе указатели на интерфейсы и уже их передал в programm. По идее должно работать.

Вы говорите "все ушли". Есть какое-то сообщество системвериложников со своей модой и традициями? Как его найти?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, Tsegorah said:

Вы говорите "все ушли". Есть какое-то сообщество системвериложников со своей модой и традициями? Как его найти?

Эмм, да это я образно выразился. Когда SV пошел, во всех статьях и книгах был program, а если посмотреть текущую литературу, там такого нет. Именно сообщества я не знаю, а так, ресурсы всякие есть. Из недавнего я в UVM снова погрузился, UVM – ClueLogic вот эта ссылка мне помогла быстро вспомнить что там и к чему. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...