Убедиться в этом можно на простом примере:
Код
`timescale 1ns/1ps
module Test();
integer i, j;
always
for(i = 0; i < 8; i = i + 1)
begin
for(j = 0; j < 8; j = j + 1)
begin: _j
if(j == 5) disable _j;
#10;
end
end
endmodule
module Test();
integer i, j;
always
for(i = 0; i < 8; i = i + 1)
begin
for(j = 0; j < 8; j = j + 1)
begin: _j
if(j == 5) disable _j;
#10;
end
end
endmodule
Видим, что переменная j в состоянии 5 задержку в 10 единиц не имеет, т.е. #10 не выполнилась, началась новая итерация цикла:
Нажмите для просмотра прикрепленного файла
Но мне, в тестбенче, нужно не начинать новую итерацию цикла, а нужно цикл завершить, нужен эквивалент оператора break. Искал - не нашёл. Стал думать, додумался до такого:
Код
always
for(i = 0; i < 8; i = i + 1)
begin: _i
for(j = 0; j < 8; j = j + 1)
begin
if(j == 5) disable _i;
#10;
end
end
for(i = 0; i < 8; i = i + 1)
begin: _i
for(j = 0; j < 8; j = j + 1)
begin
if(j == 5) disable _i;
#10;
end
end
Нажмите для просмотра прикрепленного файла
Неужели, в самом деле, нет отдельного оператора для такой цели?