Khi bạn tối ưu hóa một thiết kế, việc xem thông tin về mức độ logic giữa các thanh ghi rất hữu ích. Lệnh sau tạo ra Giá trị phân cách bằng dấu phẩy (. csv)tập tin với số lượng đường dẫn với các cấp độ logic khác nhau trong thiết kế của bạn. Bạn có thể lập biểu đồ dữ liệu này hoặc tạo biểu đồ trong Excel để hiển thị phân phối đường dẫn theo cấp logic.
Nếu hai thanh ghi có nhiều đường dẫn logic giữa chúng, chỉ đường dẫn có mức logic nhiều nhất mới được tính bởi lệnh này. Ví dụ: hai thanh ghi với một đường dẫn bốn cấp và một đường dẫn hai cấp sẽ được tính là một đường dẫn bốn cấp.
Lệnh này tạo ra một tệp CSV có < phiên bản >.levels_of_logic.csv.
Giả định bạn lưu lệnh trong một tệp có tên report_levels_of_logic.tcl, bạn có thể chạy lệnh này với các lệnh sau:
quartus_tan -t report_levels_of_logic.tcl -project <m tên dự án> [-phiên bản < tên phiên bản>] [-name_pattern <string để phù hợp>]
Bạn có thể sử dụng tùy chọn -name_pattern hạn chế việc đếm đường dẫn đến một hệ thống phân cấp cụ thể trong thiết kế của bạn. Xác định một chuỗi để khớp với ký tự đại diện của ngôn ngữ lệnh công cụ (Tcl). Nếu bạn không xác định một giá trị cho tùy chọn -name_pattern, nó mặc định là *. Ví dụ: nếu bạn muốn báo cáo mức logic giữa các thanh ghi trong hệ thống phân cấp mult:inst6|lpm_mult:lpm_mult_component của thiết kế của mình, hãy xác định mult:inst6|lpm_mult:lpm_mult_component* cho giá trị của tùy chọn -name_pattern.
Gói load_package advanced_timing yêu cầu các tùy chọn bộ cmdline {\ { "project.arg" "" "Tên dự án" } \ { "revision.arg" "" "Tên phiên bản" } \ { "name_pattern.arg" "*" "Hạn chế để thanh toán phù hợp với mẫu này"} } opts bộ mảng [:cmdline::getoptions quartus(args) $options] array set num_levels [list] # Open the project and get the revision name if { [string equal "" $opts(revision)] } { project_open $opts(project) -current_revision } khác { project_open $opts(dự án) -phiên bản $opts(phiên bản sửa đổi) } đặt rev [get_current_revision] # Chuẩn bị netlist thời gian nếu { [yêu cầu { create_timing_netlist; create_p2p_delays } res] } { lỗi post_message -type $res project_close qexit -error } # Lặp lại qua mọi đăng ký trong thiết kế foreach_in_collection dest [get_timing_nodes -type reg] { # Nhận danh sách các thủ môn (thanh ghi, chân, đồng hồ) # nguồn cấp dữ liệu vào bộ nút đăng ký delays_from_keepers [get_delays_from_keepers $dest] # Nếu tên đăng ký đích không khớp với mẫu, # chỉ cần chuyển sang tên tiếp theo. đặt dest_name [get_timing_node_info -info name $dest] nếu { ! [string match $opts(name_pattern) $dest_name] } { tiếp tục } # Đi qua tất cả các thủ môn nối nút đăng ký với độ trễ nút đăng ký $delays_from_keepers { thiết lập src [lindex $delay 0] # Người giữ có thể bao gồm các chân và đồng hồ và chúng tôi chỉ muốn thanh ghim. nếu { ! [string equal "reg" [get_timing_node_info -info type $src]] } { tiếp tục } # Nếu tên đăng ký nguồn không khớp với mẫu, # chỉ cần chuyển sang tập hợp tiếp theo src_name [get_timing_node_info -tên thông tin $src] nếu { ! [string match $opts(name_pattern) $src_name] } { continue } # Tại thời điểm này, cả tên nguồn và tên đích # khớp với kiểu dáng và đó là đường dẫn đăng ký. # Lệnh get_delay_path trả về danh sách các nút trên # a path. Chiều dài của đường dẫn là chiều dài của danh sách. # Danh sách bao gồm các thanh ghi nguồn và điểm đến, # do đó, các cấp độ logic giữa các thanh ghi là - 2 đường dẫn thiết lập [get_delay_path -type longest -from $src -to $dest] set levels_of_logic [expr { [llength $path] - 2 } ] # Lưu thông tin trong một mảng nếu { [info exists num_levels($levels_of_logic)] } { incr num_levels($levels_of_logic) } khác { đặt num_levels($levels_of_logic) 1 } } } project_close # Ghi thông tin ra khỏi tệp nếu { [mở ${rev}.levels_of_logic.csv w} fh] } { post_message -type error $fh } khác { # Viết một tiêu đề mô tả vào tệp đặt $fh "Cấp độ logic cho dự án $opts(project) bản sửa đổi $rev" đặt $fh "Tập tin được tạo bởi Quartus® II $quartus(phiên bản) trên \ [định dạng đồng hồ [giây đồng hồ]]" đặt $fh "\nReporting paths cho tên đăng ký phù hợp với $opts(name_pattern)" đặt cấp bậc tiền nhiệm "Cấp logic,Số trong thiết kế" cho mỗi cấp độ [lsort -integer [tên mảng num_levels]] { nếu { [bắt gặp { đặt $fh "$level,$num_levels($level)" } res] } { post_message -type error $res break } } dấu kiểm đếm { close $fh } } $fh