Hầu như mọi kịch bản Quartus II Tcl đều mở ra một dự án. Có một số cách tiếp cận để mở dự án, và trang này bao gồm các mẫu mã cho các dự án mở.
Việc viết kịch bản sao cho tên dự án và bản sửa đổi được chuyển sang lệnh tại thời điểm chạy là tham số dòng lệnh rất hữu ích. Điều này giúp dễ dàng sử dụng lại các kịch bản với các dự án khác nhau. Gói cmdline Tcl, đi kèm với phần mềm Quartus II, giúp dễ dàng chuyển các tham số dòng lệnh cho các lệnh.
Dưới đây là một ví dụ về mã mở một dự án với tên dự án và phiên bản sửa đổi mà bạn chỉ định là tham số dòng lệnh.
gói yêu cầu tùy chọn bộ cmdline {\ { "project.arg" "" "" "Tên dự án" } \ { "revision.arg" "" "Revision name" } } array set opts [::cmdline::getoptions quartus(args) $options] project_open $opts(project) -phiên bản $opts(bản sửa đổi)
Tại dấu nhắc DOS hoặc shell, bạn có thể chạy một lệnh chứa mã đó như được hiển thị ở đây:
quartus_sh-t script.tcl -project top -revision trước
Cải thiện mã mẫu
Có nhiều cách mã ví dụ có thể được sửa đổi để thêm kiểm tra và cải tiến.
Kiểm tra lỗi đơn giản
Lệnh project_open tạo ra lỗi nếu dự án được chỉ định không tồn tại. Sử dụng lệnh project_exists để kiểm tra xem nó có tồn tại trước khi mở nó hay không, như được hiển thị trong ví dụ này:
gói yêu cầu tùy chọn bộ cmdline {\ { "project.arg" "" "" "Tên dự án" } \ " revision.arg" "" "Phiên bản tên" } } opts bộ mảng [::cmdline::getoptions quartus(args) $options] nếu { ![ project_exists $opts(project)] } { lỗi kiểu post_message "Project $opts(project) không tồn tại" exit } project_open $opts(project) -revision $opts(phiên bản)
Xử lý Tên phiên bản sửa đổi không xác định
Bạn cũng có thể sửa đổi mã ví dụ để xử lý các trường hợp khi tên phiên bản không được chỉ định là tham số dòng lệnh. Với một số ví dụ mã dưới đây, bạn chỉ cần xác định tên phiên bản sửa đổi nếu có nhiều hơn một phiên bản trong dự án của bạn. Với những người khác, mã này có thể tự động mở các phiên bản mặc định nhất định ngay cả khi có nhiều hơn một phiên bản trong dự án của bạn.
Lệnh Quartus II Tcl project_open mặc định mở bản sửa đổi với tên giống với dự án được chỉ định nếu không có tên phiên bản được chỉ định với tùy chọn -revision. Ví dụ này minh họa chức năng mặc định của lệnh project_open mềm.
gói yêu cầu tùy chọn bộ cmdline {\ { "project.arg" "" "" "Tên dự án" } \ { "revision.arg" "" "Phiên bản tên" } } opts bộ mảng [::cmdline::getoptions quartus(args ) $options] nếu { [chuỗi bằng "" $opts(phiên bản)] } { project_open $opts(dự án) -phiên bản $opts(dự án) } khác { project_open $opts(dự án) -phiên bản $opts(phiên bản) }
Bạn có thể sử dụng các ví dụ mã sau đây để sửa đổi hành vi đó theo nhiều cách khác nhau giúp tiết kiệm thời gian khi bạn chạy lệnh. Các ví dụ này xác định thời điểm không có tên phiên bản sửa đổi nào được chỉ định làm tham số dòng lệnh và sử dụng các cách khác để xác định tên phiên bản sửa đổi để sử dụng với tùy chọn -revision cho lệnh project_open lệnh.
Mặc định là Tên bản sửa đổi
Bạn có thể sử dụng mã sau để mở một dự án chỉ với một bản sửa đổi khi tên phiên bản không được chỉ định là tham số dòng lệnh. Các dự án chỉ có một phiên bản sửa đổi thường có cùng tên dự án và sửa đổi, nhưng không bắt buộc. Sử dụng lệnh project_open sửa đổi mà không có tùy chọn -revision sẽ tạo ra lỗi khi tên phiên bản của dự án không khớp với tên dự án.
Ví dụ này sử dụng lệnh get_project_revisions truy xuất danh sách tất cả các phiên bản trong dự án được chỉ định. Nếu chỉ có một bản sửa đổi (độ dài danh sách là 1), tập lệnh sẽ sử dụng tên phiên bản đó để mở dự án. Sử dụng danh sách tên phiên bản đảm bảo dự án sẽ mở đúng, ngay cả khi tên phiên bản khác với tên dự án.
gói yêu cầu tùy chọn bộ cmdline {\ { "project.arg" "" "" "Tên dự án" } \ { "revision.arg" "" "Revision name" } } array set opts [:cmdline::getoptions quartus(args) $options] nếu { [chuỗi bằng "" $opts(} { thiết lập sửa đổi [get_project_revisions $opts(dự án)] nếu { 1 == [llength $revisions] } { set opts(phiên bản) [lindex $revisions 0] } khác { lỗi kiểu post_message \ "Nhiều hơn một bản sửa đổi trong dự án \ $opts(dự án)." thoát } } project_open $opts(project) -revision $opts(phiên bản)
Mặc định là bản sửa đổi hiện tại
Bạn có thể sử dụng mã sau đây để mở một dự án và mặc định là bản sửa đổi hiện tại, nếu bạn không chỉ định tên phiên bản làm tham số dòng lệnh. Bản sửa đổi hiện tại là bản sửa đổi mà bạn đã làm việc với cuối cùng trước khi đóng dự án. Trong một dự án có một bản sửa đổi, bản sửa đổi đó luôn là bản sửa đổi hiện tại. Ví dụ này sử dụng lệnh get_current_revision truy xuất tên phiên bản sửa đổi hiện tại cho dự án được chỉ định.
gói yêu cầu tùy chọn bộ cmdline {\ { "project.arg" "" "" "Tên dự án" } \ { "revision.arg" "" "Revision name" } } array set opts [::cmdline::getoptions quartus((args) $options] nếu { [chuỗi bằng "" $opts(phiên bản)] } { set opts(phiên bản) [get_current_revision $opts(dự án)] } project_open $opts(dự án) -phiên bản $opts(phiên bản)
Tên bản sửa đổi in
Trong một số trường hợp, bạn có thể cần phải yêu cầu tên hiệu chỉnh nếu có nhiều hơn một bản sửa đổi trong dự án và nếu không được cung cấp, hãy xem danh sách tên phiên bản sửa đổi. Bạn có thể sử dụng mã sau để in tất cả các bản sửa đổi khi tên phiên bản không được chỉ định làm tham số dòng lệnh và có nhiều hơn một bản sửa đổi trong dự án. Ví dụ này sử dụng lệnh get_project_revisions để truy xuất danh sách tất cả các phiên bản trong dự án.
gói yêu cầu tùy chọn bộ cmdline {\ { "project.arg" "" "Tên dự án" } \ { "revision.arg" "" "Revision name" } } array set opts [::cmdline::getoptions quartus(args) $options] nếu { [string equal "" $opts(phiên bản)] } { post_message "Bạn không xác định tên phiên bản sửa đổi. set revisions [get_project_revisions $opts(project)] nếu { 1 == [llength $revisions] } { set opts(phiên bản) [lindex $revisions 0] post_message "Có một bản sửa đổi $opts(bản sửa đổi)" } khác { post_message "Các bản sửa đổi này tồn tại trong dự án:" bản sửa đổi trước $revisions { post_message "$revision" } thoát } } project_open $opts(dự án) -phiên bản $opts(phiên bản)
Ví dụ kết hợp
Các ví dụ này minh họa cách kết hợp một số cải tiến được mô tả ở trên.
Ví dụ 1
Ví dụ đơn giản sau đây xác minh dự án được chỉ định tồn tại. Nếu không có tên phiên bản được chỉ định dưới dạng tham số dòng lệnh, nó sẽ mở bản sửa đổi hiện tại. Nếu không, nó sẽ mở dự án với tên phiên bản được chỉ định là tham số dòng lệnh.
gói yêu cầu tùy chọn bộ cmdline {\ { "project.arg" "" "" "Tên dự án" } \ { "revision.arg" "" "Phiên bản tên" } } opts bộ mảng [::cmdline::getoptions quartus(args) $options] nếu {[project_exists $opts (project)]} { nếu {[string equal "" $opts(phiên bản)]} { project_open $opts(project) -revision \ [get_current_revision $opts(project)] } khác { project_open $opts(project) -revision $opts(phiên bản sửa đổi) } } khác { post_message -type lỗi "Project $opts(project) không tồn tại" exit }
Bắt đầu với phiên bản 4.1 của phần mềm Quartus II (phiên bản 3.0 của gói ::quartus::p roject), lệnh project_open hỗ trợtùy chọn - current_revision. Nếu bạn sử dụng phiên bản 4.1 trở lên của phần mềm Quartus II, bạn có thể thay thế lệnh sau trong kịch bản trên
project_open $opts(project) -revision \ [get_current_revision $opts(project)]
với lệnh này
project_open $opts(dự án) -current_revision
Ví dụ 2
Ví dụ sau kết hợp một số cải tiến được minh họa ở trên. Nó xác minh dự án được chỉ định tồn tại và mở nó nếu chỉ có một bản sửa đổi. Nếu có nhiều hơn một bản sửa đổi, nó sẽ in danh sách các bản sửa đổi và thoát.
gói yêu cầu tùy chọn bộ cmdline {\ { "project.arg" "" "" "Tên dự án" } \ " revision.arg" "" "Phiên bản tên" } } opts bộ mảng [::cmdline::getoptions quartus(args) $options] nếu { ![ project_exists $opts(project)] } { lỗi kiểu post_message "Project $opts(project) không tồn tại" exit } nếu { [chuỗi bằng "" $opts(bản sửa đổi)] } { post_message "Bạn không xác định tên phiên bản sửa đổi. set revisions [get_project_revisions $opts(project)] nếu { 1 == [llength $revisions] } { set opts(phiên bản) [lindex $revisions 0] post_message "Có một bản sửa đổi $opts(phiên bản)" } khác { post_message "Các bản sửa đổi này tồn tại trong dự án:" bản sửa đổi trước $revisions { post_message "$revision" } thoát } } project_open $opts(dự án) -phiên bản $opts(phiên bản)