самый простой способ подключить распакованный массив на интерфейс модуля в systemverilog

Вот пример ниже

module a_mod ( u );
input bit [2:0] u [1:0];
...
endmodule

module b_mod ();

bit [2:0] c1, c2;
a_mod a_mod_inst ( 
  .u ( {c1,c2} ) // won't work
);

endmodule

Как проще всего выполнить подключение, чтобы u[0] == c2 и u[1] == c1 ?

Кстати, я знаю, что могу сделать то, что показано ниже, но ищу более элегантную альтернативу.

bit [2:0] tmp_u [1:0];
assign tmp_u[0] = c2;
assign tmp_u[1] = c1;

a_mod a_mod_inst (
.u ( tmp_u )  // works for sure
);

person user2292757    schedule 21.04.2013    source источник


Ответы (1)


Пытаться:

bit [2:0] c1, c2;
a_mod a_mod_inst ( 
  .u ( '{c1,c2} ) // note the single quote before the open curly bracket
);

См. IEEE1800-2012, раздел 10.9. '{ используется для назначения или передачи распакованных массивов.

person Greg    schedule 22.04.2013