Asb 1 October 19, 2021 Posted October 19, 2021 · Report post Потихоньку знакомлюсь с 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 душу как-то не греет. В общем хотелось-бы понять как делать правильно. Quote Share this post Link to post Share on other sites More sharing options...
dxp 18 October 20, 2021 Posted October 20, 2021 · Report post Размер параметром задать можно, а вот рулить объявлением - нет. Ну, и с modport тоже всё плохо - в generate это нельзя по той причине, что вы указали - оно вводит уровень иерархии, а modport - это вообще не иерархическая вещь. Раньше мы с энтузиазмом использовали generate for для модпортов (генерить их количество по параметру), но позднее это стало нельзя квеста 10.7 уже уверенно забривала такое). Quote Share this post Link to post Share on other sites More sharing options...
attaboy 0 October 21, 2021 Posted October 21, 2021 · Report post On 10/19/2021 at 6:47 PM, Asb said: Вопрос собственно в том можно-ли с помощью параметров интерфейса добавить / исключить сигналы. А нужно ли это? Если какой-то сигнал не используется, просто не указываете его, и он успешно оптимизируется. Quote Share this post Link to post Share on other sites More sharing options...
likeasm 0 October 21, 2021 Posted October 21, 2021 · Report post 4 hours ago, attaboy said: А нужно ли это? Если какой-то сигнал не используется, просто не указываете его, и он успешно оптимизируется. Ага, xilinx vivado любит тихо без шума и пыли оптимизировать сигналы в их неактивное состояние. Например, master tready в ноль. Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 11 October 21, 2021 Posted October 21, 2021 · Report post Приветствую! 2 hours ago, likeasm said: Ага, xilinx vivado любит тихо без шума и пыли оптимизировать сигналы в их неактивное состояние. Например, master tready в ноль. Все неиспользуемые сигналы и неподключенные входы обычно в 0 и садятся. И отнюдь не без шума. Но ведь разработчик часто не обращает внимание на это "ворчание" Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
des00 21 October 22, 2021 Posted October 22, 2021 · Report post 13 hours ago, likeasm said: Ага, xilinx vivado любит тихо без шума и пыли оптимизировать сигналы в их неактивное состояние. Например, master tready в ноль. ЕМНП tready один из сигналов handhsake, если его бросили в воздухе, то сами себе злобные буратины. tuser, насколько помню не относится к hanshake и на него можно свободно забить) Quote Share this post Link to post Share on other sites More sharing options...
Asb 1 October 26, 2021 Posted October 26, 2021 · Report post Благодарю за пояснения. Quote Share this post Link to post Share on other sites More sharing options...