Quartus® II Tcl: Waktu Node Cari

author-image

Oleh

Node dalam netlist timing Quartus II dengan ID, yang bilangan bulat positif. Setiap node nama, nama dalam netlist pasca-pas. Saat Anda dengan netlist waktu dengan perintah di paket ::quartus::advanced_timing, umumnya node caride dari namanya. Misalnya, Anda mungkin ingin beraspal kipas pin I/O. Untuk semua hal, Anda perlu id node yang memiliki nama pin yang ingin Anda lacak. Contoh prosedur ini cari semua node waktu di netlist untuk nama yang Anda sajakan dan kembali ID node yang cocok, -1 jika tidak ada.

paket persamaan ::quartus::advanced_timing

proc find { name } {
    
    foreach_in_collection node_id [get_timing_nodes -type all] {

        set node_name [get_timing_node_info -info name $node_id]
           
        jika] { [string equal $name $node_name ] } } {
            return $node_id
        } } return   
    
    -1
}

Dalam skrip Tcl, Anda dapat prosedur anda dapat seperti yang ditunjukkan dalam teladan:

set id [menemukan clk_33MHz]
jika { $id == -1 } { post_message
    -type warning "Tidak ada clock pin node"
}

Meningkatkan Kode Sampel

Ada cara agar kode contoh dapat ditingkatkan.

Wildcard Dukungan Akan Dijumlahkan & Beberapa ID yang Berbayar

Mengharuskan kecokan yang tepat tidak untuk nyaman nama dengan jalur hierarki yang panjang. Contoh untuk kecocokan wildcard kecokan dengan jalur hierarki yang panjang. Dengan modifikasi tambahan untuk kembali beberapa ID node untuk kecocokan, Anda dapat menggunakan skrip untuk node ID grup kembali. Ini mudah iterasi di bit dalam bus, misalnya.

Karena wildcard dapat mencokkan lebih dari satu nama, Anda perlu dukung beberapa ID yang berbakat. Cara mudah untuk semua orang adalah daftar daftar ID node dengan nama yang cocok dengan polanya. Jika tidak ada nama yang cocok dengan pola tersebut, daftar kosong akan kembali.

Contoh contoh kota ini semua node di netlist waktu dan kembali daftar pada setiap ID node yang nama nama yang cocok dengan polanya. Teladan ini pencocokan gaya glob Tcl, dengan dukungan untuk tanda bintang (*), tanda tanya (?), dan braket kuning ([]).

paket memerlukan ::quartus::advanced_timing

proc find { pattern } {
    
    set return_ids {} foreach_in_collection node_id
    [get_timing_nodes -type all] {

        set node_name [get_timing_node_info -info nama $node_id] jika {
           
        [string cocok $pattern $node_name ] } {
            lappend return_ids $node_id
        } } return   
    
    $return_ids
}

Ingatlah bahwa Tcl menggunakan braket kuning untuk mencokkan karakter agar dalam perintah tali pencokan. Memanggil perintah seperti yang ditunjukkan dalam teladan dengan addr1 dan addr0, bukan addr[10]!

set kecokan [cari addr[10]]

Nama bus dengan nama braket berbingkai kuningan untuk mengindikasikan bit individu, Anda harus keluar dari pola braket panjang yang digunakan sebagai bus pemilih bit. Memanggil perintah seperti yang ditunjukkan dalam contoh kota, dengan perintah escape_brackets, node ID kembali untuk node yang bernama addr[10].

set kecokan [escape_brackets addr[10]]

Anda harus selalu perintah escape_brackets untuk keluar dari pola yang Anda lewati ke perintah menemukan braket berniat anda dengan menggunakan senapan kuning untuk karakter rentang rentang yang cocok.

Node Jenis Pemfilteran Yang Dilekatkan

Anda mungkin ingin jenis node yang dicari untuk nama yang cocok. Hal ini dapat mempercepat pencicipan dalam desain dengan timing besar netlist. Anda dapat menggunakan opsi -tipe untuk perintah get_timing_nodes untuk node di dalam node dalam yang kembali ke pin, daftar, clock, dan jenis node lainnya.

Contoh contoh kecocokan pola terdaerah. Jika tidak ada pola yang besar, bawaannya ke*, untuk mencocokkan semua. Ada opsi untuk jenis node, yang bawaan untuk semua.

Contoh ini adalah paket cmdline Tcl, yang disertakan dengan program Quartus II, untuk pengaturan cara mudah untuk bersabar menargetkan dari dalam prosedur dengan cara mendokumentasikan mandiri.

paket memerlukan ::quartus::advanced_timing
paket memerlukan cmdline

proc find { args } {
    
    set options {\
        { "pattern.arg" "*" "Pattern to search for" } \
        { "type.arg" "all" "Node type to search" } \
    } array set
    opts [:cmdline:::getoptions args $options]

    set return_ids {} foreach_in_collection node_id
    [get_timing_nodes -type $opts(type)] {

        set node_name [get_timing_node_info -info name $node_id]
           
        jika { [string cocok $opts(pola) $node_name ] } {
            return_ids $node_id lappend
        } } return   
    
    $return_id
}

Kode bungkus keramaian beberapa cara contoh contoh yang telah dijadikan contoh.

# Waktu netlist node NODE # Kembali setiap ID.
# Pola bawaan ke *
# Ketik bawaan untuk semua
# Node ID Kembali dari semua pin 

di netlist waktu
# Pola bawaan * temukan
-type pin # Pin node Kembali

yang dimulai dengan
addr cari -pattern addr* -type pin

# Node Id Kembali dari register di bit 0 dari bus
find -pattern [escape_brackets *[0]] -type reg]

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.