Trong bài này bạn sẽ thực hành làm việc với nhiều thư viện. Như đã thảo luận trong bài 1 – tổng quan khái niệm về ModelSim, bạn có thể có nhiều thư viện để tổ chức thiết kế của bạn, truy cập IP từ các nhà cung cấp khác hay cùng sử dụng các phần chung giữa các mô phỏng.
Bạn sẽ bắt đầu bài học bằng cách tạo một thư viện nguồn mà chứa đơn vị thiết kế counter. Tiếp theo, bạn sẽ tạo một dự án và biên dịch testbench vào đó. Cuối cùng, bạn sẽ kết nối đến thư viện chứa file counter và chạy mô phỏng.
Các file thiết kế cho bài học A.
Thiết kế mẫu đơn giản cho bài này là một bộ đếm tăng binary 8 bit với một file testbench kèm theo. Sau đây là các đường dẫn:
Verilog – <install_dir>/modeltech/examples/counter.v và tcounter.v VHDL – <install_dir>/modeltech/examples/counter.vhd và tcounter.vhd Bài này dùng các file Verilog tcounter.v và counter.v trong các ví dụ. Nếu bạn dùng bản VHDL, dùng các file tcounter.vhd và counter.vhd.
Đọc thêm
ModelSim User’s Manual, 3 - Design libraries (UM-45) 1. Tạo một thư mục cho thư viện nguồn.
Tạo một thư mục gọi là resource_library. Copy counter.v từ
<install_dir>/modeltech/examples lên thư mục đó.
2. Tạo một thư mục cho testbench.
Tạo một thư mục gọi là testbench mà sẽ giữ testbench và các file dự án. Copy tcounter.v từ <install_dir>/modeltech/examples lên thư mục mới.
Bạn đang tạo 2 thư mục cho bài này để bắt chước như khi bạn nhận một thư viện từ người thiết kế khác. Như đã nói trước đây, chúng tôi sẽ kết nối tới thư viện tài nguyên trong thư mục đầu tiên ở phần sau bài này.
3. Khởi động ModelSim và thay đổi đến thư mục thực hành.
Nếu vừa làm xong bài trước, ModelSim sẽ sẵn sàng luôn. Nếu không, khởi động lại ModelSim.
a Gõ vsim tại dấu nhắc lệnh UNIX hoặc kích biểu tượng ModelSim trong Windows. Nếu hộp thoại Welcome to ModelSim xuất hiện, kích Close.
b Chọn File > Change Directory và thay đổi tới thư mục resource_library mà bạn đã tạo trong bước 1
4. Tạo thư viện tài nguyên.
a. Chọn File > New > Library.
b. Gõ parts_lib trong trường Library Name (Hình 4.29).
Trường Library Physical Name được điền tự động. Khi bạn kích OK, ModelSim tạo một thư mục cho thư viện, liệt kê nó trong thanh Library tab của Workspace, và hiệu chỉnh file modelsim.ini để ghi thư viện mới này cho sau này.
5. Biên dịch counter vào thư viện tài nguyên.
Hình 4.29: Biên dịch counter vào thư viện tài nguyên.
a. Kích biểu tượng Compile trên thanh công cụ ở cửa sổ.
b. Chọn thư viện parts_lib từ Library list (Hình 4.29).
c. Kích đúp vào counter.v để biên dịch file.
d. Kích Done. Bạn đã có thư viện tài nguyên mà có chứa một phiên bản được dịch của đơn vị thiết kế counter.
6. Chuyển sang thư mục testbench.
a Chọn File > Change Directory và chuyển sang thư mục testbench mà đã tạo ở bước 2.
Hình 4.30: counter đã được đưa vào thư viện tài nguyên Tạo một dự án.
Bây giờ bạn sẽ tạo một dự án có chứa tcounter.v, và testbench của nó.
1. Tạo một dự án.
a. Chọn File > New > Project.
b. Gõ counter vào trường Project Name.
c. Gõ OK.
d. Nếu một hộp thoại hiện ra và hỏi là dùng file modelsim.ini nào, Kích Use Default Ini.
2. Đặt testbench vào dự án.
a. Kích Add Existing File trong các đề mục (Add items) vào Project.
b. Kích nút Browse và chọn tcounter.v.
c. Kích Open và sau đó là OK.
d. Kích Close để đưa các mục Add vào hộp thoại Project.
File tcounter.v được liệt kê trong thanh tab Project của cửa sổ Main.
3. Biên dịch testbench.
a. Kích phải tcounter.v và chọn Compile > Compile Selected.
Để kết thúc phần này, bạn sẽ liên kết đến thư viện parts_lib mà bạn đã tạo trước đây. Nhưng trước hết, thử mô phỏng testbench mà không cần đến liên kết này để xem điều gì sẽ xảy ra.
ModelSim đáp ứng khác nhau giữa Verilog và VHDL ở phần mô phỏng này.
Verilog
1. Mô phỏng một thiết kế Verilog mà không có thư viện tài nguyên.
a. ở thanh tab Library, Kích biểu tượng ’+’gần thư viện work và kích đúp vào test_counter.
Bản ghi của cửa sổ Main sẽ thông báo một lỗi (Hình 4.31). Khi bạn thấy một thông báo chứa nội dung như : Error: (vsim-3033)", bạn có thể xem kỹ hơn bằng lệnh verror.
b. Gõ verror 3033 tại dấu nhắc lệnh.
Một thông báo mở rộng cho bạn biết một đơn vị thiết kế không được tìm thấy để thực hiện mô phỏng. Nó cũng cho thông báo lỗi gốc liệt kê những thư viện mà ModelSim đã tìm. ở đây, thông báo gốc cho biết ModelSim chỉ tìm ở thư viện work.
VHDL
1. Mô phỏng một thiết kế VHDL không có thư viện tài nguyên.
a. ở thanh tab Library, Kích biểu tượng ’+’gần thư viện work và kích đúp vào test_counter.
Bản ghi của cửa sổ Main sẽ thông báo một cảnh báo (Hình 4.32). Khi bạn thấy một thông báo chứa nội dung như "Warning: (vsim-3473)", bạn có thể xem kỹ hơn bằng lệnh verror.
b. Gõ verror 3473 tại dấu nhắc lệnh ModelSim> prompt.
Một thông báo mở rộng cho bạn biết là một thành phần (ở đây là ’dut’) đã không được đưa ra rõ ràng và không tìm được binding mặc định.
c. Gõ quit -sim để thoát mô phỏng.
Hình 4.31: Lỗi mô phỏng Verilog được thông báo trên cửa sổ Main
Hình 4.32: Cảnh báo mô phỏng VHDL trên cửa sổ Main
Liên kết tới thư viện tài nguyên
Quá trình liên kết tới thư viện tài nguyên khác nhau giữa Verilog và VHDL.
Nếu bạn dùng Verilog, làm theo các bước trong "Linking in Verilog".
Nếu bạn dùng VHDL, làm theo các bước trong "Linking in VHDL" ở trang tiếp theo.
Liên kết tới Verilog
Liên kết trong Verilog yêu cầu bạn định rõ một “thư viện tìm kiếm " khi bạn tiến hành mô phỏng.
1. Định rõ một thư viện tìm kiếm khi tiến hành mô phỏng.
a. Kích biểu tượng Simulate trên thanh công cụ ở cửa sổ Main.
b. Kích biểu tượng ’+’ gần thư viện work và chọn test_counter.
c. Chọn thanh tab Libraries.
d. Kích nút Add cạnh trường Search Libraries và quét tới parts_lib trong thư mục đầu tiên bạn đã tạo ở phần trước trong bài này.
e. Kích OK. Hộp thoại sẽ có parts_lib được liệt kê ở trường Search Libraries (Hình 4.33).
f. Kích OK. Thiết kế được tải lên mà không có thông báo lỗi.
Hình 4.33: Ánh xạ tới thư viện parts_lib Liên kết trong VHDL
Để liên kết đến thư viện tài nguyên trong VHDL, bạn phải tạo một ánh xạ logic tới thư viện vật lý và sau đó đặt LIBRARY và các phát biểu USE tới file nguồn.
1. Tạo một ánh xạ logic tới thư viện parts_lib.
a. Chọn File > New > Library.
b. Trong hộp thoại Create a New Library chọn ánh xạ tới một library đã có.
c. Gõ parts_lib trong trường Library Name.
d. Kích Browse để mở hộp thoại Select Library và quét đến parts_lib trong thư mục resource_library đã tạo ở phần trước. Kích OK để chọn thư viện và đóng hộp thoại Select Library.
e. Hộp thoại Create a New Library giống như Hình 4.34.
2. Đặt các phát biểu LIBRARY và USE vào tcounter.vhd.
a. Trên thanh tab Library của cửa sổ Main, kích biểu tượng ’+’ cạnh thư viện work.
b. Kích phải test_counter trong thư viện work và chọn Edit. Điều này mở file trong cửa sổ Source.
c. Đặt hai dòng sau lên trên cùng của file:
LIBRARY parts_lib;
USE parts_lib.ALL;
Mã nguồn của testbench trông giống như Hình 4.35.
d. Chọn File > Save.
3. Biên dịch lại và mô phỏng.
a. ở thanh tab Project của cửa sổ Main, kích phải tcounter.vhd và chọn Compile > Compile Selected.
b. ở thanh tab Library, kích đúp test_counter để tải thiết kế. Thiết kế được tải không có lỗi.
Hình 4.34: Thiết lập một thư viện mới
Hình 4.35: Mã nguồn của testbench Ánh xạ các thư viện tài nguyên
Nếu bạn tham chiếu các thư viện tài nguyên cụ thể trong tất cả các dự án hoặc mô phỏng, bạn có thể muốn ánh xạ lâu dài các thư viện đó. Để làm việc này bạn cần soạn thảo file modelsim.ini trong thư mục cài đặt. Mặc dù không được thực hành ở bài này, sau đây là các bước để tạo file đó:
1. Xác định file modelsim.ini trong thư mục cài đặt ModelSim.
2. Tạo một file dự phòng.
3. Thay đổi các thuộc tính của file Modelsim.ini không còn "read-only".
4. Mở file và nhập các ánh xạ thư viện của bạn trong khu [Library]. Ví dụ : parts_lib = C:/libraries/parts_lib
5. Lưu lại ( SAVE).
6. Thay đổi các thuộc tính của file để trở về "read-only".
Kết thúc bài tập
Trước khi tiếp tục bạn cần kết thúc mô phỏng hiện tại và đóng dự án lại.
1 Chọn Simulate > End Simulation. Kích Yes.
2 Chọn thanh tab Project của Workspace ở cửa sổ Main.
3 Chọn File > Close. Kích OK.