Nguồn :https://nguyenquanicd.blogspot.com/ các bạn vào site để ủng hộ tác giả nha.
1. Giới thiệu về Questa SIM
Questa SIM là một trình mô phỏng của hãng Mentor Graphics hỗ trợ đa nền tảng như hệ điều hành UNIX, Linux và Windows. Nếu bạn nào đã từng sử dụng ModelSim, một trình mổ phỏng khác của Mentor Graphics, thì việc làm quen với Questa SIM rất nhanh chóng và dễ dàng.
Questa SIM hỗ trợ biên dịch các thiết kế viết bằng Verilog HDL, VHDL và SystemC và hỗ trợ mô phỏng các đối tượng viết bằng Verilog HDL, VHDL, SystemC, System Verilog, PSL, UPF (Unified Power Format).
Việc chạy mô phỏng với Questa SIM có thể thực hiện bằng giao diện phần mềm (GUI - Graphical User Interface), bằng chế độ lệnh (Command-line) hoặc bằng chế độ batch.
http://www.mediafire.com/file/38o33r07r87800p/QuestaSim10.2c.rar
3. Cài đặt
1/ Giải nén thư mục cài đặt
Sau khi giải nén, thư mục QuestaSim10.2c\Mentor Graphics Questa sim SE (64bit) 10.2c chứa các file sau:
2/ Cài đặt Questa SIM
Chạy file questasim-win64-10.2c.exe để cài đặt Questa SIM.
Chọn Next → Agree → Next → Yes → Yes
Đến cửa sổ sau đây thì chọn NO
Đây là thư viện sử dụng cho phương pháp mô phỏng mới nhất hiện nay là UVM (Universal Verification Methodology).
Chạy file regassistuvm_4.3_win.exe để cài đặt.
Chọn Next -> chọn thư mục cài đặt và Next
Copy file MentorKG.exe và patch_dll.bat trong thư mục
QuestaSim10.2c\Mentor Graphics Questa sim SE (64bit) 10.2c\c-r-a-c-k vào thư mục cài đặt c:\questasim64_10.2c\win64\
Chạy file patch_dll.bat sẽ tự động tạo ra file mgls.dll.
Chạy file MentorKG.exe, cửa sổ hiện ra như sau:
Bấm chuột phải lên Computer -> Properties -> Advanced system
4.1 Đầu vào mô phỏng
Đầu vào mô phỏng gồm một file thiết kế và một file testbench tạo giá trị ngõ vào cho việc mô phỏng thiết kế:
File RTL code của thiết kế:
File testbench:
4.2 Tạo project
Chọn File->New->Project...
Đặt tên project (Project name) và chọn đường dẫn lưu project (Project location) trong cửa sổ sau:
Bấm chuột phải vào một trong các file và chọn Compile->compile All
Chú ý, ký hiệu "?" ở cột Status biểu thị file chưa được biên dịch. Nếu biên dịch lỗi thì Status là dấu chéo màu đỏ, biên dịch tốt thì Status là dấu chỉ thị màu xanh. Xem thông tin ở cửa sổ Transcript để thấy các thông tin cảnh báo. Ví dụ ở đây, file johnson_counter.v biên dịch thành công, file tb_jc.v biên dịch lỗi.
johnson_counter dut #(.N(N)) (.clk(clk), .rst_n(rst_n), .js_count(js_count));
Tôi khai báo tên gọi module là dut đặt đằng trước việc gán giá trị tham số trong khi nó phải đặt sau như dòng code sau đây:
johnson_counter #(.N(N)) dut (.clk(clk), .rst_n(rst_n), .js_count(js_count));
Sau khi sửa, bạn hãy biên dịch lại là thành công như sau:
Sau khi biên dịch thành công, đối tượng được biện dịch sẽ xuất hiện trong thư mục work của thẻ library như sau:
1. Giới thiệu về Questa SIM
Questa SIM là một trình mô phỏng của hãng Mentor Graphics hỗ trợ đa nền tảng như hệ điều hành UNIX, Linux và Windows. Nếu bạn nào đã từng sử dụng ModelSim, một trình mổ phỏng khác của Mentor Graphics, thì việc làm quen với Questa SIM rất nhanh chóng và dễ dàng.
Questa SIM hỗ trợ biên dịch các thiết kế viết bằng Verilog HDL, VHDL và SystemC và hỗ trợ mô phỏng các đối tượng viết bằng Verilog HDL, VHDL, SystemC, System Verilog, PSL, UPF (Unified Power Format).
Việc chạy mô phỏng với Questa SIM có thể thực hiện bằng giao diện phần mềm (GUI - Graphical User Interface), bằng chế độ lệnh (Command-line) hoặc bằng chế độ batch.
- GUI: Chế độ sử dụng giao diện phần mềm để thực thi mô phỏng bằng các nút, menu tùy chọn hoặc bằng cách lệnh trong cửa sổ transcript mà giao diện hỗ trợ
- Command-line: Dùng lệnh để chạy mô phỏng bằng cửa sổ lệnh (command prompt) của hệ điều hành. Questa SIM sẽ bắt đầu thực thi với các biến được đặc tả trong file modelsim.ini, một file được trình mô phỏng tự động tạo ra, hoặc một file DO tùy chọn do người dùng tạo ra.
- Batch: Dùng lệnh để chạy mô phỏng bằng cửa sổ lệnh của hệ điều hành với các biến được nhập trực tiếp từ ngõ vào chuẩn (bàn phím) hoặc từ file; và xuất ra ngõ ra chuẩn (màn hình) hoặc file.
Hình 1. Trình tự thực thi mô phỏng trong Questa SIM
Trình tự mô phỏng gồm 5 bước cơ bản:- Thu thập các file đầu vào (Verilog, VHDL, SystemC) và ánh xạ các thư viện. Bước này tự động tạo ra file modelsim.ini như đã nói ở trên.
- Phân tích kiểm tra code và biên dịch
- Tối ưu và tạo cơ sở dữ liệu đã biên dịch
- Mô phỏng
- Gỡ lỗi (Debug)
http://www.mediafire.com/file/38o33r07r87800p/QuestaSim10.2c.rar
3. Cài đặt
1/ Giải nén thư mục cài đặt
Sau khi giải nén, thư mục QuestaSim10.2c\Mentor Graphics Questa sim SE (64bit) 10.2c chứa các file sau:
- questasim-gcc-4.5.0-mingw64.zip
- questasim-win64-10.2c.exe
- regassistuvm_4.3_win.exe
- Thuốc để tạo LICENSE
2/ Cài đặt Questa SIM
Chạy file questasim-win64-10.2c.exe để cài đặt Questa SIM.
Chọn Next → Agree → Next → Yes → Yes
Đến cửa sổ sau đây thì chọn NO
Hình 2. Cài đặt Questa SIM
3/ Cài đặt thưc viện UVM
Đây là thư viện sử dụng cho phương pháp mô phỏng mới nhất hiện nay là UVM (Universal Verification Methodology).
Chạy file regassistuvm_4.3_win.exe để cài đặt.
Chọn Next -> chọn thư mục cài đặt và Next
Hình 2. Cài đặt thư viện UVM
4/ Tạo LICENSE file cho Questa SIM
Copy file MentorKG.exe và patch_dll.bat trong thư mục
QuestaSim10.2c\Mentor Graphics Questa sim SE (64bit) 10.2c\c-r-a-c-k vào thư mục cài đặt c:\questasim64_10.2c\win64\
Chạy file patch_dll.bat sẽ tự động tạo ra file mgls.dll.
Chạy file MentorKG.exe, cửa sổ hiện ra như sau:
Hình 3. Chạy file MentorKG.exe
Chờ cho đến khi file LICENSE.txt được tạo ra và hiện lên như sau:Hình 4. File LICENSE.txt
Lưu lại file trên dưới tên license.dat trong thư mục cài đặt c:\questasim64_10.2c\win64\ Bấm chuột phải lên Computer -> Properties -> Advanced system
- Chọn Environment Variables tab -> Chọn new ở khung User variables for
- Thêm:
- Variable name: LM_LICENSE_FILE
- Variable value: c:\questasim64_10.2c\win64\license.dat
Hình 5. Thiết lập biến môi trường cho Questa SIM
Khởi động thử Questa SIM, hiện giao diện bình thường là OK.Hình 6. Giao diện Questa SIM-64 10.2c
4. Chạy mô phỏng với giao diện (GUI) của Questa SIM4.1 Đầu vào mô phỏng
Đầu vào mô phỏng gồm một file thiết kế và một file testbench tạo giá trị ngõ vào cho việc mô phỏng thiết kế:
- File thiết kế: johnson_counter.v
- File testbench: tb_jc.v
File RTL code của thiết kế:
Mã:
module johnson_counter (clk, rst_n, js_count);
//
parameter N = 4;
//
//Interface
//
input clk;
input rst_n;
output reg [N-1:0] js_count;
wire js_msb_inv;
assign js_msb_inv = ~js_count[N-1];
always @ (posedge clk) begin
if (~rst_n)
js_count[N-1:0] <= 0;
else
js_count[N-1:0] <= {js_count[N-2:0], js_msb_inv};
end
endmodule
Mã:
module tb_jc;
parameter N = 4;
//
//Interface
//
reg clk;
reg rst_n;
wire [N-1:0] js_count;
johnson_counter #(.N(N)) dut (.clk(clk), .rst_n(rst_n), .js_count(js_count));
initial begin
clk = 0;
forever #10 clk = !clk;
end
initial begin
rst_n = 0;
#20
rst_n = 1;
end
endmodule
Chọn File->New->Project...
Đặt tên project (Project name) và chọn đường dẫn lưu project (Project location) trong cửa sổ sau:
Hình 7. Tạo project
Tạo file thiết kế (Verilog, VHDL, SystemC) hoặc file mô phỏng mới (Create New File) hoặc thêm các file đã tạo sẵn vào project (Add Existing File) trong cửa sổ sau:Hình 8. Tạo mã nguồn mô phỏng
Ở đây, tôi chọn Add Existing File và dẫn đến 2 file johnson_counter.v và tb_jc.v đã được viết trước. Open->OK->CloseHình 9. Chọn file
4.3 Biên dịchBấm chuột phải vào một trong các file và chọn Compile->compile All
Hình 9. Biên dịch các file
Chú ý, ký hiệu "?" ở cột Status biểu thị file chưa được biên dịch. Nếu biên dịch lỗi thì Status là dấu chéo màu đỏ, biên dịch tốt thì Status là dấu chỉ thị màu xanh. Xem thông tin ở cửa sổ Transcript để thấy các thông tin cảnh báo. Ví dụ ở đây, file johnson_counter.v biên dịch thành công, file tb_jc.v biên dịch lỗi.
Hình 10. Cảnh báo trên cửa sổ Transcript
Nếu lỗi, hãy nhấp chột vào dòng cảnh báo trên cửa sổ Transcript để biết lý do và vị trí lỗi. Như ví dụ này, file tb_jc.v bị lỗi ở dòng 10 gần ký hiệu "#" và đây là lỗi cú pháp. Dòng 10 như sau:johnson_counter dut #(.N(N)) (.clk(clk), .rst_n(rst_n), .js_count(js_count));
Tôi khai báo tên gọi module là dut đặt đằng trước việc gán giá trị tham số trong khi nó phải đặt sau như dòng code sau đây:
johnson_counter #(.N(N)) dut (.clk(clk), .rst_n(rst_n), .js_count(js_count));
Sau khi sửa, bạn hãy biên dịch lại là thành công như sau:
Hình 11. Biên dịch lại các file
4.4 Chạy mô phỏngSau khi biên dịch thành công, đối tượng được biện dịch sẽ xuất hiện trong thư mục work của thẻ library như sau:
Hình 12. Thẻ library
Bấm chuột phải vào đối tượng testbench tb_jc để chọn chế độ chạy mô phỏng. Ở đây, tôi chọn simulate without optimization để tạo ra các tín hiệu có thể quan sát dạng sóng.Hình 12. Chạy mô phỏng
Sau khi thực thi, một vài cửa số khác hiện lên gồm:- Cửa sổ sim thể hiện cấu trúc thứ bậc của các đối tượng đang được mô phỏng. Ví dụ, tb_jc gọi thiết kế có tên dut. Ngang cấp với dut là hai khối initial. Bên trong dut có 1 khối always và một phát biểu assign.
- Cửa số Objects thể hiện các tín hiệu, biến tương ứng có trong đối tượng bên cửa sổ sim.
- Cửa sổ Wave sẽ là nơi để quan sát dạng sóng các tín hiệu
Hình 13. Lấy tín hiệu để xem dạng sóng
Chú ý bên trên thanh công cụ có một nhóm các button để điều khiển việc chạy mô phỏng. Ở đây tôi chọn chạy mô phỏng với thời gian 500 ns. Bấm run cạnh ô 500 ns.Hình 14. Chạy mô phỏng và xem waveform