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 } } }