Bối cảnh và vấn đề nghiên cứu

Trong lĩnh vực kiến trúc máy tính và thiết kế vi mạch, các kiến trúc tập lệnh độc quyền phổ biến thương mại như Arm hay x86 của Intel đòi hỏi chi phí bản quyền rất cao, tạo rào cản lớn cho các nhà nghiên cứu, trường đại học và các đơn vị phát triển quy mô nhỏ trong việc tiếp cận và tùy biến. Sự ra đời của RISC-V — một kiến trúc tập lệnh mã nguồn mở (Open-source ISA) do Đại học California, Berkeley phát triển từ năm 2010 và chính thức ban hành chuẩn vào tháng 3/2019 — đã mang lại giải pháp thay thế linh hoạt, cho phép nghiên cứu, thiết kế và sản xuất bộ vi xử lý mà không bị ràng buộc pháp lý hay chi phí bản quyền.

Tại Việt Nam, việc nghiên cứu và ứng dụng kiến trúc RISC-V còn khá mới mẻ. Để phục vụ quá trình thiết kế và xác minh chức năng của bộ xử lý phần cứng, việc xây dựng một bộ mô phỏng tập lệnh (Instruction Set Simulator - ISS) đóng vai trò then chốt, hoạt động như một mô hình tham chiếu chuẩn ("mô hình tham chiếu vàng") độc lập với phần cứng. Đề tài khóa luận tốt nghiệp kỹ sư ngành Kỹ thuật Máy tính của tác giả Nguyễn Văn Hạnh tập trung vào việc nghiên cứu và thiết kế bộ mô phỏng tập lệnh RISC-V, đồng thời tích hợp khả năng đo lường độ bao phủ kiểm thử phục vụ hệ thống xác minh chức năng vi xử lý.

Mục tiêu nghiên cứu được xác định cụ thể như sau:

  1. Mục tiêu tổng quan: Xây dựng một bộ mô phỏng tập lệnh RISC-V (ISS) có khả năng thực thi các chương trình hợp ngữ theo kiến trúc tập lệnh RISC-V, tính toán độ bao phủ dựa trên cấu hình người dùng và đảm bảo tính độc lập với phần cứng.
  2. Mục tiêu chi tiết:
    • Tìm hiểu chuyên sâu kiến trúc tập lệnh RISC-V; thiết kế bộ mô phỏng hỗ trợ thực thi 37 lệnh cơ bản thuộc tập lệnh số nguyên 32-bit (RV32I) trải rộng trên 6 định dạng lệnh: R-type, I-type, S-type, SB-type, U-type và UJ-type.
    • Xây dựng cơ chế thực thi từng lệnh và các chế độ gỡ lỗi (debug) nhằm phát hiện sai sót trong quá trình mô phỏng.
    • Phát triển module tính toán độ bao phủ (coverage) dựa trên các tiêu chí trong tệp cấu hình của người dùng, hỗ trợ đánh giá chất lượng các bộ kiểm tra ngẫu nhiên (RISC-V RTG).
    • Đảm bảo tính độc lập phần cứng của bộ mô phỏng thông qua việc đối chuẩn với các mô hình phần cứng RTL khác nhau.

Đối tượng nghiên cứu của đề tài là kiến trúc tập lệnh RISC-V 32-bit số nguyên (RV32I) cùng các giải thuật biên dịch hợp ngữ và mô phỏng thực thi phần mềm. Phạm vi nghiên cứu giới hạn ở tập lệnh RV32I cơ sở gồm 32 thanh ghi đa dụng 32-bit (x0 luôn có giá trị bằng 0, x1–x31) và thanh ghi đếm chương trình (PC), được hiện thực và kiểm thử trên môi trường máy tính thông qua ngôn ngữ lập trình Python.

Cơ sở lý thuyết và phương pháp

Khóa luận dựa trên nền tảng lý thuyết về kiến trúc tập lệnh RISC-V và hệ thống xác minh chức năng vi xử lý (Functional Verification System). Kiến trúc RISC-V được cấu trúc theo dạng mô-đun, bao gồm tập cơ sở số nguyên (RV32I, RV32E, RV64I, RV128I) và các tập lệnh mở rộng tiêu chuẩn như M (nhân/chia số nguyên), A (nguyên tử), F (số thực dấu chấm động đơn), D (số thực dấu chấm động kép), C (lệnh nén), cùng kiến trúc đa dụng RV32G (kết hợp I, M, A, F, D). Tập lệnh RV32I hoạt động theo mô hình nạp-lưu (Load-Store Architecture), nghĩa là chỉ các lệnh nạp (Load) và lưu (Store) mới truy cập trực tiếp vào bộ nhớ, còn tất cả các phép toán số học và luận lý đều thao tác trên thanh ghi.

