/ / SystemVerilog składnia foreach do zapętlania niższego wymiaru tablicy wielowymiarowej - tablice, tablica wielowymiarowa, foreach, verilog systemowy

SystemVerilog foreach Składnia pętli przez niższy wymiar wielowymiarowych tablic - tablice, tablica wielowymiarowa, foreach, system-verilog

Co to jest standard sposób zapętlenia dolnego wymiaru tablicy wielowymiarowej? Przy ustalonym wyższym wymiarze.

W poniższym przykładzie:

  automatic int i = 2;
foreach (my_req[i][j]) begin // <-- WARNING
$display("i:%0d,j:%0d", i, j);
end

Widzę ostrzeżenie:

** Warning: testbench.sv(16): (vlog-LRM-2897) Using non-standard foreach loop variable list syntax.

Przykład pełnego kodu na placu zabaw EDA: http://www.edaplayground.com/x/nh

Odpowiedzi:

7 dla odpowiedzi № 1

Możesz to zrobić:

$display("Loop through i=2");
begin
automatic int i = 2;
foreach (my_req[,j]) begin // notice the "," before j
$display("i:%0d,j:%0d", i, j);
end
end

Kod roboczy na placu zabaw EDA: http://www.edaplayground.com/x/2Qn


4 dla odpowiedzi nr 2

Ostrzeżenie ma na celu poinformowanie cię, że kod, który piszesz, może nie być kompatybilny z innymi symulatorami. Wiem, że kiedyś zaakceptowano inny symulator foreach (array[i][j]) gdzie i nie został wcześniej zdefiniowany jako oznaczający to samo, co foreach(array[i,j]), a ta składnia nie byłaby zgodna z tym, co próbujesz zrobić.

Poprawna składnia jest foreach (my_req[,j])