Непонятно для петли Икара Верилога
Я пытаюсь следовать основному примеру, приведенному здесь. https://www.youtube.com/watch?v=13CzlujAayc&list=PLUtfVcb-iqn8ff92DJ0SZqwsX4W1s_oab&index=17
Вот мой точный код
maj3.v
module maj3(Out, A, B, C);
input A, B, C;
output Out;
wire AB, BC, AC;
and(AB, A, B);
and(BC, B, C);
and(AC, A, C);
or(Out, AB, BC, AC);
endmodule
testbench.v
module maj3_tb;
reg a, b, c;
wire out;
maj3 DUT1(out, a, b, c);
initial begin
for (int i=0; i<8; i=i+1) begin
#5 {a,b,c} = i;
end
end
initial begin
$monitor(a,b,c,out);
end
endmodule
Я пытаюсь скомпилировать с Icarus Verilog, но я получаю эту ошибку
testbench.v:9: syntax error testbench.v:9: error: Incomprehensible for loop.
Я просмотрел свой код несколько раз и считаю, что у меня одни и те же строки, которые есть у лектора, и я использую тот же компилятор. Разница лишь в том, что он работает в браузере, а мой - в терминале Ubuntu.
1 ответ
Мне нужно было присмотреться, но похоже, что моя версия по умолчанию не совпадает с его версией.
Я перезапустить команду компиляции с теми же флагами
iverilog -Wall -g2012 -o maj3_test testbench.v maj3.v
и скомпилировано нормально. Не уверен, что версия по умолчанию или почему он не скомпилирован с этим синтаксисом.
Попробуйте этот формат. Это решило ошибку.
Преобразуйте int в целое число и объявите его над "начальным началом".
integer i;
initial begin
for (i=0; i<8; i=i+1) begin
#5;
{a,b,c} = i;
end
end