Trong hệ thống xác minh vi xử lý tổng thể, ISS là một mắt xích thuộc chuỗi công cụ gồm:

  • Bộ phát sinh chương trình kiểm tra ngẫu nhiên (Random Test Generator - RTG / ISG): Tạo ra các ca kiểm thử (testcases) dạng mã hợp ngữ bằng cách ngẫu nhiên hóa việc chọn lệnh, thanh ghi, địa chỉ và dữ liệu.
  • Testbench Controller: Khối điều khiển nạp chương trình kiểm tra vào ISS và môi trường mô phỏng RTL.
  • ISS (Instruction Set Simulator): Mô hình tham chiếu cấp cao mô phỏng hành vi xử lý, cập nhật thanh ghi và bộ nhớ.
  • RTL Simulation: Mô phỏng phần cứng ở mức chuyển đổi thanh ghi (thường áp dụng các phương pháp như OVM, UVM).
  • Comp-runner: Bộ so sánh trạng thái kết quả giữa ISS và RTL simulation để xác định tính đúng đắn của phần cứng, đồng thời xử lý các sai lệch về mặt thời gian (chẳng hạn do hiệu ứng đường ống - pipeline trong RTL).
  • Coverage Monitor: Bộ giám sát và thống kê độ bao phủ (tần suất lệnh, thanh ghi, rẽ nhánh, truy xuất bộ nhớ).

Phương pháp nghiên cứu được tác giả triển khai bao gồm:

  1. Phương pháp nghiên cứu tài liệu: Tổng hợp lý thuyết đặc tả RISC-V ISA, các nghiên cứu mô phỏng quốc tế tiêu biểu như FireSim (mô phỏng chính xác chu kỳ dựa trên FPGA và đám mây), Vulcan (bộ mô phỏng RISC-V trên nền web phục vụ giáo dục), HybridVerifier (nền tảng xác minh lỗi dựa trên ngõ ra trình mô phỏng).
  2. Phương pháp thực hiện kỹ thuật: Ứng dụng quy trình phát triển phần mềm gồm các giai đoạn: Phân tích yêu cầu, Thiết kế kiến trúc/thuật toán, Lập trình hiện thực trên ngôn ngữ Python 3, Kiểm thử và Tối ưu.
  3. Phương pháp đánh giá và đối chuẩn:
    • So sánh tính năng của ISS với hai bộ mô phỏng đã công bố: Mars 4.5 (dành cho kiến trúc MIPS) và RISC-V Interpreter.
    • So sánh trực tiếp giá trị các thanh ghi sau khi thực thi cùng một chương trình hợp ngữ kiểm thử giữa bộ mô phỏng ISS và ba thiết kế phần cứng RTL độc lập: bộ vi xử lý RISC-V multithread, bộ vi xử lý RISC-V đa lõi (multi-core), và bộ xử lý RISC-V hỗ trợ chế độ giám sát.

Thiết kế và triển khai

Bộ mô phỏng được lập trình bằng ngôn ngữ Python 3 theo hướng đối tượng (OOP), sử dụng môi trường Visual Studio và Spyder. Kiến trúc tổng thể của hệ thống bao gồm hai thành phần xử lý chính:

Thành phần Đầu vào Chức năng xử lý Đầu ra
Assembler (Trình biên dịch hợp ngữ) Tệp mã nguồn hợp ngữ (.s) Loại bỏ khoảng trắng và chú thích, phân tích và giải quyết các nhãn dán (labels), ánh xạ cú pháp sang mã máy nhị phân 32-bit theo 6 định dạng chuẩn. Tệp chương trình mã máy (binary_out.txt)
Instruction Set Simulator (ISS) Tệp mã máy (.txt) và Tệp cấu hình (configuration file) Phân tích giải mã opcode, thực thi logic 37 lệnh RV32I, cập nhật giá trị PC, thanh ghi (x0-x31) và bộ nhớ; đồng thời tính toán độ bao phủ theo tiêu chí cấu hình. Báo cáo trạng thái thanh ghi/bộ nhớ, kết quả gỡ lỗi và tệp thống kê độ bao phủ (coverage_total)

