01signal.com

Quartus, timing closure: 간결한 multi-corner timing path 보고서 얻기

소개

FPGA design이 timing constraints를 달성하는 데 실패하면 자연스럽게 해야 할 일은 critical paths를 주의 깊게 살펴보는 것입니다. 이 검사는 각 path를 따라 다양한 logic elements 에 의해 발생하는 delays를 보여주는 timing report 에서 이루어집니다.

Intel의 FPGAs를 많이 사용하지 않는 경우 이 보고서를 얻는 방법을 파악하는 것이 그리 간단하지 않을 수 있습니다. 더군다나 자신도 모르는 사이에 잘못된 보고서를 보고 있을 수 있습니다.

가장 먼저 정리한 것은 multi-corner timing analysis의 개념입니다. 일반적인 관행은 timing constraints가 다음 네 가지 경우에 달성되었는지 확인하여 FPGA의 timing 의 유효성을 확인하는 것입니다. "느리고" "빠른" 타이밍 모델과 결합된 최소 및 최대 온도. 따라서 4개의 조합 또는 4개의 corners라고 하는 조합에 대해 분석이 이루어집니다.

따라서 critical paths를 검사할 때 4개의 corners 모두에서 timing reports를 살펴보는 것이 중요합니다. 이 사실은 종종 간과됩니다. 예를 들어, TimeQuest는 일반적으로 단일 corner에 대해 timing report를 생성합니다.

그래서 이번 포스트에서는 의미 있는 보고서를 얻는 방법에 대해 설명합니다. 예제는 Quartus Prime 17.1 Lite와 관련이 있습니다.

두 개의 다른 관련 게시물을 언급해야 합니다. input / output constraints 와 timing report의 관계를 살펴보는 게시물과 TimeQuest에서 Tcl scripting을 약간 실험하는 다른 게시물입니다.

중요: 이 페이지에서는 setup 요구 사항에 맞는 timing report를 얻는 방법을 설명합니다. 그러나 hold, recovery 및 removal을 생성하는 timing reports 도 있습니다. 이것들은 또한 timing constraints를 달성하는 데 실패했음을 드러낼 수 있습니다.

multi-corner report만들기: scripts를 사용하여 빠르게

먼저 다음 Tcl script를 timing.tcl와 같은 파일에 복사합니다.

create_timing_netlist
read_sdc
update_timing_netlist

foreach_in_collection op [get_available_operating_conditions] {
  set_operating_conditions $op

  report_timing -setup -npaths 20 -detail full_path -multi_corner \
    -panel_name "Critical paths"
}

timing report는 setup로만 제한됩니다.

"multi_corner" 플래그가 당신을 혼동하게 하지 마십시오: report_timing 에 대한 각 호출에는 하나의 corner가 포함됩니다. 이 플래그가 어떤 역할을 하는지는 확실하지 않습니다.

이것이 script가 4가지 옵션( foreach_in_collection포함) 모두에 loop이 있고 각 corner에 대해 별도의 보고서를 생성하는 이유입니다.

이제 실행:

각 corner에 대해 하나씩 동일한 항목에 4개의 개별 보고서도 있습니다. 이전 버전의 Quartus에서는 이러한 항목만 표시됩니다(즉, Multi-Corner Summary없음).

HTML/텍스트 보고서만 생성

이 도구는 TimeQuest의 자체 GUI보다 훨씬 읽기 편한 깔끔한 HTML reports를 생성할 수 있습니다. 그러나 불행히도 이러한 보고서는 각각 하나의 corner 만 다루고 있습니다. 이 script는 corner 마다 하나씩 4개의 개별 HTML reports를 생성합니다(많은 파일, JQuery script 파일, CSS 및 기타 등등. 종소리와 휘파람이지만 multi-corner report는 아님).

다음 script를 timing-html.tcl로 고려하십시오.

#project_open myproj
create_timing_netlist
read_sdc
update_timing_netlist

foreach_in_collection op [get_available_operating_conditions] {
  set_operating_conditions $op

  report_timing -setup -npaths 20 -detail full_path -multi_corner \
    -file "timing_paths_$op.html" \
    -panel_name "Critical paths for $op"
}

일반 텍스트 보고서의 경우 -file 플래그의 인수를 변경하여 접미사가 .html대신 .rpt 또는 .txt가 되도록 합니다.

script상단에 주석 처리된 "project_open" 명령에 유의하십시오. 주석 처리되지 않고 "myproj"가 실제 프로젝트 이름으로 바뀌면 일반 shell command line을 사용하여 다음과 같은 HTML reports를 생성할 수 있습니다.

$ /path/to/quartus/bin/quartus_sta -t timing-html.tcl

그러나 이와 같은 multi-corner report를 생성하는 방법을 찾지 못했습니다.

각 implementation (권장)에서 이러한 보고서를 생성하려면 QSF 파일에 다음과 같은 줄을 추가하십시오.

set_global_assignment -name TIMEQUEST_REPORT_SCRIPT relative/path/to/timing-html.tcl

이와 같이 QSF 파일에 Tcl script가 포함되어 있으면 script는 project_open을 사용 하지 않아야 합니다.

GUI만 사용

multi-corner report는 가리키고 클릭하기만 하면 얻을 수 있습니다.

이 페이지는 영어에서 자동으로 번역됩니다. 불분명한 사항이 있으면 원본 페이지를 참조하십시오.
Copyright © 2021-2024. All rights reserved. (b4b9813f)