Для расчета сигнала разрешения я написал следующий рабочий код.Параметры 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] [i], если [j + 1] [i] является низким.
Какие еще способы я могу сделать это, пожалуйста?
Являются ли l_en и l_output_grant также параметризованы для N и M? или их объявления независимы? Пожалуйста, покажите свои заявления. –
Да, они есть. Я редактировал. – user2646276