Thuật toán của trình Assembler được tổ chức thành 7 bước tuần tự:

  1. Bắt đầu phiên làm việc.
  2. Đọc từng dòng lệnh từ tệp mã nguồn hợp ngữ .s.
  3. Xử lý khoảng trắng thừa và loại bỏ các đoạn chú thích (comment).
  4. Phân tích, định vị và xử lý các nhãn địa chỉ (labels), viết lại tệp hợp ngữ chuẩn hóa.
  5. Biên dịch từng câu lệnh hợp ngữ thành chuỗi mã máy nhị phân tương ứng và ghi ra tệp nhị phân.
  6. Kiểm tra điều kiện kết thúc tệp nguồn; lặp lại bước 2 nếu chưa duyệt hết.
  7. Hoàn tất quá trình biên dịch.

Tệp cấu hình (configuration file) cho phép người dùng định lượng các tiêu chí đánh giá độ bao phủ kiểm thử, bao gồm 10 tham số cốt lõi:

  • .Instnum(37): Kiểm tra độ bao phủ toàn bộ 37 lệnh cơ bản.
  • .InstImmRange(-100, 100, 10): Đánh giá khoảng giá trị tức thời (Immediate) được tạo trong đoạn [-100, 100] với số lần khởi tạo mục tiêu là 10.
  • .RegDest(32) và .RegSource(32): Kiểm tra việc sử dụng đầy đủ 32 thanh ghi làm thanh ghi đích (rd) và thanh ghi nguồn (rs1, rs2).
  • .RegDuplication(32): Kiểm tra trường hợp thanh ghi nguồn và thanh ghi đích trùng nhau.
  • .JumpForwardTime(20) và .JumpBackwardTime(20): Đếm số lần thực hiện lệnh nhảy tiến và nhảy lùi (mục tiêu 20 lần).
  • .BranchForward(1) và .BranchBack(1): Kiểm tra số lần rẽ nhánh tiến và rẽ nhánh lùi (mục tiêu 1 lần).
  • .MemSeq(5): Kiểm tra chuỗi truy xuất bộ nhớ liên tục (mục tiêu 5 lần).

ISS hỗ trợ 2 chế độ vận hành chính:

  1. Chế độ chạy tự động (Run Program): Đọc tuần tự tất cả các tệp mã máy, thực thi liên tục toàn bộ chương trình, ghi nhận trạng thái và tính toán tổng kết độ bao phủ dựa trên các tham số cấu hình đã nạp.
  2. Chế độ gỡ lỗi (Debug): Cho phép người dùng chọn tệp mã máy cụ thể. Người dùng có thể thiết lập danh sách điểm dừng (breakpoints) theo địa chỉ dòng lệnh để chương trình tự động chạy và dừng kiểm tra trạng thái tại từng điểm ngắt; hoặc chọn chế độ chạy từng lệnh (step-by-step) bằng cách nhấn phím Enter để theo dõi sự thay đổi của PC, giá trị tức thời, thanh ghi nguồn và thanh ghi đích sau mỗi chu kỳ lệnh.

Nội dung chính theo từng chương

Chương 1. Giới thiệu đề tài

Chương mở đầu trình bày bối cảnh ra đời của kiến trúc tập lệnh mã nguồn mở RISC-V, phân tích động lực nghiên cứu nhằm giảm chi phí bản quyền vi xử lý và thúc đẩy nghiên cứu vi mạch trong nước. Tác giả khảo sát các công trình mô phỏng tiêu biểu trên thế giới (FireSim, Vulcan, HybridVerifier) và giới thiệu vị trí của ISS trong hệ thống xác minh vi xử lý hoàn chỉnh gồm RTG, Testbench Controller, RTL Simulation, Comp-runner và Coverage Monitor. Chương này cũng xác định rõ 4 mục tiêu cụ thể và quy trình phương pháp luận 5 bước của khóa luận.

Chương 2. Sơ lược về kiến trúc tập lệnh RISC-V

Chương 2 phân tích cấu trúc kỹ thuật của kiến trúc RISC-V và hệ thống xác minh chức năng. Tác giả trình bày bảng phân loại các tập lệnh cơ sở và mở rộng (RV32I, RV32E, RV64I, RV128I, M, A, F, D, Q, L, C). Tập trung vào RV32I, chương phân tích cấu trúc định dạng trường bit (opcode, rd, funct3, rs1, rs2, funct7, imm) của 6 định dạng lệnh (R, I, S, SB, U, UJ) và phân loại 47 lệnh RV32I theo 9 nhóm chức năng: rẽ nhánh (BEQ, BNE, BLT, BGE, BLTU, BGEU), nạp dữ liệu (LB, LH, LW, LBU, LHU, FLW, FLD, LUI), lưu dữ liệu (SB, SH, SW, FSW, FSD), số học và luận lý (ADDI, SLTI, AND, OR, XOR, SLL, SRL, SRA, SUB, AUIPC...), nguyên tử, hệ thống, đồng bộ (FENCE), và nhảy (JAL, JALR). Đồng thời, chương làm rõ nguyên lý hoạt động của từng khối trong hệ thống xác minh chức năng bộ xử lý.

