Ví dụ về Quartus® II Tcl: Mức độ logic báo cáo

author-image

Bởi

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

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.