소개
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에 대해 별도의 보고서를 생성하는 이유입니다.
이제 실행:
- Quartus에서 Task pane에서 TimeQuest 그룹을 확장하고 TimeQuest Timing Analyzer를 엽니다.
- TimeQuest Timing Analyzer에서는 menu bar에서 Script > Run Tcl Script…를 선택하고 Tcl script (예: timing.tcl)를 선택합니다.
- "Critical paths"라는 항목이 TimeQuest Timing Analyzer의 Report pane에 추가됩니다. Multi-Corner Summary를 클릭합니다. 이제 paths 목록과 세부 정보가 기본 panes를 채웁니다.
- paths 에 대한 모든 정보를 텍스트 파일로 내보내려면 Multi-Corner Summary를 마우스 오른쪽 버튼으로 클릭하고 "Export…"를 선택합니다. .rpt 접미사가 있는 출력 파일의 이름을 선택하십시오. HTML reports는 지원되지 않습니다(비어 있음).
각 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는 가리키고 클릭하기만 하면 얻을 수 있습니다.
- Quartus에서 Task pane에서 TimeQuest 그룹을 확장하고 TimeQuest Timing Analyzer를 엽니다.
- Timing Analyzer의 Tasks pane내부에서 "Update Timing Netlist"를 두 번 클릭합니다.
- 동일한 pane에서 "Custom Reports"까지 아래로 스크롤하고 "Report Timing…"를 두 번 클릭합니다.
- dialog box가 열립니다. setup, hold, recovery 또는 removal을 선택합니다. 그 외에는 기본값을 그대로 두고 아래의 "Report Timing"를 클릭합니다.
- Report pane에서는 "Report Timing"라는 항목이 추가됩니다. 이 항목을 확장하고 마우스 오른쪽 버튼으로 클릭합니다. 열리는 메뉴에서 "Generate in All Corners"를 클릭하십시오.
- "Multi Corner Summary" 그룹을 클릭하십시오. 위에 설명된 대로 보고서를 내보낼 수 있습니다.