イネーブル信号を計算するために、次の作業コードを作成しました。
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] によって割り当てられた有効化がクリアされるためだと思います。
他にどのような方法でこれを行うことができますか?