중요 문제
Quartus® II 소프트웨어 버전 12.1 SP1의 문제로 인해 프로젝트\의 Quartus II 설정 파일(.qsf)의 주문이 예기치 않게 변경될 수 있습니다.
이 동작은 기존 프로젝트를 열거나 IP 업그레이드 명령을 실행할 때 발생할 수 있습니다.
프로젝트에 Synopsys Design Constraint(.sdc) 파일 순서 종속성이 있는 경우, 이 순서를 다시 정렬하면 예기치 않은 주파수 설정 또는 기타 타이밍 할당이 발생할 수 있습니다. 여러 레벨의 Quartus II IP(.qip) 파일이 있는 프로젝트를 사용할 수 있습니다. .qip 파일 내부에는 추가 .qip 또는 .sdc 파일에 대한 참조가 있을 수 있습니다. 예를 들어 아래 해결 방법 섹션을 참조하십시오. 잘못된 .sdc 설정으로 인해 잘못된 설계 동작이나 기능 오류가 발생할 수 있습니다.
Tcl 스크립트 파일을 사용하여 설계가 이 문제의 영향을 받는지 확인할 수 있습니다. qip_checker.tcl 을 다운로드하여 파일 주문 문제가 있는지 확인합니다. 다음 명령으로 이 스크립트를 실행할 수 있습니다.
quartus_sh -t qip_checker.tcl [-force]
이 스크립트에 대한 자세한 사용은 다음을 입력하십시오.
quartus_sh -t qip_checker.tcl
Quartus II 소프트웨어 버전 12.1 SP1에 대한 이 문제를 해결하기 위해 패치를 사용할 수 있습니다. 아래의 해당 링크에서 패치 1.33을 다운로드하고 설치하십시오.
- Windows용 버전 12.1 SP1 패치 1.33 다운로드(.exe)
- Linux(.tar)용 버전 12.1 SP1 패치 1.33을 다운로드하십시오.
- Quartus II 소프트웨어 버전 12.1 SP1 패치 1.33(.txt)에 대한 Readme 다운로드
이 패치는 Quartus II 소프트웨어 버전 12.1 SP1(빌드 243)과 호환됩니다.
패치 1.33은 Stratix® V, Arria® V 및 Cyclone® V 장치용 Quartus II 소프트웨어 버전 12.1 SP1 장치 패치(1.dp)와 호환되지 않습니다. 이러한 장치를 사용하는 경우 아래 관련 솔루션의 링크를 사용하여 장치 패치 1.dp6 이상으로 업그레이드하여 이 문제를 해결할 수 있습니다.
이 패치를 사용할 수 없는 경우 프로젝트 디렉토리에 quartus.ini 라는 텍스트 파일을 생성하여 이 문제를 피할 수 있습니다(아직 존재하지 않는 경우). 파일 재주문을 방지하기 위해 텍스트 파일에 다음 줄을 추가합니다.
disable_ip_regen=on
이 옵션은 자동 IP 재생 기능 중 일부를 비활성화하므로 명령줄 작업을 사용하여 IP를 재생성해야 할 수도 있습니다.
이 문제가 이미 실행된 경우 다음 단계를 수행해야 합니다.
- 패치를 적용하거나 ini 설정을 즉시 적용
disable_ip_regen=on
하십시오. - .qsf에서 또는
-sip
인수가 있는 모든 할당을-qip
제거합니다. - .qsf 내에서 할당을 확인하고
QIP_FILE
최상위 수준에 속하지 않는 할당을 제거합니다. - .sdc 및 .qip 파일의 순서를 수동으로 수정하려면 .qsf를 수정합니다.
아래는 설계에 영향을 받는 경우 수동으로 수정해야 하는 재주문 효과의 예입니다.
예를 들어 Quartus II 소프트웨어 버전 12.1 SP1 이전에 디자인에는 프로젝트 .qsf 파일에 다음과 같은 .sdc 및 .qip 파일이 나열되어 있습니다.
a.qsf:
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE a_after.sdc
a.qip:
set_global_assignment -name SDC_FILE aqip_before.sdc
set_global_assignment -name QIP_FILE asub.qip
set_global_assignment -name SDC_FILE aqip_after.sdc
asub.qip:
set_global_assignment -name SDC_FILE asub.sdc
다음은 메모리의 파일 순서입니다.
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE aqip_before.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip # from qip a.qip
set_global_assignment -name SDC_FILE asub.sdc # from qip asub.qip
set_global_assignment -name SDC_FILE aqip_after.sdc # from qip a.qip
set_global_assignment -name SDC_FILE a_after.sdc
따라서 프로젝트는 다음 순서로 SDC_FILE 과제를 읽습니다.
- a_before.sdc
- aqip_before.sdc
- asub.sdc
- aqip_after.sdc
- a_after.sdc
Quartus II 소프트웨어 버전 12.1 SP1에서 소프트웨어 문제(프로젝트 열기 또는 IP 업그레이드)를 트리거한 후 .qsf 는 다음과 같이 보입니다.
a.qsf:
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name SDC_FILE a_after.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name QIP_FILE asub.qip
다음은 메모리의 파일 순서입니다.
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name SDC_FILE a_after.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE aqip_before.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip # from qip a.qip
set_global_assignment -name SDC_FILE aqip_after.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip
set_global_assignment -name SDC_FILE asub.sdc # qip asub.qip
따라서 프로젝트는 다음 순서로 SDC_FILE 과제를 읽습니다.
- a_before.sdc
- a_after.sdc
- aqip_before.sdc
- aqip_after.sdc
- asub.sdc
설계가 .sdc 순서에 따라 달라지는 경우, 이 변경된 순서는 설계 최적화 결과 및 타이밍 분석에 영향을 줄 수 있습니다. 문제를 해결하려면 위에서 설명한 대로 ini 설정을 추가한 다음 .qsf 를 수정하여 원래 올바른 할당 순서를 사용합니다. 주문이 변경되었는지 빠르게 확인하려면 Quartus II 소프트웨어 버전 12.1 SP1 이전에 생성된 .qsf 를 참조하십시오.
이 문제는 Quartus II 소프트웨어 버전 13.0부터 해결되었습니다.