Bài 6 - Tự động mô phỏng

Một phần của tài liệu Các hệ phần mềm thiết kế chuyên dụng, Tự động thiết kế điện tử và lập trình FPGA (Trang 158 - 162)

Qua việc thao tác một cặp file đã có sẵn DO những bài học trước tập trung và việc sử dụng ModelSim dưới dạng đối thoại: thực thi những lệnh đơn, từng lệnh một, thông qua menu GUI hoặc dòng lệnh cửa sổ Main. Trong trường hợp mà bạn phải thực hiện những nhiệm vụ mang tính lặp lại, bạn có thể tăng hiệu quả làm việc với những file DO.

Những file DO là những văn bản mà nó cho phép bạn thực hiện nhiều lệnh tại một thời điểm. Đoạn văn bản này có thể là một chuỗi lệnh đơn của ModelSim với đối số tương ứng, hoặc chúng có thể là những chương trình phát triển của TCL với những điều kiện thực thi có thể thay đổi được… Bạn có thể thực thi file DO từ trong GUI hoặc bạn có thể chạy chúng từ dấu nhắc lệnh của hệ thống không cần gọi ra GUI.

Tạo ra một file DO đơn giản

Tạo ra một file DO đơn giản như khi bạn gõ vào những lệnh dưới dạng văn bản. Hoặc cách khác bạn có thể lưu trữ bản sao cửa sổ Main như một file DO.

Trong bài tập này bạn sẽ sử dụng bản sao để tạo ra một file DO mà nó thêm những tín hiệu vào cửa sổ Wave, đảm bảo kích thích lên những tín hiệu đó, và sau đó đưa ra mô phỏng.

1. Gọi ra thiết kế test_counter a. Khởi động ModelSim

b. Thay đổi thư mục mà bạn tạo ra trong bài 2 - mô phỏng cơ bản

c. Trong Library tab của Workspace, nhấn đúp lên test_counter để gọi ra

2. Đưa vào những lệnh để thêm những tín hiệu vào cửa sổ Wave, và chạy mô phỏng

a. Chọn File > New > Source > Do để tạo ra một file DO mới b. Đưa vào những câu lệnh sau trong cửa sổ nguồn

add wave count add wave clk add wave reset

force -freeze clk 0 0, 1 {50 ns} -r 100 force reset 1

run 100 force reset 0 run 300 force reset 1 run 400 force reset 0 run 200

3. Lưu trữ file

a. Chọn File > Save As.

b. Gõ vào sim.do trong trường tên file và lưu trữ nó trong thư mục hiện hành

4. Gọi ra mô phỏng một lần nữa và sử dụng file DO a. Gõ vào quit-sim tại dấu nhắc VSIM>

b. Gõ vào vsim test_counter tại dấu nhắc ModelSim >

c. Gõ vào do sim.do tại dấu nhắc VSIM>

ModelSim thực thi những lệnh đã lưu trữ và vẽ ra dạng sóng trong cửa sổ Wave

5. Khi bạn đã làm xong với bài tập này chọn File > Quit để thoát ra khoi ModelSim.

Chạy ModelSim dưới dạng dòng lệnh

Chúng ta sử dụng thuật ngữ command-line mode để chỉ việc mô phỏng mà trong đó có chạy từ một dấu nhắc DOS/ UNIX không gọi ra GUI. Một vài lệnh của ModelSim (ví dụ: vsim, vlib, vlog ...) có thể thực thi một cách độc lập và có thể gọi ra từ dấu nhắc. Thêm vào đó bạn có thể tạo ra một file DO bao gồm những câu lệnh của ModelSim và xác định file đó khi bạn gọi ra mô phỏng.

1. Tạo một thư viện mới và copy những file ví dụ vào trong đó. Khởi động bằng cách tạo ra một thư viện mới cho bài tập này. Tạo một thư viện và copy những file đó vào trong:

• \<install_dir>\modeltech\examples\counter.vhd

• \<install_dir>\modeltech\examples\stim.do

2. Tạo một thư viện thiết kế mới và biên dịch file nguồn.

Một lần nữa đưa vào những câu lệnh đó tại dấu nhắc DOS/ UNIX trong thư viện mới mà bạn đã tạo ra trong bước 1.

a. Gõ vào vlib work tại dấu nhắc DOS/ UNIX b. Với vhdl gõ vào counter.vhd.

3. Tạo ra một file DO

a. Mở một cửa sổ soạn thảo văn bản b. Gõ những dòng sau vào một file mới

# list all signals in decimal format add list -decimal *

# read in stimulus do stim.do

# output results write list counter.lst

# quit the simulation quit -f

c. Lưu trữ file với cái tên sim.do và đặt nó trong thư viện hiện hành 4. Chạy mô phỏng dạng batch-mode

Gõ vào vsim -c -do sim.do counter -wlf counter.wlf tại dấu nhắc DOS/ UNIX.

Đối số -c chỉ cho ModelSim không gọi ra GUI. Đối số –wlf lưu trữ kết quả mô

phỏng trong file WLF. Điều này cho phép bạn quan sát kết quả mô phỏng trong GUI để gỡ rối.

5. Quan sát đầu ra

Mở counter.lst và quan sát kết quả mô phỏng:

ns /counter/count delta /counter/clk /counter/reset 0 +0 x z * 1 +0 0 z * 50 +0 0 * * 100 +0 0 0 * 100 +1 0 0 0 150 +0 0 * 0 151 +0 1 * 0 200 +0 1 0 0 250 +0 1 * 0

6. Quan sát kết quả trong GUI. Do bạn lưu trữ kết quả mô phỏng trong counter.wlf, bạn có thể thấy chúng trong GUI bằng cách gọi ra VSIM với đối số - view

a. Gõ vào Type vsim -view counter.wlf tại dấu nhắc DOS/ UNIX. GUI mở và tập dữ liệu có tên là counter được hiển thị trong Workspace (Hình 4.62)

b. Nhấn đúp vào counter và chọn Add > Add to Wave. Dạng sóng sẽ hiển thị trong cửa sổ Wave

7. Khi bạn hoàn thành việc quan sát kết quả, chọn File > Quit để đóng ModelSim

Hình 4.62: Mở tập dữ liệu Sử dụng Tcl với ModelSim

Những file DO sử dụng trong bài tập trước chỉ bao gồm các câu lệnh ModelSim. Tuy nhiên, những file DO thực sự là những bản sao của Tcl. Điều này có nghĩa rằng bạn có thể liên kết với tính đa dạng của cấu trúc Tcl ví dụ như các thủ tục, câu lệnh có điều kiện, các hàm toán học và lượng giác…

Trong bài tập này bạn sẽ tạo ra một bản sao đơn giản Tcl kiểm tra cho những giá trị nào đó trên tín hiệu và sau đó thêm vào bookmarks mà nó hiển thị cửa sổ Wave khi giá trị đó tồn tại. Bookmarks cho phép bạn lưu trữ giới hạn zoom cụ thể và vị trí thanh cuộn trong cửa sổ Wave.

1. Tạo một bản sao

a. Trong môi trường soạn thảo văn bản, mở một file mới và đưa vào những dòng sau:

proc add_wave_zoom {stime num} { echo "Bookmarking wave $num"

bookmark add wave "bk$num" "[expr $stime - 50] [expr $stime + 100]" 0 }

Những dòng đó thực hiện như sau:

• Tạo một thủ tục tên là "add_wave_zoom" có hai đối số là stime and num

• Tạo một bookmark với giới hạn zoom từ - 50 lần đến +100 lần so với trạng thái mô phỏng hiện thời

b. Bây giờ hãy thêm vào add wave -r /*

when {clk'event and clk="1"} { echo "Count is [exa count]"

if {[exa count]== "00100111"} { add_wave_zoom $now 1

} elseif {[exa count]== "01000111"} { add_wave_zoom $now 2

} }

Những dòng đó thực hiện như sau:

• Thêm tất cả tín hiệu vào cửa sổ Wave

• Sử dụng câu lệnh when để nhận dạng khi clk chuyển lên 1

• Xem xét một giá trị của count tại lúc chuyển trạng thái đó và thêm vào bookmark nếu nó là một giá trị nào đó

c. Lưu trữ bản sao với cái tên "add_bkmrk.do."

Lưu trữ nó vào trong thư viện mà bạn đã tạo ra trong bài 2 – mô phỏng cơ bản 2. Tải ra thiết kế test_counter

a. Khởi động ModelSim

b. Chọn File > Change Directory và thay đổi tới thư mục mà bạn đã lưu trữ file DO trong bước 1c

c. Trong Library tab của cửa sổ Main, mở rộng thư viện work và nhấn đúp vào thiết kế test_counter

3. Thực thi file DO và chạy thiết kế

a. Gõ vào do add_bkmrk.do tại dấu nhắc VSIM>

b. Gõ vào run 1500 ns tại dấu nhắc VSIM>

c. Chạy mô phỏng và file DO tạo ra hai bookmark. Chọn View> Bookmarks

> bm1

Xem cửa sổ Wave zoom và cuộn tới thời điểm count là 00100111. cũng như vậy thử với bm2 bookmark

Một phần của tài liệu Các hệ phần mềm thiết kế chuyên dụng, Tự động thiết kế điện tử và lập trình FPGA (Trang 158 - 162)

Tải bản đầy đủ (PDF)

(231 trang)