Подключите разную ширину порта - PullRequest
0 голосов
/ 11 февраля 2019

Предположим, что мой модуль имеет 8-битный вход и 8-битный выход

module MyModule (input logic [7:0] in, output logic [7:0] out);
    ...
endmodule : MyModule

Если я хочу подключить 1-битный вход и оставить остальные биты равными нулю, работает следующее:

MyModule (.in({7'b0, a}), .out(b))

Как я могу сделать то же самое, если я хочу 1-битный вывод, игнорируя другие биты?Примерно так:

MyModule (.in(a), .out({7'b0, b}))

vcs говорит, что он недействителен, а подключение b напрямую выдает предупреждение.В идеале мне бы хотелось, чтобы решение не выдавало предупреждения.

Вот что я подумал:

  • Используйте .out(b) и используйте b[0] для бита
  • Создайте неиспользуемую логическую переменную unused и используйте .out({unused, b}) который работает
  • Использовать assign статистику (я бы хотел этого избежать)

Любое решение лучше этих?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Вы также можете использовать параметризованные модули:

module MyModule #(IN_WDT = 8, OUT_WDT = 8)
  (input logic[IN_WDT-1:0] in, output logic [OUT_WDT -1 : 0] out);

...

MyModule #(8,1) M1(a8, b1); 

или

MyModule #(.OUT_WDT(1)) M1(.in(a8), .out(b1));
0 голосов
/ 11 февраля 2019

Вы можете использовать оператор потоковой передачи:

MyModule M (.in(a), .out({<<{b}}));

Но я думаю, что ваша первая идея самая простая.

...