scorp 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба начинаю осваивать SV, интерфейс описал в отдельном файле, на этапе компиляций ошибок нет, сборка закачнивается ошибкой ncelab: *E,CUINMD (../device.sv,2|52): An interface connection must be connected to a Verilog parent (device) посмотрите на код, что я делаю не так? :) module device ( interf.CONTROLLER EXCHANGE, input clk, input rstN ); endmodule ошибка пропадает только если создать верхний модуль и расположить в нём инстанции device и interf module testbench; interf bus(); device u1 (.EXCHANGE(bus)); endmodule есть ли возможность разрабатывать иерархический проект поблочно, но с интерфейсами, т.е. не прибегая к созданию верхнего модуля? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба есть ли возможность разрабатывать иерархический проект поблочно, но с интерфейсами, т.е. не прибегая к созданию верхнего модуля? Как я понял, нужно создать экземпляр интерфейса. И где ж его создавать, если не в модуле верхнего уровня? В переводе главы про интерфейсы, что я выдал в соответствующем разделе форума, можно прочитать. http://electronix.ru/forum/index.php?showt...st&p=902512 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scorp 0 15 апреля, 2011 Опубликовано 15 апреля, 2011 (изменено) · Жалоба Есть новый вопрос касательно интерфейсов. Описан интерфейс EXCHANGE. "Abonents" - является структурой, "data" - одно из его полей. module device (interf EXCHANGE, input clk, input rstN ); always_ff @(posedge clk) EXCHANGE.Abonents.data <= data_in; endmodule на этапе сборки получаем ошибку: always_ff @(posedge clk) EXCHANGE.Abonents.data <= data_in; | ncelab: *E,NLRMOS (../BU_TBON_top.sv,11|57): Non-local reference to members of struct/union not supported. В чём собственно проблема? Конструкция не поддерживается данным симулятором (NC-verilog)? Или не поддерживается в SV в принципе? Изменено 15 апреля, 2011 пользователем Nix_86 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба В чём собственно проблема?Видимо в том, что Описан интерфейс EXCHANGE. (т.е. это тип), а вы пытаетесь от него взять поле: always_ff @(posedge clk) EXCHANGE.Abonents.data <= data_in; Видимо должно быть как то так: module device (interf EXCHANGE xchg, input clk, input rstN ); always_ff @(posedge clk) xchg.Abonents.data <= data_in; endmodule Да и modport к интерфейсу тоже нелишним было бы прикрутить :) Или интерфейс у вас interf ? Можно полный пример кода, а то сложно в угадайку играть :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scorp 0 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба Или интерфейс у вас interf ? Можно полный пример кода, а то сложно в угадайку играть :) полного кода в данный момнет нет, а interf это имя интерфейса. Он описан в отдельном файле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scorp 0 23 апреля, 2011 Опубликовано 23 апреля, 2011 · Жалоба Как я понял, нужно создать экземпляр интерфейса. И где ж его создавать, если не в модуле верхнего уровня? В переводе главы про интерфейсы, что я выдал в соответствующем разделе форума, можно прочитать. http://electronix.ru/forum/index.php?showt...st&p=902512 ViKo, вы всё правильно поняли. Симулятору не удаётся собрать проект если нет дополнительного верхнего уровня, консолидирующего экземпляры инетерфейса и DUT (Device Under Test). Странно что программы логического синтеза (Syn0psys DC в частности) в отличие от симуляторов не нуждаются в этом самом верхнем уровне. Итог: Всякий раз раз, используя интерфейсы, для обеспечения корректной сборки проекта необходимо ОБЯЗАТЕЛЬНО создавать модуль верхнего уровня. Спасибо за Ваш ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться