Contoh Quartus® II Tcl: Membuka Proyek

author-image

Oleh

Hampir setiap skrip Quartus II Tcl membuka proyek. Ada sejumlah pendekatan untuk proyek pembukaan, dan halaman ini mencakup sampel kode untuk proyek pembukaan.

Hal ini berguna untuk menulis skrip sehingga nama proyek dan revisi dilewatkan ke skrip pada waktu operasi, sebagai argumen baris perintah. Hal ini memudahkan penggunaan kembali skrip dengan proyek yang berbeda. Paket cmdline Tcl, disertakan dengan perangkat lunak Quartus II, memudahkan untuk meneruskan argumen baris perintah ke skrip.

Berikut adalah contoh kode yang membuka proyek dengan nama proyek dan revisi yang Anda sebutkan sebagai argumen baris perintah.

paket memerlukan pilihan rangkaian cmdline
{\
    { "project.arg" "" "Project name" } \
    { "revisi.arg" "" "Revision name" }
} array set
opts [:cmdline::getoptions quartus(args) $options]

project_open $opts(project) -revisi $opts(revisi)

Pada prompt DOS atau shell, Anda dapat menjalankan skrip yang berisi kode tersebut seperti yang ditunjukkan di sini:

quartus_sh -t script.tcl -project top -revisi terlebih dahulu

Meningkatkan Kode Sampel

Ada berbagai cara agar kode contoh dapat dimodifikasi untuk menambahkan pemeriksaan dan peningkatan.

Pemeriksaan Kesalahan Sederhana

Perintah project_open menghasilkan galat jika proyek yang ditentukan tidak ada. Gunakan perintah project_exists untuk memeriksa apakah ada sebelum membukanya, seperti yang ditunjukkan dalam contoh ini:

paket memerlukan pilihan set cmdline
{\
    { "project.arg" "" "Project name" } \
    { "revisi.arg" "" "Revision name" }
} array set
opts [::cmdline::getoptions quartus(args) $options]

jika { ![ project_exists $opts(project)] } {
    post_message -type error "Project $opts(project) tidak ada"
    exit
}

project_open $opts(project) -revisi $opts(revisi)

Menangani Nama Revisi yang Tidak Ditentukan

Anda juga dapat mengubah contoh kode untuk menangani kasus ketika nama revisi tidak ditentukan sebagai argumen baris perintah. Dengan beberapa contoh kode di bawah ini, Anda perlu menentukan nama revisi hanya jika ada lebih dari satu revisi dalam proyek Anda. Dengan yang lain, kode dapat secara otomatis membuka revisi bawaan tertentu bahkan jika ada lebih dari satu revisi dalam proyek Anda.

Perintah Quartus II Tcl project_open bawaan untuk membuka revisi dengan nama yang sama seperti proyek yang ditentukan jika tidak ada nama revisi yang ditentukan dengan opsi -revisi. Contoh ini mengilustrasikan fungsionalitas bawaan dari perintah project_open.

paket memerlukan pilihan rangkaian cmdline
{\
    { "project.arg" "" "Project name" } \
    { "revisi.arg" "" "Revision name" }
} array set
opts [:cmdline::getoptions quartus(args) $options]

jika { [string equal "" $opts(revisi)] } {
    project_open $opts(project) -revisi $opts(project)
} else {
    project_open $opts(project) -$opts revisi(revisi)
}

Anda dapat menggunakan contoh kode berikut untuk memodifikasi perilaku tersebut dengan berbagai cara yang menghemat waktu saat Anda menjalankan skrip. Contoh ini menentukan kapan tidak ada nama revisi yang ditentukan sebagai argumen baris perintah dan menggunakan cara lain untuk menentukan nama revisi yang digunakan dengan opsi -revisi untuk perintah project_open.

Default ke Nama Revisi

Anda dapat menggunakan kode berikut untuk membuka proyek dengan hanya satu revisi ketika nama revisi tidak ditentukan sebagai argumen baris perintah. Proyek dengan satu revisi biasanya memiliki revisi dan nama proyek yang sama, tetapi itu tidak diperlukan. Menggunakan perintah project_open tanpa opsi -revisi menghasilkan galat ketika nama revisi proyek tidak cocok dengan nama proyek.

Contoh ini menggunakan perintah get_project_revisions untuk mengambil daftar semua revisi dalam proyek yang ditentukan. Jika hanya ada satu revisi (panjang daftar adalah 1), skrip menggunakan nama revisi tersebut untuk membuka proyek. Menggunakan daftar nama revisi menjamin proyek akan terbuka dengan benar, bahkan jika nama revisi berbeda dari nama proyek.

paket memerlukan pilihan rangkaian cmdline
{\
    { "project.arg" "" "Project name" } \
    { "revisi.arg" "" "Revision name" }
} array set
opts [::cmdline::getoptions quartus(args) $options]

jika { [string sama dengan "" $opts((revisi)] } {
    set revisi [get_project_revisions $opts(project)]
    if { 1 == [llength $revisions] } {
        set opts(revisi) [lindex $revisions 0]
    } else { post_message
        -type error \
            "Lebih dari satu revisi dalam project \
            $opts(project)."
        keluar
    }
}

project_open $opts(proyek) -$opts revisi(revisi)

Bawaan ke Revisi Saat Ini

Anda dapat menggunakan kode berikut untuk membuka proyek dan bawaan ke revisi saat ini, jika Anda tidak menentukan nama revisi sebagai argumen baris perintah. Revisi saat ini adalah revisi yang terakhir kali Anda kerjakan sebelum menutup proyek. Dalam proyek dengan satu revisi, revisi itu selalu merupakan revisi saat ini. Contoh ini menggunakan perintah get_current_revision untuk mengambil nama revisi saat ini untuk proyek yang ditentukan.

paket memerlukan pilihan rangkaian cmdline
{\
    { "project.arg" "" "Project name" } \
    { "revisi.arg" "" "Revision name" }
} array set
opts [:cmdline::getoptions quartus(ar gs) $options]

jika { [string equal "" $opts(revisi)] } {
    set opts(revisi) [get_current_revision $opts(project)]
}

project_open $opts(project) -revisi $opts(revisi)

Nama Revisi Cetak

Dalam beberapa kasus, Anda mungkin ingin meminta nama revisi jika ada lebih dari satu revisi dalam proyek, dan jika tidak ada yang disediakan, lihat daftar nama revisi. Anda dapat menggunakan kode berikut untuk mencetak semua revisi ketika nama revisi tidak ditentukan sebagai argumen baris perintah, dan ada lebih dari satu revisi dalam proyek. Contoh ini menggunakan perintah get_project_revisions untuk mengambil daftar semua revisi dalam proyek.

paket memerlukan opsi set cmdline
{\
    { "project.arg" "" "Project name" } \
    { "revisi.arg" "" "Revision name" }
} array set
opts [:cmdline::getoptions quartus(args) $options]

if { [string equal "" $opts(revisi)] } {
    post_message "Anda tidak menentukan nama revisi.
    set revisi [get_project_revisions $opts(proyek)]
    jika { 1 == [llength $revisions] } {
        set opts(revisi) [lindex $revisions 0]
        post_message "Ada satu $opts revisi(revisi)"
    } lain { post_message
        "Revisi ini ada dalam proyek:"
        revisi peramal $revisions {
            post_message "$revision"
        } exit } }

project_open $opts(project) -$opts revisi(revisi)

Contoh Gabungan

Contoh-contoh ini menggambarkan cara menggabungkan beberapa peningkatan yang dijelaskan di atas.

Contoh 1

Contoh sederhana berikut memverifikasi proyek yang ditentukan ada. Jika tidak ada nama revisi yang ditentukan sebagai argumen baris perintah, maka akan membuka revisi saat ini. Jika tidak, proyek ini membuka proyek dengan nama revisi yang dinyatakan sebagai argumen baris perintah.

paket memerlukan pilihan set cmdline
{\
    { "project.arg" "" "Project name" } \
    { "revisi.arg" "" "Revision name" }
} array set
opts [::cmdline::getoptions quartus(args) $options]

jika {[project_exists $opts(project)]} {
    if {[string equal "" $opts(revisi)]} {
        project_open $opts(project) -revisi \
            [get_current_revision $opts(project)]
    } else {
        project_open $opts(project) -revisi $opts(revisi)
    } } else { post_message
    -type galat "Project $opts(proyek) tidak ada"
    keluar
}

Dimulai dengan versi 4.1 dari perangkat lunak Quartus II (versi 3.0 dari paket ::quartus::p roject), perintah project_open mendukung opsi -current_revision. Jika Anda menggunakan perangkat lunak Quartus II versi 4.1 atau yang lebih baru, Anda dapat mengganti perintah berikut di skrip di atas

project_open $opts(proyek) -revisi \
            [get_current_revision $opts(proyek)]

dengan perintah ini

project_open $opts(proyek) -current_revision

Contoh 2

Contoh berikut menggabungkan sejumlah peningkatan yang diilustrasikan di atas. Ini memverifikasi proyek yang ditentukan ada, dan membukanya jika hanya ada satu revisi. Jika ada lebih dari satu revisi, revisi akan mencetak daftar revisi dan keluar.

paket memerlukan pilihan set cmdline
{\
    { "project.arg" "" "Project name" } \
    { "revisi.arg" "" "Revision name" }
} array set
opts [::cmdline::getoptions quartus(args) $options]

jika { ![ project_exists $opts(project)] } {
    post_message -type error "Project $opts(project) not exist"
    exit } if {

[string equal "" $opts(revisi)] } {
    post_message "Anda tidak menentukan nama revisi.
    set revisi [get_project_revisions $opts(proyek)]
    jika { 1 == [llength $revisions] } {
        set opts(revisi) [lindex $revisions 0]
        post_message "Ada satu $opts revisi (revisi)vision)"
    } else { post_message
        "Revisi ini ada dalam proyek:"
        $revisions revisi foreach {
            post_message "$revision"
        } exit } }

project_open $opts(project) -revisi $opts(revisi)

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.