Chương 3. Thiết kế đề xuất

Chương 3 đi sâu vào thiết kế chi tiết hệ thống mô phỏng bằng Python 3. Tác giả trình bày sơ đồ khối kiến trúc luồng dữ liệu giữa Assembler, Configuration file, Binary test program, ISS và Coverage report. Thuật toán 7 bước của Assembler được mô tả chi tiết kèm ví dụ chuyển đổi từ hợp ngữ sang mã nhị phân. Chương định nghĩa cấu trúc của 10 tiêu chí trong tệp cấu hình và sơ đồ thuật toán vận hành của ISS với hai nhánh chức năng riêng biệt: Run Program (thực thi hàng loạt và tính coverage) và Debug (chạy với điểm ngắt Breakpoint hoặc thực thi từng bước Step-by-step).

Chương 4. Mô phỏng và đánh giá kết quả

Chương 4 trình bày quy trình thực nghiệm mô phỏng và phân tích kết quả đạt được. Tác giả minh họa luồng thực thi trên một chương trình hợp ngữ mẫu, hiển thị giao diện dòng lệnh về sự thay đổi của thanh ghi và bộ nhớ (định dạng Hex và Binary). Kết quả tính toán độ bao phủ được ghi nhận trong tệp coverage_total với chỉ số độ bao phủ trung bình đạt 92.4% (trong ví dụ thực nghiệm). Chương tiến hành đối sánh chức năng với bộ mô phỏng Mars 4.5 và RISC-V Interpreter, đồng thời đối chiếu dữ liệu thanh ghi đầu ra của ISS với kết quả mô phỏng dạng sóng RTL từ 3 đề tài phần cứng vi xử lý (multithread, đa lõi, chế độ giám sát) để chứng minh tính đúng đắn và khả năng độc lập phần cứng của thiết kế.

Kết luận và hướng phát triển

Phần kết luận tổng hợp những ưu điểm đã đạt được của bộ mô phỏng (hỗ trợ 37 lệnh RV32I, tính toán coverage linh hoạt, kiểm soát bộ nhớ/thanh ghi, đa dạng chế độ chạy) và thẳng thắn chỉ ra hạn chế về mặt giao diện CLI cũng như chế độ Debug chưa tối ưu. Hướng phát triển đề xuất tập trung vào việc hoàn thiện công cụ gỡ lỗi, thiết kế giao diện đồ họa người dùng (GUI) và tích hợp thêm các tập lệnh mở rộng tiêu chuẩn.

Kết quả và đóng góp

Khóa luận đã hoàn thành các mục tiêu kỹ thuật đặt ra và thu được các kết quả cụ thể:

  • Hiện thực thành công bộ mô phỏng ISS: Thực thi chính xác 37 lệnh cơ bản thuộc kiến trúc RV32I trải đều trên 6 định dạng lệnh (R-type, I-type, S-type, SB-type, U-type, UJ-type).
  • Tính toán độ bao phủ kiểm thử (Coverage): Module Coverage Monitor tích hợp trong ISS cho phép đọc tệp cấu hình 10 tiêu chí, theo dõi động quá trình thực thi và xuất báo cáo độ bao phủ chi tiết (kết quả thực nghiệm minh họa đạt chỉ số Medium_Coverage là 92.4%).
  • Hỗ trợ công cụ gỡ lỗi: Cung cấp hai chế độ gỡ lỗi trực quan trên dòng lệnh gồm thiết lập mảng điểm dừng (breakpoint) và thực thi từng lệnh đơn (step-by-step), hiển thị rõ ràng trạng thái thanh ghi và bộ nhớ dưới dạng Hexadecimal và Binary.
  • Xác thực độc lập phần cứng: Kết quả đầu ra của ISS khi thực thi chuỗi lệnh kiểm thử phức tạp (gồm các khối Initialization, Loop0, Loop1, Loop2, Main, Pass, Fail) đã cho giá trị thanh ghi hoàn toàn trùng khớp với kết quả mô phỏng RTL từ ba thiết kế phần cứng vi xử lý khác nhau: vi xử lý multithread, vi xử lý đa lõi (multi-core), và vi xử lý hỗ trợ chế độ giám sát.

Bảng tổng hợp đối sánh tính năng giữa ISS của đề tài với các bộ mô phỏng liên quan:

Tiêu chí so sánh Mars 4.5 (MIPS) RISC-V Interpreter Bộ mô phỏng ISS (Đề tài)
Chuỗi lệnh thực thi Thực thi lệnh MIPS Thực thi tập lệnh RV32I Thực thi 37 lệnh thuộc 6 dạng lệnh RV32I
Tính toán độ bao phủ Không đề cập Không đề cập Có (Tính toán theo tiêu chí tệp cấu hình)
Chế độ thực thi Run all và Step-by-step Run all và Step-by-step Run Program, Step-by-step, Breakpoint
Quản lý thanh ghi Thể hiện giá trị thay đổi Thể hiện giá trị thay đổi Thể hiện giá trị thay đổi (Hex & Binary)
Quản lý bộ nhớ Truy cập và thay đổi bộ nhớ Truy cập và thay đổi bộ nhớ Truy cập và thay đổi bộ nhớ
Giao diện người dùng Giao diện đồ họa (GUI) Không đề cập Giao diện dòng lệnh (CLI)

Đóng góp chính của khóa luận là đã xây dựng thành công một công cụ mô phỏng phần mềm độc lập phần cứng, có khả năng kết nối vào hệ thống xác minh vi xử lý để làm mô hình tham chiếu chuẩn (Golden Model), hỗ trợ đánh giá hiệu quả phát sinh mã kiểm tra của khối RTG thông qua chức năng thống kê độ bao phủ.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận ghi nhận các hạn chế kỹ thuật hiện tại:

  • Bộ mô phỏng chỉ mới dừng lại ở giao diện dòng lệnh (Command Line Interface - CLI), chưa có giao diện đồ họa trực quan (GUI) để thuận tiện cho người sử dụng thao tác.
  • Chế độ gỡ lỗi (Debug) vẫn đang trong quá trình hoàn thiện và chưa được tối ưu hóa hoàn toàn về phương thức thực thi luồng lệnh.
  • Phạm vi mô phỏng hiện tại mới chỉ bao quát tập lệnh cơ sở RV32I, chưa hỗ trợ các tập lệnh mở rộng tiêu chuẩn khác của RISC-V.

Các hướng phát triển tiếp theo được tác giả xác định:

  1. Tiếp tục hoàn thiện và tối ưu hóa hiệu năng của chế độ gỡ lỗi Debug.
  2. Thiết kế và phát triển giao diện đồ họa người dùng (GUI) cho toàn bộ hệ thống mô phỏng.
  3. Tích hợp thêm các tập lệnh mở rộng tiêu chuẩn của RISC-V như tập lệnh nhân/chia số nguyên (M), tập lệnh nguyên tử (A), tập lệnh số thực dấu chấm động (F, D), và tập lệnh nén (C).

Giá trị tham khảo

Khóa luận là tài liệu tham khảo chuyên môn phù hợp cho:

  • Sinh viên ngành Kỹ thuật Máy tính, Công nghệ Thông tin, Điện tử - Viễn thông: Tiếp cận kiến trúc tập lệnh RISC-V, nguyên lý hoạt động của tập lệnh RV32I, cấu trúc mã máy và phương pháp thiết kế trình biên dịch hợp ngữ (Assembler) cũng như trình mô phỏng tập lệnh (ISS) bằng ngôn ngữ Python.
  • Người nghiên cứu thiết kế vi mạch và kiến trúc máy tính: Tham khảo phương pháp xây dựng hệ thống xác minh chức năng vi xử lý (Functional Verification), cơ chế hoạt động của khối giám sát độ bao phủ (Coverage Monitor), và quy trình sử dụng ISS làm mô hình tham chiếu đối chuẩn với mô hình phần cứng RTL.
  • Các nhóm phát triển phần mềm nhúng và công cụ biên dịch: Tham khảo cấu trúc dữ liệu mô phỏng bộ nhớ, thanh ghi và thuật toán phân tích cú pháp lệnh phục vụ phát triển các bộ công cụ phát triển phần mềm (SDK/Toolchain) cho vi xử lý RISC-V.

Câu hỏi thường gặp

1. Bộ mô phỏng ISS đóng vai trò gì trong hệ thống xác minh chức năng bộ xử lý RISC-V?
Trong hệ thống xác minh, ISS đóng vai trò là "mô hình tham chiếu vàng" (Golden Reference Model). ISS nhận các ca kiểm thử hợp ngữ (từ bộ phát sinh ngẫu nhiên RTG thông qua Assembler) và mô phỏng thực thi độc lập với phần cứng. Kết quả trạng thái thanh ghi và bộ nhớ của ISS được khối Comp-runner so sánh trực tiếp với kết quả mô phỏng phần cứng mức chuyển đổi thanh ghi (RTL Simulation) để xác định phần cứng có hoạt động chính xác hay không.

2. Tập lệnh RV32I được hỗ trợ trong khóa luận gồm những định dạng nào và bao nhiêu câu lệnh?
Bộ mô phỏng hỗ trợ 37 câu lệnh cơ bản của tập lệnh số nguyên 32-bit RV32I, được phân chia thành 6 định dạng lệnh chính: R-type (thao tác thanh ghi - thanh ghi), I-type (thao tác giá trị tức thời và nạp), S-type (lưu dữ liệu vào bộ nhớ), SB-type (rẽ nhánh có điều kiện), U-type (nạp giá trị tức thời 20-bit bậc cao) và UJ-type (lệnh nhảy không điều kiện).

3. Tệp cấu hình (Configuration file) trong hệ thống có chức năng gì?
Tệp cấu hình chứa các tiêu chí định lượng do người dùng thiết lập để đo lường độ bao phủ kiểm thử (Coverage). Tệp này quy định các ngưỡng mục tiêu như: số lượng lệnh cần kiểm tra (37 lệnh), phạm vi giá trị tức thời, việc sử dụng đủ 32 thanh ghi làm nguồn/đích, số lần nhảy tiến/lùi, số lần rẽ nhánh và số lần truy xuất bộ nhớ liên tục. ISS căn cứ vào tệp này để tính toán tỷ lệ phần trăm độ bao phủ sau khi chạy chương trình.

4. Khóa luận đã kiểm chứng tính đúng đắn và độc lập phần cứng của ISS bằng cách nào?
Tác giả đã nạp cùng một chương trình hợp ngữ kiểm thử phức tạp vào ISS và vào 3 thiết kế phần cứng RTL độc lập (gồm vi xử lý RISC-V multithread, vi xử lý RISC-V đa lõi multi-core, và vi xử lý RISC-V hỗ trợ chế độ giám sát). Kết quả hiển thị giá trị 32 thanh ghi sau mô phỏng của ISS hoàn toàn trùng khớp với kết quả dạng sóng và bảng thanh ghi của cả 3 hệ thống phần cứng trên.

5. Điểm khác biệt chính giữa bộ mô phỏng ISS trong đề tài so với Mars 4.5 và RISC-V Interpreter là gì?
Khác với Mars 4.5 (chỉ hỗ trợ kiến trúc MIPS) và RISC-V Interpreter (không tích hợp công cụ đo lường kiểm thử), bộ mô phỏng ISS của đề tài được tích hợp module tính toán độ bao phủ (Coverage) dựa trên các tiêu chí cấu hình tùy biến của người dùng, hỗ trợ đắc lực cho quy trình xác minh chức năng tự động. Tuy nhiên, ISS của đề tài hiện chỉ hoạt động trên giao diện dòng lệnh (CLI), trong khi Mars 4.5 có hỗ trợ giao diện đồ họa (GUI).

Kết luận

Khóa luận tốt nghiệp của tác giả Nguyễn Văn Hạnh đã nghiên cứu và hiện thực thành công bộ mô phỏng tập lệnh RISC-V (ISS) hỗ trợ 37 lệnh thuộc tập lệnh RV32I bằng ngôn ngữ lập trình Python. Hệ thống tích hợp hoàn chỉnh trình biên dịch hợp ngữ Assembler, cung cấp hai chế độ chạy linh hoạt (Run Program và Debug với điểm ngắt/từng bước) và sở hữu tính năng tính toán độ bao phủ kiểm thử theo tệp cấu hình. Kết quả thực nghiệm đối chuẩn với ba thiết kế phần cứng RTL độc lập đã chứng minh tính chính xác và khả năng hoạt động độc lập phần cứng của bộ mô phỏng, tạo tiền đề vững chắc cho việc tiếp tục mở rộng giao diện đồ họa và các tập lệnh mở rộng trong tương lai.