2012-10-26 9 views
1

배열 sbox을 초기화 할 때 구문 오류가 발생합니다. 제발 도와주세요.Verilog의 배열 오류 초기화

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입니다. 이 보여주는 된 오류 :

near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER

내가 ModelSim을 시뮬레이터를 사용하고 있었다

+0

당신은 콴 티코의 예언자시겠습니까 당신이 실제로 말하는 ** 구문 오류 **를 말하고 있습니까? –

+0

나는 단지 VHDL을 사용하고 잠깐 (배열을 사용하지는 않았지만) 일반적으로 말해서 :'';'* 배열 * 바로 앞의 배열에있는 마지막''이 당신의 범인이 될 수 있습니다. – dualed

+0

@HenningMakholm "="근처에 : 예기치 않은 '=', IDENTIFIER 또는 TYPE_IDENTIFIER가 예상됩니다. 이 오류는 – nbsrujan

답변

4

당신이 배열의 할당에 사용하는 구문은 아니라 SystemVerilog에 유효하고 Verilog이 아닙니다.

그래서 컴파일러가이를 지원해야하며 파일이 SystemVerilog임을 컴파일러에 알려줘야합니다. 대부분의 컴파일러 (modelsim 포함)는 확장명을 기반으로 파일 유형을 가정합니다. .v == Verilog.sv == SystemVerilog 인 반면 다른 스위치는 필요합니다. toolic에서이 질문에 대해 지적

는 또한, 당신은 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 
}; 
0

할당은 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 
+0

입니다. 그래도 시도했지만 코드를 컴파일 할 수 없습니다. 오류 : (vlog-2110) 메모리 "sbox"에 대한 잘못된 참조입니다. ** 오류 : 할당의 LHS가 잘못되었습니다. – nbsrujan

+0

이 구문은 두 개의 다른 시뮬레이터 (VCS 및 Incisive)를 사용하여 저에게 적합합니다. 시뮬레이터가이 구문 구문을 지원하지 않을 수도 있습니다. 또는 구문을 허용하기 위해 특수 시뮬레이터 옵션을 사용해야 할 수도 있습니다. 시뮬레이터 설명서를 읽으십시오. – toolic

+0

내 시뮬레이터는 모델입니다. – nbsrujan