문서 ID: 000090227 콘텐츠 형태: 오류 메시지 마지막 검토일: 2023-08-08

오류(13224): .sv()의 Verilog HDL 또는 VHDL 오류<your module="" name=""><your line="" number="">: <your index=""> 인덱스가 ''의 [] 범위를 벗어났습니다<your range=""><your variable="">.</your></your></your></your></your>

환경

  • 인텔® Quartus® Prime Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    설명

    인텔® Quartus® Prime Pro Edition 소프트웨어 버전 21.4 이하의 문제로 인해 분석 및 합성 단계에서 이 오류가 발생할 수 있습니다. 이는 매개변수화된 인터페이스가 SystemVerilog 인터페이스 localparam 논리 변수를 최상위 래퍼 변수로 재정의하지 못하기 때문입니다.

    아래 예에서 인터페이스 localparam 논리 변수 ADDR_W 및 DATA_W는 매개 변수가 4와 1인 최상위 래퍼 변수(각각 매개 변수 5 및 8)에 의해 재정의되지 않습니다.

    최상위 래퍼:

    모듈 mem_wrapper #( int ADDR_W = 5, int DATA_W = 8 )

    ...

    mem_if #( ADDR_W, DATA_W ) mem_if ( i_clk_a );

    mem mem ( mem_if );

    ...

    endmodule : mem_wrapper

    인터페이스:

    인터페이스 mem_if #( int ADDR_W = 4, int DATA_W = 1 ) ( 입력 clk );

    localparam 논리 [DATA_W - 1:0] INIT_V [2 ** ADDR_W] = '{기본값: '1};

    ...

    modport mem (입력 clk, addr, wren, idat, 출력 odat);

    최종 인터페이스 : mem_if

    모드포트:

    모듈 메모리 ( mem_if.mem mem_if );

    논리 [mem_if. DATA_W - 1:0] mem [2 ** mem_if. ADDR_W];

    초기
    for(int i = 0; i < 2 ** mem_if. ADDR_W; i++)
    mem[i] = mem_if입니다. INIT_V[나는];

    ...

    endmodule : mem

    해결 방법

    이 오류를 방지하려면 SystemVerilog 인터페이스에서 localparam 논리 사용하지 마십시오.

    예를 들어:

    인터페이스:

    인터페이스 mem_if #( int ADDR_W = 4, int DATA_W = 1 ) ( 입력 clk );

    논리 [DATA_W - 1:0] INIT_V [2 ** ADDR_W] = '{기본값: '1};

    ...

    모드 포트 메모리 (입력 clk, addr, wren, idat, 출력 odat, INIT_V);

    최종 인터페이스 : mem_if

    이 문제는 인텔® Quartus® Prime Pro Edition 소프트웨어 버전 22.4부터 해결됩니다.

    관련 제품

    이 문서는 다음 항목에 적용됩니다. 1 제품

    인텔® 프로그래밍 가능 장치

    이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.