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

интерфейсы в SV

начинаю осваивать 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

 

есть ли возможность разрабатывать иерархический проект поблочно, но с интерфейсами, т.е. не прибегая к созданию верхнего модуля?

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


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

есть ли возможность разрабатывать иерархический проект поблочно, но с интерфейсами, т.е. не прибегая к созданию верхнего модуля?

Как я понял, нужно создать экземпляр интерфейса. И где ж его создавать, если не в модуле верхнего уровня?

В переводе главы про интерфейсы, что я выдал в соответствующем разделе форума, можно прочитать.

http://electronix.ru/forum/index.php?showt...st&p=902512

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


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

Есть новый вопрос касательно интерфейсов. Описан интерфейс 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 в принципе?

Изменено пользователем Nix_86

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


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

В чём собственно проблема?
Видимо в том, что

Описан интерфейс 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 ? Можно полный пример кода, а то сложно в угадайку играть :)

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


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

Или интерфейс у вас interf ? Можно полный пример кода, а то сложно в угадайку играть :)

полного кода в данный момнет нет, а interf это имя интерфейса. Он описан в отдельном файле.

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


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

Как я понял, нужно создать экземпляр интерфейса. И где ж его создавать, если не в модуле верхнего уровня?

В переводе главы про интерфейсы, что я выдал в соответствующем разделе форума, можно прочитать.

http://electronix.ru/forum/index.php?showt...st&p=902512

ViKo, вы всё правильно поняли. Симулятору не удаётся собрать проект если нет дополнительного верхнего уровня, консолидирующего экземпляры инетерфейса и DUT (Device Under Test). Странно что программы логического синтеза (Syn0psys DC в частности) в отличие от симуляторов не нуждаются в этом самом верхнем уровне.

Итог: Всякий раз раз, используя интерфейсы, для обеспечения корректной сборки проекта необходимо ОБЯЗАТЕЛЬНО создавать модуль верхнего уровня.

Спасибо за Ваш ответ.

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


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

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

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

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

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

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

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

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

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

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