2013-04-21 3 views
2

Вот пример нижепростой способ подключения распакованный массив на интерфейсе модуля в 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 

Что это самый простой способ сделать то Подвод такое, что и [0] == c2 и и [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 
); 

ответ

3

Try:

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. '{ используется для назначения или передачи распакованных массивов.

+0

Большое спасибо - это работает! – user2292757