我已经编写了以下工作代码来计算使能信号。一个或函数的SystemVerilog参数
logic l_en [0:N-1];
logic [0:N-1] l_output_grant [0:M-1];
always_comb begin
for (int i=0; i<N; i++) begin
l_en[i] = |{l_output_grant[0][i],
l_output_grant[1][i],
l_output_grant[2][i],
l_output_grant[3][i],
l_output_grant[4][i]};
end
end
我现在试图改变参数[0]到[4]的代码。我试了下面的代码
logic l_en [0:N-1];
logic [0:N-1] l_output_grant [0:M-1];
always_comb begin
for(int i=0; i<N; i++) begin
for(int j=0; j<M; j++) begin
l_en[i] = |l_output_grant[j][i];
end
end
end
哪个不行。我认为这是因为它重新计算j的每次迭代,因此如果[j + 1] [i]为低,则清除由[j] [i]分配的启用。
我可以用其他方法做这个吗?
l_en和l_output_grant是否也参数化为N和M?或者他们的声明是独立的?请出示他们的声明。 –
是的。我编辑过。 – user2646276