下面是一个示例
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
);
最佳答案
尝试:
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 节。 '{
用于分配或传递解包数组。
关于system-verilog - 在 systemverilog 中的模块接口(interface)上连接解压数组的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134255/