Ví dụ về Bộ phân tích thời gian: Báo cáo tóm tắt đồng hồ bị lỗi

author-image

Bởi

Kịch bản trên trang này thực hiện phân tích thiết lập, giữ, khôi phục và xóa trên tất cả các đồng hồ trong thiết kế của bạn ở tất cả các điều kiện hoạt động được hỗ trợ. Kịch bản tạo ra một bảng liệt kê thông tin về tất cả các chỉ dẫn không thành công về thời gian. Kịch bản viết bảng vào một tập tin có tên <tổi chỉnh>.failing_clock_domains. Nếu không có kết quả nào xảy ra, kịch bản sẽ viết một tin nhắn vào tệp mà không có kết quả phân tích nào bị lỗi.

Bạn có thể sử dụng kịch bản để có tổng quan nhanh chóng, đơn giản về kết quả phân tích thời gian thất bại cho một thiết kế. Nếu bạn lưu lệnh trong một tệp có tên failing_clock_domains.tcl, hãy sử dụng lệnh sau để chạy lệnh đó.

quartus_sta --report_script=failing_clock_domains.tcl <project name> [-c <revision name>]

Dưới đây là một ví dụ về bảng mà lệnh tạo ra nếu bất kỳ giao diện nào không đạt được thời gian. Bảng này bao gồm sự chững lại trong trường hợp xấu nhất, tổng số slack tiêu cực (TNS), tên của đồng hồ, điều kiện hoạt động xảy ra lỗi và loại phân tích không thành công.

Tên miền đồng hồ không đạt thời gian

+--------+---------------+------------+-----------------------+-----------------+
; 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            ;
+--------+---------------+------------+-----------------------+-----------------+

Sao chép và dán mã TCL sau đây và lưu nó trong một tệp để sử dụng lệnh.

# Báo cáo xem thiết kế có các tên miền đồng hồ với độ nghiêng tiêu cực hay không.
# Nếu có các tên miền đồng hồ có âm, hãy đặt thông tin đó vào # một bảng và
ghi vào một tệp.
# Thay đổi tên tệp ở đây nếu tập hợp thích hợp output_file_name [get_current_revision]gói .failing_clock_domains yêu cầu báo cáo struct::matrix package yêu cầu báo cáo # Tạo ma trận để chứa thông tin về các đường dẫn bị lỗi được đặt

failing_paths_matrix
[::struct::matrix];
$failing_paths_matrix add cột 5 # Phân tích phải được thực hiện cho tất cả các điều kiện hoạt động được đặt all_operating_conditions_col [get_available_operating_conditions] # Thực hiện các loại phân tích này cho mỗi bộ tên miền đồng hồ analysis_list [danh sách
"thiết lập" "giữ" "khôi phục" "gỡ bỏ"] # Xem qua tất cả các điều kiện hoạt động
foreach_in_collection operating_conditions_obj $all_operating_conditions_col {

   # Đặt điều kiện hoạt động,  cập nhật danh sách thời gian netlist set_operating_conditions $operating_conditions_obj update_timing_netlist # Nhận tên văn bản tiếng Anh của điều kiện hoạt động được đặt
   operating_conditions_display_name   [get_operating_conditions_info -display_name $operating_conditions_obj] # Thực hiện mọi loại phân tích

   foreach analysis_type $analysis_list { # Nhận tên của loại phân tích nếu chúng tôi phải in nó được đặt

      analysis_display_name
      [totitle chuỗi $analysis_ Loại] # Nhận thông tin về tất cả các tên miền đồng hồ đặt clock_domain_info_list [get_clock_domain_info -${analysis_type}] # Xem qua tất cả các tên miền đồng hồ và rút ra bất kỳ tên miền nào có
      #
      slack
      foreach #negative slack foreach domain_info $clock_domain_info_list { # The

         domain_info có
         tên đồng hồ, độ lệch của nó và TNS của nó. # Trích xuất những thứ đó.      
         foreach { clock_name slack endpoint_tns edge_tns } $domain_info { break } # If the slack is negative, kết hợp một hàng thông tin để # báo cáo trong bảng nếu
         {
         0 > $slack } {
            $failing_paths_matrix thêm hàng [danh sách $slack $endpoint_tns $clock_name \
               $operating_conditions_display_name $analysis_display_name]
         } } } Đã
      hoàn thành việc đi qua tất cả các tên miền đồng hồ cho một phân tích thời gian # cụ thể (thiết lập,  giữ, v.v.)  
   }
   # Đã hoàn thành tất cả các loại phân tích cho một điều kiện hoạt động cụ thể } # Đã hoàn thành tất cả các điều kiện vận hành # Chuẩn bị viết ra một tập tin với bản tóm tắt kết quả # Nếu có bất kỳ hàng nào trong ma trận, có những đường dẫn bị lỗi thời

gian.
# Chúng tôi phải in bảng với thông tin đó. Nếu không có hàng #trong bảng, không có đường dẫn bị lỗi thời gian, hãy viết tin nhắn thành công nếu
{ 0 == [$failing_paths_matrix rows] } { { In tin nhắn nhanh post_message "Không có tên miền đồng hồ không đạt thời gian" # Nếu có lỗi khi mở tệp, hãy in tin nhắn nói

   #
   đó. Nếu không, giả định rằng không có tên miền nào bị lỗi thời gian nếu { [dấu kiểm hiệu { mở $output_file_name w } fh] } { lỗi kiểu post_message "Tệp không mở: $fh" } khác { đặt $fh "Không có tên miền đồng hồ không đạt thời gian" xem { đóng $fh } } khác { # Sắp xếp các hàng ma trận, do đó, slack tồi tệ nhất là đầu tiên $failing_paths_matrix sắp xếp các hàng
-increasing 0 # Put in a header
   row
   $failing_paths_matrix insert row 0[list "Slack" "End Point TNS" "Clock" \
      "Điều kiện hoạt động" "Phân tích thời gian" ] # Chúng tôi cần một kiểu dáng được định nghĩa để in bảng kết quả {
   ::report:rmstyle basicrpt }
   ::report::d efstyle basicrpt {{cap_rows 1}} { tập dữ liệu
      [split "[string repeat " [columns];"]
      bộ trên cùng [split "[string repeat "+ - " [columns]]+"] tập hợp dưới
      [top get] topcapsep set [top get]
      topdata set [data get] topcapsep enable topcapsep enable bottom enable tcaption $cap_rows } # Create the report, đặt các cột có một không gian đệm và # in ma trận với dấu hủy định dạng được chỉ định
      { r destroy }
   ::report:report:report r 5 style basicrpt cho { set
   col 0 } { $col < [r columns]} { incr col } {
      r pad $col cả hai " " } post_message "Tên miền đồng hồ không đạt thời gian\n[r printmatrix $failing_paths_matrix]" # Lưu báo cáo vào một tệp nếu { [nhấn { mở $output_file_name w } fh] } { Lỗi kiểu post_message "Tệp không mở đối tượng: $fh" } khác { đặt $fh "Tên miền đồng hồ không đạt thời
      gian"
      r printmatrix2channel $failing_paths_matrix $fh
      dấu
{ đóng $fh } } }

Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.