Contoh Penganalisis Waktu: Laporan Ringkasan Clock yang Gagal

author-image

Oleh

Skrip di halaman ini melakukan pengaturan, penahanan, pemulihan, dan analisis waktu penghapusan pada semua clock dalam desain Anda di semua kondisi operasi yang didukung. Skrip membuat tabel yang mencantumkan informasi tentang semua analisis yang gagal waktunya. Skrip menulis tabel ke file yang disebut <revision>.failing_clock_domains. Jika tidak ada analisis yang gagal, skrip menulis pesan ke berkas yang tidak ada analisis yang gagal.

Anda dapat menggunakan skrip untuk mendapatkan ikhtisar cepat dan sederhana tentang hasil analisis waktu yang gagal untuk desain. Jika Anda menyimpan skrip dalam file yang disebut failing_clock_domains.tcl, gunakan perintah berikut untuk menjalankannya.

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

Berikut adalah contoh tabel yang dihasilkan skrip jika ada analisis waktu gagal. Tabel ini mencakup kelambatan kasus terburuk, kelambatan negatif total (TNS), nama clock, kondisi operasi di mana kegagalan terjadi, dan jenis analisis yang gagal.

Waktu gagal domain clock

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

Salin dan tempel kode TCL berikut dan simpan dalam file untuk menggunakan skrip.

# Laporkan apakah desain memiliki domain clock dengan kendur negatif.
# Jika ada domain clock dengan kelambatan negatif, masukkan informasi tersebut ke
dalam tabel dan tuliskan ke file.
# Ubah nama file di sini jika set yang sesuai
output_file_name [get_current_revision].failing_clock_domains

paket memerlukan struct::matrix
package require report # Buat

matriks untuk menyimpan informasi tentang jalur gagal
yang diatur failing_paths_matrix [::struct::matrix];
$failing_paths_matrix menambahkan kolom 5 # Analisis harus dilakukan untuk semua kondisi operasi yang
diatur all_operating_conditions_col [get_available_operating_conditions]

# Lakukan jenis analisis ini untuk setiap rangkaian domain clock
analysis_list [daftar "setup" "hold" "hold" "recovery" "removal"]

# Tembus semua kondisi operasi
foreach_in_collection operating_conditions_obj $all_operating_conditions_col {

   # Atur kondisi operasi,  perbarui waktu netlist
   set_operating_conditions $operating_conditions_obj
   update_timing_netlist

   # Dapatkan nama teks bahasa Inggris dari kondisi operasi yang diatur operating_conditions_display_name   [get_operating_conditions_info -display_name $operating_conditions_obj]

   # Lakukan setiap jenis analisis   
   foreach analysis_type $analysis_list {

      # Dapatkan nama jenis analisis jika kita harus mencetaknya
      analysis_display_name [string totitle $analysis_ ketik]

      # Dapatkan informasi tentang semua domain clock yang diatur clock_domain_info_list
      [get_clock_domain_info -${analysis_type}]

      # Tembus semua domain clock dan cabut semua yang memiliki
      peramal kelambatan #
      domain_info $clock_domain_info_list {

         # The domain_info memiliki nama clock, kelambatannya, dan TNS-nya.
         # Ekstrak itu.      
         foreach { clock_name slack endpoint_tns edge_tns } $domain_info { break }

         # Jika kendur negatif, menyusun baris informasi ke
         # laporan dalam tabel jika {
         0 > $slack } {
            $failing_paths_matrix tambahkan baris [list $slack $endpoint_tns $clock_name \
               $operating_conditions_display_name $analysis_display_name]
         } } # Selesai melewati semua domain clock untuk
      analisis waktu
      #tertentu (pengaturan,  hold, dll.)  
   }
   # Selesai mengerjakan semua jenis analisis untuk kondisi # operasi tertentu
   } # Selesai melewati semua kondisi operasi #
Bersiaplah untuk menulis file dengan ringkasan hasil

# Jika ada baris di matriks, ada jalur yang tidak sesuai waktunya.
# Kita harus mencetak tabel dengan informasi tersebut. Jika tidak ada
baris # dalam tabel, tidak ada jalur yang gagal, jadi tulis pesan sukses
jika { 0 == [$failing_paths_matrix rows] } {

   # Cetak pesan singkat post_message
   "Tidak ada domain clock yang gagal mengatur waktu"

   # Jika ada kesalahan saat membuka file, cetak pesan yang mengatakan
   # itu. Jika tidak, say no domain failing timeing
   if { [catch { open $output_file_name w } fh] } {
      post_message -type error "Tidak bisa membuka file: $fh"
   } lain { menempatkan $fh   
      "Tidak ada domain clock yang gagal waktu"
      menangkap { close $fh } } } else { #
   Sort
the
   matrix rows so the worst slack is first
   $failing_paths_matrix sort rows -increasing 0

   # Put in a header row
   $failing_paths_matrix insert row 0[list "Slack" "End Point TNS" "Clock" \
      "Kondisi operasi" "Analisis waktu" ]   

   # Kita perlu gaya yang didefinisikan untuk mencetak tabel hasil
   tangkapan { ::report::rmstyle basicrpt }
   ::report::d efstyle basicrpt {{cap_rows 1}} {
      data set [split "[string repeat " [columns]];"]
      set atas [split "[string repeat "+ - " [columns]]+"]
      set bawah [top get]
      topcapsep set [top get]
      topdata set [data get]
      top enable
      topcapsep enable
      bottom enable
      tcaption $cap_rows 
   } # Buat

   laporan, atur kolom agar memiliki satu spasi padding, dan
   # cetak matriks dengan
   format tangkapan tertentu { r destroy }
   ::report::report r 5 style basicrpt
   untuk { set col 0 } { $col < [r columns]} { incr col } { incr col } {
      r pad $col keduanya " "
   }
   post_message "Domain clock failing timing\n[r printmatrix $failing_paths_matrix]"

   # Simpan laporan ke file jika {
   [menangkap { open $output_file_name w } fh] } {
      galat post_message -type "Tidak dapat membuka file: $fh"   
   } lain { menempatkan $fh
      "Clock domains failing timeing"
      r printmatrix2channel $failing_paths_matrix $fh
      penangkapan { close $fh
   } }
}

Isi halaman ini adalah kombinasi terjemahan manusia dan komputer dari konten berbahasa Inggris. Konten ini diberikan hanya untuk kenyamanan Anda serta sebagai informasi umum dan tidak bisa dianggap sebagai lengkap atau akurat. Jika terdapat kontradiksi antara versi bahasa Inggris halaman ini dan terjemahannya, versi bahasa Inggris akan didahulukan. Lihat versi bahasa Inggris halaman ini.