dxp 34 15 мая, 2019 Опубликовано 15 мая, 2019 · Жалоба 15 минут назад, Nick_K сказал: насколько порты, модпорты и регулярная логика, синтезируемы? Выше написал, повторю: прекрасно синтезируются. Например, вот есть у меня проброс сигнала через AXI4-Stream интерфейс, в модулях это выглядит: module master ... ( axis_if.master tlp_data, ... ); ... endmodule ... module slave ... ( axis_if.slave tlp_data, ... ); ... endmodule А сам интерфейс: interface axis_if #( parameter DATA_W = 64, localparam KEEP_W = DATA_W/8 ) ( ); logic TVALID; logic TREADY; logic [DATA_W-1:0] TDATA; logic [KEEP_W-1:0] TKEEP; logic TLAST; modport master ( output TVALID, input TREADY, output TDATA, output TKEEP, output TLAST ); modport slave ( input TVALID, output TREADY, input TDATA, input TKEEP, input TLAST ); endinterface Тут ничего хитрого нет, просто упаковали сигналы в один объект, а при использовании в списке портов - всего одна строчка. Но дальше интереснее - времянка в проекте оказалась напряжённой, и потребовалось вставить регистр в тракт следования этого сигнала. При этом оказалось, что достаточно доработать только сам интерфейс: interface axis_if #( parameter DATA_W = 64, localparam KEEP_W = DATA_W/8 ) ( input logic ACLK, input logic ARESETn ); // objects logic TVALID; logic TREADY; logic [DATA_W-1:0] TDATA; logic [KEEP_W-1:0] TKEEP; logic TLAST; logic [DATA_W-1:0] tdata; logic [KEEP_W-1:0] tkeep; logic tlast = 0; logic ready; // ready to get data from input logic valid; // valid data for output logic full = 0; logic wr_en; logic rd_en; // logic assign ready = !full || rd_en; assign valid = full; always_ff @(posedge ACLK) begin if(!full) begin if(wr_en) begin full <= 1; end end else begin if(!wr_en && rd_en) begin full <= 0; end end end always_ff @(posedge ACLK) begin if(wr_en && ready) begin // input handshake tdata <= TDATA; tkeep <= TKEEP; tlast <= TLAST; end end // modports modport master ( output .TVALID ( wr_en ), input .TREADY ( ready ), output TDATA, output TKEEP, output TLAST ); modport slave ( input .TVALID ( valid ), output .TREADY ( rd_en ), input .TDATA ( tdata ), input .TKEEP ( tkeep ), input .TLAST ( tlast ) ); endinterface Всё остальное использование совершенно не изменилось. Наглядный пример инкапсуляции и абстракции (отделения интерфейса от реализации). Замечательно синтезируется Vivado 2018.2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 17 hours ago, dxp said: Замечательно синтезируется Vivado 2018.2. Спасибо огромное! меня просто наличие логики как раз несколько и смущало. Отдельная благодарность за пример! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба Это все очень красиво выглядит. Когда нужно соединить 50 блоков AXI-интерфейсами. Но если нужно подключить 300 портов трансивера к логическому ядру (оба - готовые модули, никаких интерфейсов, pure verilog), то жизнь поворачивается совсем другой стороной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 34 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба Так речь про V или таки про SV? Если возникает много такой рутинной работы, то хороший редактор и скрипты рулят. Только это к языкам отношения уже не имеет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба Just now, dxp said: Так речь про V или таки про SV? Если возникает много такой рутинной работы, то хороший редактор и скрипты рулят. Только это к языкам отношения уже не имеет. Это к вопросу зачем нужен .* Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 34 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба Я понял. Возможно, это вопрос предпочтений. Лично я не доверяю этой автоматизации, предпочитаю, чтобы было явно. Ну, и справедливости ради, часто возникают такие задачи? Когда с подобным столкнулся (PCIe корка, где эн экранов список портов), просто написал обёртку вокруг этого модуля, внутри которой замапил нативные порты на сигналы интерфейсов, в итоге на прикладной уровень торчит всего четыре интерфейса (четыре строчки). Жизнь изрядно упростилась. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба В 14.05.2019 в 15:58, RobFPGA сказал: Это по началу - у меня тоже такой период был - а сейчас меня назад на ISE палкой не загонишь (только рублем ). А если не секрет где в Vivado старый добрый FPGA Editor? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 59 minutes ago, MegaVolt said: А если не секрет где в Vivado старый добрый FPGA Editor? Его там нет. Всё решается немного кривее в Implementation Design (для привыкших к эдитору). Но оно и вроде быстрее/красивее работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 6 минут назад, Nick_K сказал: Его там нет. Всё решается немного кривее в Implementation Design (для привыкших к эдитору). Но оно и вроде быстрее/красивее работает. Ну вот... я старый эдитор использовал как последнее слово когда нужно было понять в чём глюк и как физически лёг сигнал в плис. Эх... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба Just now, MegaVolt said: Ну вот... я старый эдитор использовал как последнее слово когда нужно было понять в чём глюк и как физически лёг сигнал в плис. Эх... Ааа. Так посмотреть что и куда - это осталось. и даже ИМХО удобнее и красивее. А вот эдитить неты и релокейтить стало просто непривычнее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 5 минут назад, Nick_K сказал: Ааа. Так посмотреть что и куда - это осталось. и даже ИМХО удобнее и красивее. А вот эдитить неты и релокейтить стало просто непривычнее А где если не секрет? Именно с путями чтобы было видно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба Приветствую! 1 minute ago, MegaVolt said: А где если не секрет? Именно с путями чтобы было видно. Скрыт от шаловливых ручек под кнопкой RoutingResorce при просмотре Layout Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 5 минут назад, RobFPGA сказал: Скрыт от шаловливых ручек под кнопкой RoutingResorce при просмотре Layout Бедные новички. Они даже не знаю что такое где то должно быть но спрятано :)))) Спасибо :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 17 мая, 2019 Опубликовано 17 мая, 2019 · Жалоба Новички то как раз найдут это, а вот со стариками разговор уже будет на разных языках, возможны расхождения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 34 17 мая, 2019 Опубликовано 17 мая, 2019 · Жалоба 2 часа назад, lexx сказал: Новички то как раз найдут это, а вот со стариками разговор уже будет на разных языках, возможны расхождения. +1 Точно так - сразу нашёл в процессе знакомства с возможностями окна Device. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться