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

Thảo luận trong 'ASIC CĂN BẢN' bắt đầu bởi Lu ROm, 5 Tháng bảy 2018.

Chia sẻ trang này

Lượt xem: 182

  1. Lu ROm

    By:Lu ROmin: 5 Tháng bảy 2018
    Administrator Staff Member

    Tham gia ngày:
    25 Tháng bảy 2014
    Bài viết:
    475
    Đã được thích:
    102
    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.
    • 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.
    upload_2018-7-5_11-36-5.png
    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

    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:
    1. questasim-gcc-4.5.0-mingw64.zip
    2. questasim-win64-10.2c.exe
    3. regassistuvm_4.3_win.exe
    4. 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
    upload_2018-7-5_11-36-43.png
    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
    upload_2018-7-5_11-37-6.png
    upload_2018-7-5_11-37-24.png
    Hình 2. Cài đặt thư viện UVM
    4/ Tạo LICENSE file cho Questa SIM
    Copy file MentorKG.exe 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:
    upload_2018-7-5_11-37-33.png
    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:
    upload_2018-7-5_11-37-48.png
    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
    upload_2018-7-5_11-38-1.png
    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.
    upload_2018-7-5_11-38-14.png
    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 SIM
    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ế:
    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ế:
    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
    File testbench:
    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 
    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:
    upload_2018-7-5_11-39-24.png
    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:
    upload_2018-7-5_11-39-34.png
    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 tb_jc.v đã được viết trước. Open->OK->Close
    upload_2018-7-5_11-39-47.png
    Hình 9. 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
    upload_2018-7-5_11-40-1.png
    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.
    upload_2018-7-5_11-40-14.png
    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:
    upload_2018-7-5_11-40-34.png
    Hình 11. 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:
    upload_2018-7-5_11-40-44.png
    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.
    upload_2018-7-5_11-40-55.png
    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
    Lựa chọn các tín hiệu cần quan sát, bấm chuột phải và Add wave
    upload_2018-7-5_11-41-10.png
    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.
    upload_2018-7-5_11-41-21.png
    Hình 14. Chạy mô phỏng và xem waveform
     

    Bài viết cùng chủ đề: