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

SystemVerilog. Параметризованные интерфейсы.

Потихоньку знакомлюсь с SystemVerilog.

Вопрос собственно в том можно-ли с помощью параметров интерфейса добавить / исключить сигналы.

К примеру в шине AXIS подшина USER может иметь разный размер или отсутствовать вовсе.

Порадовавшись поддержке generate в интерфейсах получил...

interface axis_if #(parameter int DATA_W = 16, USER_W = 0)
                   (input wire logic aclk, aresetn);

  logic[DATA_W-1 : 0] tdata;
  logic               tvalid, tlast, tready;
  logic[USER_W-1 : 0] tuser;

  if (USER_W > 0) begin
    modport m ( input tready, output tdata, tvalid, tlast, tuser );
    modport s ( input tdata, tvalid, tlast, tuser, output tready );
  end
  else begin
    modport m ( input tready, output tdata, tvalid, tlast );
    modport s ( input tdata, tvalid, tlast, output tready );
  end

endinterface

Код синтаксически верный, но не рабочий. Полагаю из-за дополнительного уровня созданного generate.

Очевидное решение с созданием разных modport душу как-то не греет. В общем хотелось-бы понять как делать правильно.

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


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

Размер параметром задать можно, а вот рулить объявлением - нет. Ну, и с modport тоже всё плохо - в generate это нельзя по той причине, что вы указали - оно вводит уровень иерархии, а modport - это вообще не иерархическая вещь. Раньше мы с энтузиазмом использовали generate for для модпортов (генерить их количество по параметру), но позднее это стало нельзя  квеста 10.7 уже уверенно забривала такое).

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


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

On 10/19/2021 at 6:47 PM, Asb said:

Вопрос собственно в том можно-ли с помощью параметров интерфейса добавить / исключить сигналы.

А нужно ли это? Если какой-то сигнал не используется, просто не указываете его, и он успешно оптимизируется.

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


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

4 hours ago, attaboy said:

А нужно ли это? Если какой-то сигнал не используется, просто не указываете его, и он успешно оптимизируется.

Ага, xilinx vivado любит тихо без шума и пыли оптимизировать сигналы в их неактивное состояние.  Например, master tready в ноль.

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


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

Приветствую!

2 hours ago, likeasm said:

Ага, xilinx vivado любит тихо без шума и пыли оптимизировать сигналы в их неактивное состояние.  Например, master tready в ноль.

Все неиспользуемые сигналы и неподключенные входы обычно в 0 и садятся. И отнюдь не без шума.
Но ведь разработчик часто не обращает внимание на это "ворчание" :declare:   

 

Удачи! Rob.

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


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

13 hours ago, likeasm said:

Ага, xilinx vivado любит тихо без шума и пыли оптимизировать сигналы в их неактивное состояние.  Например, master tready в ноль.

ЕМНП tready один из сигналов handhsake, если его бросили в воздухе, то сами себе злобные буратины. tuser, насколько помню не относится к hanshake и на него можно свободно забить)

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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