Непонятно для петли Icarus Verilog

Я пытаюсь следовать приведенному здесь базовому примеру. 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.


person Jack Frye    schedule 23.03.2018    source источник


Ответы (2)


Мне нужно было присмотреться, но похоже, что моя версия по умолчанию не соответствовала его.

введите описание изображения здесь

Я повторно запустил команду компиляции с теми же флагами

iverilog -Wall -g2012 -o maj3_test testbench.v maj3.v

и он скомпилирован нормально. Не уверен, какая версия используется по умолчанию или почему она не скомпилировалась с этим синтаксисом.

person Jack Frye    schedule 23.03.2018

Попробуйте этот формат. Это решило ошибку.

Преобразуйте int в целое число и объявите его над начальным началом.

integer i;
initial begin
for (i=0; i<8; i=i+1) begin
        #5;
        {a,b,c} = i;
    end
end
person Nagulan S    schedule 25.08.2020