Thứ Bảy, 5 tháng 8, 2017

[Questa SIM] Hướng dẫn cài đặt và chạy mô phỏng cơ bản với Questa SIM

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:
  1. 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.
  2. Phân tích kiểm tra code và biên dịch
  3. Tối ưu và tạo cơ sở dữ liệu đã biên dịch
  4. Mô phỏng
  5. 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:
  1. questasim-gcc-4.5.0-mingw64.zip
  2. questasim-win64-10.2c.exe
  3. regassistuvm_4.3_win.exe
  4. Thuốc cho tool
3.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.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 3. Cài đặt thư viện UVM
3.4/ C/C++ compiler cho môi trường 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:
** 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:
Hình 4. Chạy file MentorKG.exe
Chờ cho đến khi file ".txt" sau được tạo ra và hiện lên như sau:
Hình 5. File *.txt
Lưu lại file trên dưới tên với đuôi mở rộng .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\<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.
Hình 7. Giao diện Questa SIM-64 10.2c
4. Chạy mô phỏng với giao diện (GUI) của Questa SIM

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ế:
  1. File thiết kế: johnson_counter.v
  2. 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:
Hình 8. 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 9. 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 tb_jc.v đã được viết trước. Open->OK->Close
Hình 10. Chọn file
4.3 Biên dịch
Bấm chuột phải vào một trong các file và chọn Compile->compile All
Hình 11. 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 12. 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 13. Biên dịch lại các file

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:
Hình 14. 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 15. 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
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
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 17. Chạy mô phỏng và xem waveform

Lịch sử cập nhật:
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

11 bình luận:

  1. Share link questa sim bản 10.4e x86
    https: / / drive.google.com /open?id=1yN0wrdAOZ2LOcDJLUi4zKIlhqbE_tDPt (bỏ các dấu cách)

    Trả lờiXóa
    Trả lời
    1. 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
    2. :)))), sorry a, gg drive đầy nên e xóa bớt

      update link
      https://drive.google.com/file/d/1xqVvPQi7-GonbZxhNCrdqefEujStaM_S/view?usp=sharing

      https://drive.google.com/file/d/1ucSKXbJuW7pSgalwmtxMHMWpqT_1Pxev/view?usp=sharing

      Xóa
  2. Hi anh, Link download tool hình như bị hỏng, anh check lại thử nhé.

    Trả lờiXóa
  3. Hi 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 ạ:
    "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

    Trả lờiXóa
    Trả lời
    1. Mình cũng bị tương tự, không biết bạn fix được chưa?

      Xóa
  4. anh ơi, crack và cài đặt trên Ubuntu như nào ạ? em cảm ơn

    Trả lờiXóa
  5. unable to checkout a viewer license necessary for use of the QuestasSim graphic user interface.
    Mình bị lỗi này, có cách nào fix ko ạ?

    Trả lờiXóa