我有一个宏,我想以下列方式使用:
`define assign_m(CH, INT_NUM) \
assign dp_input``CH``_if.master_mp.sigA[INT_NUM] = some_signal[CH][INT_NUM];
generate
for(genvar i=0; i<2; i++) begin
for(genvar j=0; j<2; j++) begin
`assign_m(i,j)
end
end
endgenerate
我想将这样的结构扩展为:
assign dp_input0_if.master_mp.sigA[0] = some_signal[0][0]; assign dp_input0_if.master_mp.sigA[1] = some_signal[0][1]; assign dp_input1_if.master_mp.sigA[0] = some_signal[1][0]; assign dp_input1_if.master_mp.sigA[1] = some_signal[1][1];
但当然不会发生这种情况,因为Verilog会逐字地附加变量j
而不是它的值(§22.5`define,`undef和`undefineall of {{ 3}},第644页。
如何在宏中附加参数的值?
答案 0 :(得分:0)
如果可以将dp_input_if
创建为数组并使用索引版本,则可以将其写为:
integer i;
integer j;
always @* begin
for(i=0; i<2; i++) begin
for(j=0; j<2; j++) begin
dp_input_if[i].master_mp.sigA[j] = some_signal[i][j];
end
end
end