Kết hợp dữ liệu tập tin SDO

author-image

Bởi

Kịch bản này tạo ra một tập tin SDO với các tham số thời gian kết hợp từ hai tệp SDO được tạo ra bởi phần mềm Quartus® II trong quá trình phân tích thời gian tối đa và tối thiểu.
Phần mềm Quartus II tạo ra các tệp SDO riêng biệt sử dụng giá trị độ trễ tối thiểu hoặc tối đa cho ba giá trị độ trễ trong mỗi ba lần. Gấp ba lần trong các tệp SDO hỗ trợ các giá trị độ trễ tối thiểu, điển hình và tối đa như sau: (min:typ:max). Một tệp SDO được tạo ra bởi phần mềm Quartus II để phân tích thời gian tối đa có độ trễ gấp ba lần chỉ bao gồm các giá trị độ trễ tối đa, như sau: (tối đa:max:max). Tệp SDO được tạo ra trong quá trình phân tích thời gian tối thiểu có chứa ba lần độ trễ chỉ bao gồm các giá trị độ trễ tối thiểu, như sau: (min:min:min).
Lệnh này kết hợp các tệp SDO với các giá trị tối thiểu và tối đa để tạo một tệp có gấp ba lần có cả số tối thiểu và tối đa, như sau: (min:max:max). Lưu ý rằng giá trị độ trễ tối đa cũng được sao chép cho giá trị độ trễ thông thường. Tập tin được tạo ra bởi lệnh này không được đảm bảo bởi các Altera để hoạt động để phân tích tối thiểu/tối đa hỗn hợp.

Chạy kịch bản như thế này: tệp sdo quartus_sh -t combine_sdo.tcl -min_sdo <min sdo> -max_sdo <max sdo tập tin> -new_sdo <new sdo tập tin>

gói yêu cầu biến

cmdline::argv0 $::quartus(args) tùy chọn đặt { \ { "min_sdo.arg" "" "Tên tập tin của SDO với thời gian phút" } \ { "max_sdo.arg" "" "" "Tên tập tin của SDO với thời gian tối đa" } { "new_sdo.arg" "" "" Tên tập tin của SDO với thời gian tối thiểu /tối đa" } \ } opts bộ mảng
[:cmdline::getoptions ::argv0 $options "Tùy chọn hỏng"] đặt

phút [open $opts(min_sdo)] đặt tối đa
[open $opts(max_sdo)] thiết lập mới
[open $opts(new_sdo) w]

# Theo dõi số hiệu dòng trong tập tin line_num 1 trong khi { 1 } { Đọc dòng tiếp theo từ tập tin sdo tối thiểu và tối đa được đặt more_min [được $min min_line] đặt more_max [được $max max_line # Kết thúc khi không có thêm dữ liệu trong tệp nếu

{
    $more_min < 0 || $more_max < 0 } { {

        Có
        thể một tệp có thể có nhiều dòng hơn dòng khác. Cảnh báo về điều đó ở đây.
        nếu { $more_min >= 0 } { cảnh báo loại post_message \ "Các đường đã bỏ qua bắt đầu bằng dòng
            $line_num trong $opts(min_sdo)" } nếu { $more_max > = 0 } { cảnh báo kiểu post_message \ "Các đường bị bỏ qua bắt đầu bằng dòng
                $line_num trong $opts(max_sdo)"
        } # Vì
        ít nhất một trong các tệp không có dữ liệu nhiều hơn, # vòng lặp phải dừng lại. break } nếu

    { [regexp {\(\d+:\d+:\d+\\)} $min_line] } { Nếu dòng có độ trễ gấp ba lần trong đó, các giá trị # phải được kết hợp # new_line làm cho văn bản in

        ra.
        # line_differences được thiết lập nếu có sự khác biệt trong các
        dòng # bên cạnh gấp ba lần độ   trễ.
        đặt new_line "" đặt line_differences 0 # Trong khi có
        gấp ba lần độ trễ trong

        dòng...
        trong khi { [regexp {\(\d+:\d+:\d+\\)} $min_line] } { # Trích xuất mọi thứ lên đến gấp ba độ trễ, giá trị độ trễ # chính nó, và mọi thứ sau

            khi # delay 
            triplet
            regexp {^(.*?\()(\d+):\d+:\d+(\.*$)} $min_line \
                match min_start min_value min_line
            regexp {^(.. *?\()\d+:\d+:(\d+)(\.*$)} $max_line \
            match max_start max_value max_line # Đặt cờ nếu có sự khác biệt trong dòng # bên cạnh gấp ba độ trễ nếu { ! [chuỗi bằng $min_start $max_start] } { đặt line_differences 1 } # Đặt gấp ba lần độ trễ kết hợp lại với nhau trong phụ lục dòng
            mới
            new_line $min_start \
                $min_value: $max_value: $max_value } # Đánh dấu bất kỳ văn bản nào trong dòng còn lại để biết
        #differences.
        nếu { ! [chuỗi bằng $min_line $max_line] } { đặt line_differences 1 } nếu { $line_differences } { cảnh báo loại post_message \ [tham gia [danh sách \ "Các phần của dòng
                           $line_num khác nhau." \
                           " $opts(min_sdo): $min_line" \
                           " $opts(max_sdo): $max_line"] \
                     "\n"]
        }
        # Đặt phần còn lại của dòng, sau khi tăng gấp ba lần độ trễ cuối cùng, # kết hợp trong phụ lục dòng mới new_line $min_line } khác { # Nếu dòng không có độ trễ gấp ba lần trong đó, # các đường từ các tệp tối thiểu và tối đa phải là # giống nhau (ngoại trừ ví dụ nếu có dấu 
        ngày
        # trong tệp). Thực hiện kiểm tra nhanh để đảm bảo các đường # giống nhau 
        và in cảnh báo nếu chúng khác biệt.
        nếu { ! [chuỗi bằng $min_line $max_line] } { cảnh báo kiểu -post_message \ [tham gia [danh sách \ "Dòng $line_num khác nhau." \ " Tệp mới chứa dòng đầu tiên
                dưới
                           đây." \ "  $opts(min_sdo): $min_line" \
                           "  $opts(max_sdo): $max_line"] \
                     "\n"] } đặt new_line $min_line }
        #

Ghi dòng ra tệp kết hợp đặt $new $new_line incr line_num } # Kết thúc vòng lặp qua các tệp. Đóng mọi thứ $min đóng $max $new post_message "Kết hợp các tệp vào

$opts(new_sdo)"

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.