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)
2. Download gói cài đặt
3. Cài đặt
3.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 cho tool
Chạy file questasim-win64-10.2c.exe để cài đặt Questa SIM.
Chọn Next → Agree → Next → Yes → Yes
Đâ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
3.4/ C/C++ compiler cho môi trường UVM
Hình 3. Cài đặt thư viện UVM |
Giải nén file questasim-gcc-4.5.0-mingw64.zip và copy thư mục "gcc-4.5.0-mingw64" vào thư mục cài đặt QuestaSim. Đây là gcc compiler dùng để tổng hợp DPI (Direct Programming Interface) dùng cho môi trường mô phỏng UVM.
Lỗi thường gặp khi thiếu C/C++ compiler:
Lỗi thường gặp khi thiếu C/C++ compiler:
** Fatal: (vsim-7019) Can't locate a C/C++ compiler for 'DPI Export Compilation'.3.5/ Tạo thuốc 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:
Chờ cho đến khi file ".txt" sau được tạo ra và hiện lên như sau:
Hình 4. Chạy file MentorKG.exe |
Hình 5. File *.txt |
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\<tên file>.dat đã tạo ở trên
Hình 6. 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.
4. Chạy mô phỏng với giao diện (GUI) của Questa SIM
Hình 7. Giao diện Questa SIM-64 10.2c |
4.1 Đầu vào mô phỏng
Đầu vào mô phỏng gồm một file thiết kế (đây là bộ đếm Johnson tham khảo ở lilnk sau http://nguyenquanicd.blogspot.com/2017/08/verilog-rtl-code-mo-ta-cac-loai-bo-em.html) 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
Ở đây file testbench chỉ cần tạo xung clock clk và reset ban đầu rst_n.
File RTL code của thiết kế:
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
File testbench:
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
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:
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:
Ở đâ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->Close
4.3 Biên dịch
Hình 8. Tạo project |
Hình 9. Tạo mã nguồn mô phỏng |
Hình 10. Chọn file |
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.
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:
Hình 11. Biên dịch các file |
Hình 12. Cảnh báo trên cửa sổ Transcript |
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));
4.4 Chạy mô phỏng
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:
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 14. Thẻ library |
- 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
Lựa chọn các tín hiệu cần quan sát, bấm chuột phải và Add wave
Hình 16. Lấy tín hiệu để xem dạng sóng |
1) 2019.July.13 - Thêm mục 3.4 C/C++ compiler cho môi trường UVM
2) 2020.Jan.04 - Sửa link hình ảnh
3) 2020.Apr.25 - Sửa link tải QuestaSim
2) 2020.Jan.04 - Sửa link hình ảnh
3) 2020.Apr.25 - Sửa link tải QuestaSim
Share link questa sim bản 10.4e x86
Trả lờiXóahttps: / / drive.google.com /open?id=1yN0wrdAOZ2LOcDJLUi4zKIlhqbE_tDPt (bỏ các dấu cách)
Hi Trường, mình đã thử link của bạn (đã bỏ các dấu khoảng trắng) nhưng không được. Bạn còn link nào khác không?
Xóa:)))), sorry a, gg drive đầy nên e xóa bớt
Xóaupdate link
https://drive.google.com/file/d/1xqVvPQi7-GonbZxhNCrdqefEujStaM_S/view?usp=sharing
https://drive.google.com/file/d/1ucSKXbJuW7pSgalwmtxMHMWpqT_1Pxev/view?usp=sharing
Cảm ơn Truong Tran,
XóaHi anh, Link download tool hình như bị hỏng, anh check lại thử nhé.
Trả lờiXóaLink đã được cập nhật
XóaHi a em gặp lỗi license khi cài xog bước 3.5 ở trên mở ứng dụng lên thì báo lỗi như sau ạ:
Trả lờiXóa"Unable to checkout a viewer license necessary for use of the QuestaSim graphical interface" ạ!
Mong a giải đáp giúp với ạ. Em xin cảm ơn
Mình cũng bị tương tự, không biết bạn fix được chưa?
Xóaanh ơi, crack và cài đặt trên Ubuntu như nào ạ? em cảm ơn
Trả lờiXóaunable to checkout a viewer license necessary for use of the QuestasSim graphic user interface.
Trả lờiXóaMình bị lỗi này, có cách nào fix ko ạ?
bạn fix được chưa ạ
Xóa