lkg47 0 30 августа, 2019 Опубликовано 30 августа, 2019 · Жалоба Здравствуйте, прошу помощи: Возможно ли протаскивать сигналы через интерфейс с modport output в подмодуль, а после с modport input в подподмодуль? или другими словами - нужно чтоб в подмодуле возможно было изменять сигналы шины, при этом доходили до ПодПодмодуля. Причина использования modport - когда перешли на design partition quartus начал ругаться на неоднозначность направления портов Квартус дает ошибку: Error (10978): SystemVerilog error at test.sv(32): unknown type and interface type are not equivalent - equivalent types must have same number of bits пример: `timescale 1ns / 1ps interface bus( input logic clk, input int x ); int y; modport io( input clk, input x, output y ); modport ii( input clk, input y, input x ); endinterface /////////////////////SECOND_SUB module second_sub( bus.ii bus_second, output int z ); always_ff@(posedge bus.clk) z <= z + bus_second.x + bus_second.y; endmodule /////////////////////FIRST_SUB module first_sub( bus.io bus_first ); second_sub second_sub_inst( .bus_second(bus_first.ii), .z(z) ); always_ff@(posedge bus_first.clk) bus_first.y <= z + bus_first.y; endmodule /////////////////////TOP module top ( input logic clk, output logic out, input int x ); bus bus_top( .clk(clk), .x(x) ); first_sub( .bus_first(bus_top.io) ); always_ff@(posedge clk) begin out <= bus_top.y[0]; end endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 1 сентября, 2019 Опубликовано 1 сентября, 2019 · Жалоба Я не сильно большой знаток, но интерфейс это инкапсуляция уже существующих портов, а не сквозное декларирование и 2е - автор языка даже не упоминает об этой возможности, а он в своей книге по нескольку раз вдоль и поперёк проходит все всем возможным конструкциям. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 2 сентября, 2019 Опубликовано 2 сентября, 2019 · Жалоба On 8/30/2019 at 4:02 PM, lkg47 said: interface bus( input logic clk, input int x ); int y; modport io( input clk, input x, output y ); Во-первых так делать нельзя. То что у Вас объявлено в конструкции interface bus(...); уже априори относится к обоим модпортам. И в этом случае лучше всего оставить клок без всяких сигналов. а вот в Модпорт Вы указываете уже все конфигурируемые сигналы (т.е. там не должно быть клока, но должны быть другие сигналы, объявлённые ранее) UPD: Во-первых так делать можно, но несколько неочевидно. В интерфейсе лучше всего оставить клок без всяких сигналов, а вот в Модпорт вынести все сигнали с объявлением направления и т.д. Во-вторых ошибка типа: On 8/30/2019 at 4:02 PM, lkg47 said: unknown type and interface type are not equivalent как-бы намекает, что у Вас не соответствуют типы сигналов. Возможно стоит явно указать что в интерфейсе все согналы типа logic. И не имея возможности посмотреть на какую строку коды ссылается ошибка - это всё гадание на кофейной гуще В-третьих если используете модпорты - используйте только модпорты, если используете чистый интерфейс, то только чистый интерфейс. нельзя смешивать всё в кучу (я про код в топе): On 8/30/2019 at 4:02 PM, lkg47 said: bus bus_top( либо же создайте ещё один модпорт, либо сделайте 2 интерфейса. А вообще совет: идите от простого к сложному. Соберите сначала вложенные файлы с минимальным интерфейсом, потом нарастите до нужного объёма сигналов, потом подключайте в топ и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 2 сентября, 2019 Опубликовано 2 сентября, 2019 · Жалоба Не согласен, модпорты как раз и есть часть интерфейса, ничего не запрещает клок собрать вместе с логикой, ошибок нет, кроме попыток продолжить использовать порты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 2 сентября, 2019 Опубликовано 2 сентября, 2019 · Жалоба 12 minutes ago, lexx said: Не согласен, модпорты как раз и есть часть интерфейса, ничего не запрещает клок собрать вместе с логикой, ошибок нет, кроме попыток продолжить использовать порты. Извиняюсь, согласен. Не в тот Туториал посмотрел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 6 сентября, 2019 Опубликовано 6 сентября, 2019 · Жалоба On 8/30/2019 at 10:02 PM, lkg47 said: Здравствуйте, прошу помощи: Возможно ли протаскивать сигналы через интерфейс с modport output в подмодуль, а после с modport input в подподмодуль? Поправлю сам себя, только что попалось в статье. Вышеуказанная архитектура также возможна (я про интерфейс в внутрь иерархии), называется vertical interface topology, другой вариант - горизонтальная. Для этого нужно прописать дополнительный modport для нижнего уровня и так далее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться