아래 코드를 사용하여 ModelSim의 Verilog에서 배열을 사용하여 1MB 메모리 모델을 선언하려고합니다. 또한 주소 공간에 주소 0x80020000이 있어야합니다.ModelSim을 사용하여 Verilog에서 배열 만들기
parameter MEM_START = 32'h7FFA_0000;
parameter MEM_END = 32'h800A_0000;
reg [7:0] MEMORY [MEM_START:MEM_END];
위의 코드는 잘 컴파일하지만 난 그것을 시뮬레이션하려고 할 때 다음과 같은 오류를 제공합니다
# Loading project.memoryModule
# ** Fatal: (vsim-3419) Array with element size 2 and index range 2147090432 downto -2146828288 is too large.
# Time: 0 ns Iteration: 0 Instance: Project/memoryModule.v
# FATAL ERROR while loading design
# Error loading design
을 그러나 나는 또한해야하는 7FFF_FFFF에 7FEF_FFFF에서 메모리 인덱스를 초기화 할 경우 1 MB, 다 괜찮아요 시뮬레이션에서 할당 된 메모리를 볼 수 있습니다. 범위를 7FEF_FFFF에서 8000_0000으로 수정하면 컴파일하는 동안 내부 데이터 크기가 오버 플로우됩니다. 메모리의 끝 범위가 오류 (2의 보수)에 -2146828288 (FFFF FFFF 800A 0000)으로 나타나는 이유는 무엇입니까?
온라인으로 본 모든 예는 더 작은 기억, 즉 256 단어이므로 reg [7 : 0] MEMORY [0 : 255])이므로 내 논리에 문제가 있는지 확실하지 않습니다. 문제는 내 컴퓨터의 HW와 관련이 있습니다. Modelsim의 32 비트 버전 &에 4GB의 RAM이 있습니다.
정말 4GB의 메모리를 생성 하시겠습니까? 아마도 시뮬레이터에 과부하가 걸릴 것입니다. 64 비트 시스템과 6GB 이상의 RAM을 사용할 수 있습니까? – Tim
VCS는 속성을 통해 스파 스 메모리를 사용할 수 있다고 생각합니다. Modelsim에 대한 확신이 없습니다. –