1

配列を初期化すると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
};

これは実際にはsboxです。表示されていたエラー:

「=」付近: 構文エラー、予期しない「=」、IDENTIFIER または TYPE_IDENTIFIER が必要です

私はmodelsimシミュレータを使用していました

4

2 に答える 2

5

SystemVerilog配列の代入に使用している構文は、 ではなくでのみ有効ですVerilog

したがって、コンパイラはこれをサポートする必要があり、ファイルが SystemVerilog であることをコンパイラに伝える必要があります。.v == Verilogほとんどのコンパイラ (modelsim を含む) は、拡張子に基づいてファイルの種類を想定します.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
};
于 2012-10-26T14:50:37.403 に答える
0

割り当てはinitialoralwaysブロック内にある必要があります。

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
于 2012-10-26T14:27:32.180 に答える