이 페이지의 스크립트는 지원되는 모든 작동 조건에서 설계의 모든 클럭에 대한 설정, 보류, 복구 및 제거 타이밍 분석을 수행합니다. 스크립트는 타이밍에 실패한 모든 분석에 대한 정보를 나열하는 테이블을 만듭니다. 스크립트는 <revision>.failing_clock_domains라는 파일에 테이블을 씁니다. 분석이 실패하지 않으면 스크립트는 분석에 실패하지 않은 메시지를 파일에 씁니다.
스크립트를 사용하여 설계에 실패한 타이밍 분석 결과에 대한 빠르고 간단한 개요를 얻을 수 있습니다. failing_clock_domains.tcl이라는파일에 스크립트를 저장하는 경우 다음 명령을 사용하여 스크립트를 실행합니다.
quartus_sta --report_script=failing_clock_domains.tcl <project name> [-c <revision name>]
다음은 분석이 타이밍에 실패할 경우 스크립트가 생성하는 표의 예입니다. 표에는 최악의 경우 슬랙, 총 음수 슬랙(TNS), 클럭 이름, 장애가 발생한 작동 조건 및 실패한 분석 유형이 포함됩니다.
클럭 도메인의 타이밍 실패
+--------+---------------+------------+-----------------------+-----------------+
; Slack ; End Point TNS ; Clock ; Operating conditions ; Timing analysis ;
+--------+---------------+------------+-----------------------+-----------------+
; -0.113 ; -0.321 ; IF_RXCLK ; Slow 1100mV 85C Model ; Setup ;
; -0.098 ; -0.223 ; core_clk ; Fast 1100mV 0C Model ; Hold ;
+--------+---------------+------------+-----------------------+-----------------+
다음 TCL 코드를 복사하여 붙여서 파일에 저장하여 스크립트를 사용합니다.
# 디자인에 슬랙이 부정적인 클럭 도메인이 있는지 여부를 보고합니다. # 음수 여유가 있는 클럭 도메인이 있는 경우 해당 정보를 #a 표에 넣고 파일에 기록하십시오. # [get_current_revision].failing_clock_domains 패키지에 적절한 세트 output_file_name 구조체가 필요한 경우 여기에서 파일 이름을 변경합니다.:매트릭스 패키지에는 보고서 작성 #failing_paths_matrix 설정된 실패한 경로에 대한 정보를 보관할 매트릭스 만들기[::struct::matrix]; $failing_paths_matrix 추가 열 5 # 분석은 [get_available_operating_conditions] all_operating_conditions_col 모든 작동 조건에 대해 수행되어야 합니다 . 각 클럭 도메인 세트에 대해 이러한 유형의 분석을 수행합니다analysis_list [목록 "설정" "보류" "복구" "제거"] # 모든 운영 조건 foreach_in_collection operating_conditions_obj $all_operating_conditions_col { 작동 조건 설정, 타이밍 넷리스트 set_operating_conditions $operating_conditions_obj update_timing_netlist 업데이트 # [get_operating_conditions_info -display_name $operating_conditions_obj] operating_conditions_display_name 설정된 운영 조건의 영어 텍스트 이름을 얻으십시오 . 모든 유형의 분석이 analysis_type $analysis_list {# 인쇄해야 하는 경우 분석 유형 이름을 analysis_display_name [문자열 $analysis_ 유형] # [get_clock_domain_info -${analysis_type}] clock_domain_info_list 설정된 모든 클럭 도메인에 대한 정보를 얻고 모든 클럭 도메인을 탐색하고 # 네거티브 슬랙 포리치 domain_info $clock_domain_info_list { # domain_info 클럭 이름, 여유 및 TNS가 있는 모든 클럭 도메인을 꺼내십시오. # 추출합니다. foreach { clock_name 슬랙 endpoint_tns edge_tns } $domain_info {break } # 슬랙이 음수인 경우, {0 > $slack } { $failing_paths_matrix가 행을 추가하는 경우 표에 #Report에 정보 행을 함께 넣어 [목록 $slack $endpoint_tns $clock_name \ $operating_conditions_display_name $analysis_display_name] } } # 특정 # 타이밍 분석(설정, 설정, 보류 등) } # 특정 작동 # 조건에 대한 모든 분석 유형 진행 완료 } # 모든 작동 조건을 거치고 완료 # 결과 요약 #매트릭스에 행이 있는 경우 타이밍에 실패하는 경로가 있는 파일을 작성할 준비를 하십시오. # 해당 정보를 사용하여 테이블을 인쇄해야 합니다. 표에 # 행이 없으면 타이밍에 실패하는 경로가 없으므로 { 0 == [$failing_paths_matrix rows] } { ##"타이밍을 실패하는 클럭 도메인이 없다"post_message 빠른 메시지를 인쇄하면 성공 메시지를 적어 두십시오. 파일을 여는 오류가 있는 경우 #을 말하는 메시지를 인쇄하십시오. 그렇지 않으면, {[catch { open $output_file_name w } } {post_message -type 오류 "파일 열 수 없음: $fh" } 다른 {$fh "타이밍에 실패한 클럭 도메인이 없습니다" catch {$fh } } }} 다른 { # 최악의 슬랙이 첫 번째 $failing_paths_matrix 정렬 행이 되도록 매트릭스 행 정렬 -0 # 헤더 행 $failing_paths_Matrix 삽입 행 0[목록 "Slack" "End Point TNS" "Clock" \ "작동 조건" "타이밍 분석" ] # 결과 캐치 표를 인쇄하기 위해 정의된 스타일이 필요합니다 { ::report::rmstyle basicrpt} ::report::d efstyle basicrpt {{cap_rows 1}} { 데이터 세트 [분할 "[문자열 반복 " [[열]]"] 상단 세트 [split "[문자열 반복 "+ - "[열]]+"] 하단 세트 [top get] topcapsep 세트 [top get] topdata Set [data get] 상단 활성화 topcapsep 활성화 하단 활성화 tcaption $cap_rows } # 보고서 만들기, 열에 패딩 공간이 하나 있게 설정하고 지정된 형식 캐치 {r destroy}로 매트릭스를 인쇄합니다 . ::report:report:report r 5 style basicrpt {set col 0 } {$col < [r 열]} { incr col } { r 패드 $col "} post_message "클럭 도메인이 타이밍에 실패했습니다\n[r printmatrix $failing_paths_matrix]" # {[catch { $output_file_name w } fh] } { post_message -type 오류 "파일 열 수 없음: $fh" } 기타 {는 "클럭 도메인 실패 타이밍" r printmatrix2channel $failing_paths_matrix $fh catch {닫기 $fh } } } $fh 넣습니다.