Ошибка инициализации массива в Verilog

Когда я инициализирую массив sbox, я получаю синтаксические ошибки. Пожалуйста, помогите мне.

  reg  [7:0] sbox[15:0];
sbox = '{
 8'h63, 8'h7c, 8'h77, 8'h7b,
 8'hf2, 8'h6b, 8'h6f, 8'hc5,
 8'h30, 8'h01, 8'h67, 8'h2b,
 8'hfe, 8'hd7, 8'hab, 8'h76
};

На самом деле это сбокс. Ошибка, которую он показывал:

рядом с "=": синтаксическая ошибка, неожиданное '=', ожидание IDENTIFIER или TYPE_IDENTIFIER

Я использовал симулятор моделирования


person nbsrujan    schedule 26.10.2012    source источник


Ответы (2)


Синтаксис, который вы используете для назначения массива, действителен только в SystemVerilog, но не в Verilog.

Поэтому ваш компилятор должен поддерживать это, и вам нужно сообщить компилятору, что это файл SystemVerilog. Большинство компиляторов (включая modelsim) принимают тип файла на основе расширения, например. .v == Verilog и .sv == SystemVerilog, а другим требовался переключатель.

Кроме того, как указано в ответе инструмента, вам нужно поместить назначение в блок initial, или вы можете объединить объявление с заданием, например:

reg [7:0] sbox[15:0] = '{
        8'h63, 8'h7c, 8'h77, 8'h7b,
        8'hf2, 8'h6b, 8'h6f, 8'hc5,
        8'h30, 8'h01, 8'h67, 8'h2b,
        8'hfe, 8'hd7, 8'hab, 8'h76
};
person dwikle    schedule 26.10.2012

Назначение должно быть внутри блока initial или always:

module tb;

reg [7:0] sbox[15:0];

initial begin
    sbox = '{
        8'h63, 8'h7c, 8'h77, 8'h7b,
        8'hf2, 8'h6b, 8'h6f, 8'hc5,
        8'h30, 8'h01, 8'h67, 8'h2b,
        8'hfe, 8'hd7, 8'hab, 8'h76
    };
end

endmodule
person toolic    schedule 26.10.2012
comment
Да, я тоже пробовал это, но не смог скомпилировать код. Я получаю эти ошибки Ошибка: (vlog-2110) Недопустимая ссылка на sbox памяти. ** Ошибка: Недопустимое LHS присвоения. - person nbsrujan; 26.10.2012
comment
Этот синтаксис работает для меня, используя 2 разных симулятора (VCS и Incisive). Возможно, ваш симулятор не поддерживает этот допустимый синтаксис. Или, может быть, вам нужно использовать специальные параметры симулятора, чтобы он принял синтаксис. Прочтите документацию по симулятору. - person toolic; 26.10.2012