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

Trong các hệ thống tính toán hiện đại, nhu cầu xử lý dữ liệu với tốc độ cao và tối ưu hóa năng lượng ngày càng trở nên cấp thiết, đặc biệt trong các lĩnh vực như trí tuệ nhân tạo, thị giác máy tính, xử lý tín hiệu số, xử lý hình ảnh và video. Khi xử lý bằng phần mềm trên các bộ vi xử lý thông thường, các phép toán đại số tuyến tính phức tạp như nhân ma trận bị giới hạn bởi tính tuần tự của tập lệnh, dẫn đến độ trễ lớn và tiêu tốn nhiều năng lượng. Việc thiết kế các bộ tăng tốc phần cứng chuyên dụng (Hardware Accelerator) cho phép thực thi song song các phép toán, từ đó rút ngắn đáng kể thời gian xử lý và nâng cao hiệu suất tổng thể của hệ thống.

Khóa luận tốt nghiệp "Thiết kế bộ tăng tốc phần cứng với RISC-V" do sinh viên Phan Trường Sinh và Lâm Sơn Nhật Thái thực hiện tại Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM (năm 2024), dưới sự hướng dẫn của ThS. Tạ Trí Đức và ThS. Phạm Minh Quân, tập trung vào việc nghiên cứu và hiện thực hóa quy trình thiết kế vi mạch ASIC từ mức RTL (Register-Transfer Level) đến layout GDSII cho một lõi tăng tốc phần cứng nhân ma trận.

Mục tiêu và nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:

  1. Nghiên cứu giao thức bus APB (Advanced Peripheral Bus) thuộc kiến trúc AMBA và các thuật toán nhân ma trận phù hợp cho việc triển khai trên phần cứng.
  2. Thiết kế khối tăng tốc phần cứng thực hiện phép nhân ma trận $4 \times 4$ số nguyên không dấu, tích hợp giao tiếp thông qua bus APB bằng ngôn ngữ SystemVerilog.
  3. Kiểm tra, xác minh tính đúng đắn về mặt chức năng logic của thiết kế ở mức Front-end bằng các công cụ mô phỏng chuyên dụng (Vivado, Synopsys VCS).
  4. Thực hiện toàn bộ quy trình thiết kế vật lý Back-end trên công cụ Synopsys EDA (Design Compiler, Formality, IC Compiler II) với thư viện công nghệ CMOS 32nm, đảm bảo các ràng buộc kỹ thuật về tần số hoạt động, định thời (timing), kiểm tra tương đương logic và quy tắc vật lý (DRC, LVS).

Đối tượng nghiên cứu là bộ tăng tốc phần cứng nhân ma trận vuông $4 \times 4$ tích hợp chuẩn bus APB. Phạm vi nghiên cứu giới hạn ở kiểu dữ liệu số nguyên dương 8-bit đầu vào và 16-bit đầu ra, không xử lý tràn số. Do giới hạn về thời gian và độ phức tạp, đề tài dừng lại ở việc đóng gói bộ tăng tốc thành một khối IP (Intellectual Property) giao tiếp APB và thực hiện full-flow ASIC đến GDSII trên thư viện 32nm với tần số mục tiêu $\ge 200\text{ MHz}$, chưa tích hợp trực tiếp trên chip cùng lõi xử lý RISC-V (như hệ thống SoC Pulpino).


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

Khóa luận xây dựng trên các nền tảng lý thuyết vi mạch, giao thức truyền thông nhúng và công cụ tự động hóa thiết kế điện tử (EDA):

  • Giao thức bus APB (AMBA): Giao thức bus ngoại vi tiêu thụ năng lượng thấp, cấu trúc tối ưu cho việc truy cập cấu hình thanh ghi điều khiển. APB hoạt động qua 3 trạng thái hữu hạn (FSM): Chờ (Idle), Chuẩn bị (Setup), và Truy cập (Access). Các tín hiệu điều khiển chính bao gồm: PCLK, PADDR (32-bit), PSEL, PENABLE, PWRITE, PWDATA (32-bit), PRDATA (32-bit), PREADY, và PSLVERR.
  • Khảo sát thuật toán nhân ma trận: Tác giả phân tích độ phức tạp của các thuật toán: thuật toán cơ bản $O(n^3)$, thuật toán Strassen $O(n^{2.81})$, thuật toán Coppersmith-Winograd $O(n^{2.376})$, và thuật toán cải tiến $O(n^{2.373})$. Với phạm vi ma trận nhỏ ($4 \times 4$), thuật toán nhân cơ bản được lựa chọn vì các thuật toán phân rã đệ quy phức tạp có chi phí lệnh và độ trễ phụ trợ lớn, không đem lại hiệu quả trên phần cứng quy mô nhỏ.
  • Kiến trúc tập lệnh RISC-V và hệ thống SoC: Tìm hiểu kiến trúc tập lệnh mở RISC-V và mô hình SoC Pulpino (gồm lõi RISC-V, hệ thống bus AXI/APB và cầu nối AXI-to-APB Bridge) làm cơ sở định hướng cho việc tích hợp module IP ngoại vi.
  • Phương pháp nghiên cứu thực nghiệm: Sử dụng phương pháp thiết kế vi mạch bán dẫn chuẩn công nghiệp (ASIC Design Flow) chia làm hai giai đoạn: Front-end (mô tả RTL bằng SystemVerilog, mô phỏng chức năng) và Back-end (tổng hợp logic, kiểm tra tương đương, thiết kế vật lý layout).
  • Công cụ EDA và nguồn dữ liệu thư viện:
    • Mô phỏng & kiểm tra logic: Xilinx Vivado, Synopsys VCS (Verilog Compiler Simulator), DVE.
    • Tổng hợp logic (Synthesis): Synopsys Design Compiler (DC).
    • Kiểm tra tương đương logic (Formality Check): Synopsys Formality (FM) kết hợp tệp dẫn đường SVF.
    • Thiết kế vật lý (Physical Design): Synopsys IC Compiler II (ICC2).
    • Thư viện công nghệ: Thư viện tế bào chuẩn SAED 32nm CMOS (saed32hvt, saed32lvt).

Thiết kế và triển khai

Kiến trúc phần cứng Front-end

Hệ thống tăng tốc phần cứng gồm ba khối chức năng chính ghép tầng:

  1. Khối nhân ma trận (matrix_multiply): Nhận đầu vào là hai ma trận $A$ và $B$ kích thước $4 \times 4$ (mỗi ma trận gồm 16 phần tử, mỗi phần tử 8-bit không dấu). Khối tính toán song song 16 phần tử của ma trận kết quả $C$ theo công thức tích vô hướng $c_{ij} = \sum_{k=1}^{4} a_{ik} \times b_{kj}$ với độ rộng dữ liệu ngõ ra 16-bit cho mỗi phần tử. Thời gian thực thi phép nhân diễn ra trong đúng 1 chu kỳ xung nhịp.
  2. Khối đệm và điều phối (top_acc): Đóng vai trò lớp chuyển tiếp giữa bus truyền thông và lõi tính toán, lưu trữ dữ liệu ma trận đầu vào acc_in_A, acc_in_B và trích xuất kết quả acc_out, cho phép mở rộng ghép nối thêm các khối xử lý khác (chuyển vị, nghịch đảo) trong tương lai.
  3. Khối giao tiếp APB (apb_acc): Đảm nhiệm việc nhận/phát tín hiệu theo đúng giản đồ thời gian của bus APB. Khối quản lý giải mã không gian địa chỉ 32-bit:
    • Ghi dữ liệu ma trận đầu vào: Mỗi lần ghi truyền 1 từ 32-bit (chứa 4 phần tử 8-bit, tương ứng 1 hàng của ma trận). Cần 4 chu kỳ ghi cho ma trận $A$ và 4 chu kỳ ghi cho ma trận $B$. Mỗi giao dịch ghi hoàn chỉnh qua APB (Setup $\rightarrow$ Access $\rightarrow$ Idle) chiếm 5 chu kỳ xung nhịp. Tổng cộng quá trình nạp dữ liệu cho 1 ma trận hoàn chỉnh mất $4 \times 5 = 20$ chu kỳ xung nhịp.
    • Đọc dữ liệu ma trận kết quả: Mỗi lần đọc trích xuất 1 từ 32-bit (chứa 2 phần tử kết quả 16-bit). Cần 8 lần đọc để lấy toàn bộ 16 phần tử của ma trận $C$.
Ma trận Không gian địa chỉ Bit 31:24 Bit 23:16 Bit 15:8 Bit 7:0
Input A 0x1A108000 – 0x1A10800C Phân tử cột 4 Phần tử cột 3 Phần tử cột 2 Phần tử cột 1
Input B 0x1A108010 – 0x1A10801C Phân tử cột 4 Phần tử cột 3 Phần tử cột 2 Phần tử cột 1
Output C 0x1A108000 – 0x1A10801C Phần tử $C_{i, 2k}$ (Bit 31:16) Phần tử $C_{i, 2k-1}$ (Bit 15:0)

Quy trình triển khai Back-end (ASIC Flow)

Quy trình thiết kế vật lý từ RTL đến layout GDSII được triển khai qua các giai đoạn kỹ thuật:

  1. Tổng hợp logic (Synthesis - Design Compiler):
    • Đọc thư viện công nghệ SAED 32nm (.db), DesignWare và Symbol Library.
    • Thiết lập các ràng buộc SDC (create_clock với tần số $\ge 200\text{ MHz}$, set_input_delay, set_output_delay).
    • Biên dịch và tối ưu hóa diện tích/độ trễ thông qua các lệnh compile, thu hồi slack và diện tích (Area-Recovery).
  2. Kiểm tra tương đương logic (Formal Verification - Formality):
    • Đưa RTL gốc (Reference Design) và Gate Netlist sau tổng hợp (Implementation Design) vào công cụ Formality cùng tệp chỉ dẫn SVF để kiểm tra đối sánh logic. Kết quả xác nhận 100% điểm so sánh (compare points) đều trùng khớp (Matched và Equivalent).
  3. Thiết kế vật lý (Physical Design - IC Compiler II):
    • Import Design: Nạp netlist, SDC, Techfile (.tf), RC Model và thư viện thiết kế NDM (.ndm).
    • Floorplan: Xác định die/core dạng hình vuông với hệ số sử dụng diện tích mục tiêu $Urate = 65%$ ($Urate = \frac{\text{Cell Area}}{\text{Core Area} - \text{Macro Area}} \times 100$), bố trí các chân tín hiệu (ports) phân bổ đều xung quanh viền core.
    • Power Planning: Tạo vòng nguồn bảo vệ (Power Ring) bao quanh core offset, tạo các đường lưới nguồn cell chuẩn (Power Rails), và bổ sung các dải kim loại phân phối nguồn (Power Stripes) trên lớp kim loại Metal 5 (M5) và Metal 6 (M6) kết nối via xuống các rail để giảm thiểu hiện tượng sụt áp IR-drop.
    • Placement: Sắp xếp tự động các standard cell vào hàng (site-rows) dựa trên 3 kịch bản (scenarios) hoạt động (tệ nhất, tốt nhất và trung bình) nhằm tối ưu setup timing.
    • Clock Tree Synthesis (CTS): Áp dụng quy tắc không mặc định NDR (Non-Default Rule) dạng $2w2s$ (độ rộng gấp đôi, khoảng cách gấp đôi, cách ly 1 track) trên các đường net xung nhịp, sử dụng các cell đệm/đảo cổng có điện áp ngưỡng thấp (VLT) để tối ưu công suất tiêu thụ và độ trễ xung nhịp (skew/latency).
    • Routing & Physical Verification: Định tuyến tự động cho các đường tín hiệu, kiểm soát nhiễu xuyên kênh (crosstalk) và khoảng cách tối thiểu, tiến hành xác minh vật lý kiểm tra hoàn chỉnh luật thiết kế (DRC) và tương đương layout - sơ đồ nguyên lý (LVS).

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

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

Chương này nêu rõ tính cấp thiết của việc phát triển các bộ tăng tốc phần cứng nhằm giải quyết giới hạn tính toán tuần tự của phần mềm trong xử lý tín hiệu và trí tuệ nhân tạo. Tác giả xác định mục tiêu thiết kế bộ nhân ma trận $4 \times 4$ tích hợp APB bus, phạm vi giới hạn ở số nguyên dương 8-bit và triển khai đến mức thiết kế vật lý layout ASIC 32nm với tần số hoạt động mục tiêu $\ge 200\text{ MHz}$.

Chương 2. Cơ sở lý thuyết

Trình bày chi tiết cấu trúc giao thức AMBA APB, các tín hiệu và giản đồ thời gian 3 trạng thái. Phân tích toán học và độ phức tạp tính toán của các thuật toán nhân ma trận ($O(n^3)$ cơ bản, Strassen, Coppersmith-Winograd). Giới thiệu tổng quan kiến trúc tập lệnh mở RISC-V, hệ thống SoC Pulpino, quy trình thiết kế ASIC tiêu chuẩn và bộ công cụ EDA của Synopsys (Design Compiler, Formality, IC Compiler II, VCS).

Chương 3. Quy trình thiết kế

Trình bày phương án kiến trúc hệ thống và xây dựng các khối Front-end (matrix_multiply, top_acc, apb_acc). Chi tiết hóa bảng phân bổ địa chỉ ghi/đọc dữ liệu qua APB. Xây dựng môi trường testbench kiểm thử. Trình bày chi tiết các bước triển khai Back-end: cấu hình tham số tổng hợp trong Design Compiler, kiểm tra tính tương đương logic bằng Formality, và quy trình thiết kế vật lý từng bước trong ICC2 (khởi tạo Floorplan $Urate = 65%$, Power Ring/Stripes M5/M6, Placement đa kịch bản, CTS với luật NDR $2w2s$, Routing và kiểm tra DRC/LVS).

Chương 4. Kết quả

Trình bày kết quả dạng sóng mô phỏng trên Vivado và Synopsys VCS/DVE với các tập dữ liệu ma trận kiểm thử khác nhau. Báo cáo chất lượng tổng hợp (QoR), diện tích (Area), công suất (Power), và định thời (Timing). Báo cáo đối sánh logic Formality và kết quả từng bước vật lý trong ICC2 (bản đồ mật độ cell, bản đồ tắc nghẽn định tuyến congestion, cấu trúc cây xung nhịp clock tree, báo cáo hoàn thiện DRC và LVS).

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

Đánh giá tổng kết mức độ hoàn thành so với các đặc tả kỹ thuật đặt ra ở cả hai giai đoạn Front-end và Back-end. Phân tích ưu điểm về tốc độ xử lý phần cứng và đề xuất các hướng nghiên cứu mở rộng trong tương lai.


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

Kết quả kỹ thuật đạt được

Thiết kế đã đáp ứng đầy đủ tất cả các chỉ tiêu kỹ thuật đề ra theo đặc tả ban đầu:

Mã yêu cầu Hạng mục đặc tả Kết quả nghiệm thu Trạng thái
FE.1 Tính toán đúng ma trận số nguyên Đầu vào 8-bit, đầu ra 16-bit chính xác Đạt
FE.2 Cấu trúc ma trận vuông Hỗ trợ kích thước cố định $4 \times 4$ Đạt
FE.3 Tích hợp giao tiếp bus APB Đúng giản đồ xung nhịp 3 trạng thái APB Đạt
BE.1 Tần số hoạt động mục tiêu Đáp ứng tần số $\ge 200\text{ MHz}$ Đạt
BE.2 Phân tích điều kiện hoạt động Thiết lập $\ge 2$ kịch bản phân tích (Scenarios) Đạt
BE.3 Ràng buộc định thời (Timing) Không vi phạm Setup Timing (WNS = 0.00 ns) Đạt
BE.4 Tương đương logic sau tổng hợp Formality báo cáo tương đương 100% Đạt
BE.5 Quy tắc thiết kế vật lý Hoàn thành kiểm tra DRC và LVS không lỗi Đạt

Thông số tổng hợp phần cứng (Synthesis QoR Report từ Design Compiler):

  • Tổng số lượng Leaf Cell: 17.882 cell.
  • Số lượng cell tổ hợp (Combinational Cell): 17.370 cell.
  • Số lượng cell tuần tự (Sequential Cell): 512 cell.
  • Số lượng cổng đệm/đảo (Buf/Inv Cell): 983 cell (291 Buffer, 692 Inverter).
  • Diện tích logic tổ hợp (Combinational Area): $46.571,17\ \mu\text{m}^2$.
  • Diện tích cổng đệm/đảo: $1.489,28\ \mu\text{m}^2$.
  • Vi phạm định thời (Worst Negative Slack - WNS): $0,00\text{ ns}$ (không có đường truyền vi phạm).
  • Hiệu năng tính toán lõi: Phép nhân $4 \times 4$ hoàn thành chỉ trong 1 chu kỳ xung nhịp sau khi dữ liệu được nạp đầy đủ vào thanh ghi.

Đóng góp của đề tài

  • Hiện thực hóa trọn vẹn quy trình thiết kế vi mạch ASIC từ đặc tả giải thuật, mô hình hóa RTL (SystemVerilog), xác minh logic, đến đóng gói layout GDSII trên công nghệ 32nm.
  • Xây dựng thành công module IP tăng tốc nhân ma trận có khả năng tái sử dụng, chuẩn hóa giao diện ghép nối APB sẵn sàng kết nối vào các hệ thống vi xử lý SoC nhúng.
  • Cung cấp bộ script mẫu hoàn chỉnh (TCL scripts) cho quá trình tổng hợp trên Synopsys Design Compiler và layout trên IC Compiler II.

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

Hạn chế được ghi nhận trong văn bản

  • Quy mô tính toán cố định ở kích thước ma trận vuông $4 \times 4$, chỉ hỗ trợ kiểu dữ liệu số nguyên dương không dấu (8-bit đầu vào, 16-bit đầu ra) và chưa có cơ chế bẫy lỗi khi xảy ra tràn số.
  • Do giới hạn thời gian, module tăng tốc mới dừng lại ở mức IP độc lập có giao tiếp APB, chưa được tích hợp trực tiếp trên chip cùng lõi xử lý RISC-V hoàn chỉnh trong môi trường SoC.
  • Băng thông giao tiếp APB thấp hơn so với các chuẩn bus hiệu năng cao như AXI, khiến thời gian nạp/xuất dữ liệu chiếm nhiều chu kỳ xung nhịp hơn thời gian tính toán thực tế của lõi.

Hướng phát triển tiếp theo

  • Tích hợp khối tăng tốc vào lõi xử lý RISC-V (như SoC Pulpino) thông qua bus APB hoặc nâng cấp giao tiếp lên chuẩn bus AXI để tăng tốc độ truyền nhận dữ liệu.
  • Mở rộng kiến trúc phần cứng để hỗ trợ ma trận kích thước tùy biến ($N \times N$, ma trận chữ nhật), hỗ trợ tập số nguyên có dấu và định dạng số thực dấu phẩy động (Floating-point).
  • Phát triển thêm các khối phần cứng tính toán đại số tuyến tính bổ trợ như tính ma trận chuyển vị, định thức, và tìm ma trận nghịch đảo.

Giá trị tham khảo

Tài liệu là nguồn tư liệu thực nghiệm hữu ích cho sinh viên, học viên cao học và kỹ sư thuộc các chuyên ngành Kỹ thuật Máy tính, Điện tử – Viễn thông và Thiết kế Vi mạch:

  • Cung cấp tài liệu tham khảo chi tiết về phương pháp thiết kế module giao tiếp bus AMBA APB bằng ngôn ngữ SystemVerilog.
  • Minh họa rõ nét từng bước thực hiện quy trình thiết kế vật lý ASIC bán dẫn (ASIC Flow) bằng bộ công cụ EDA chuẩn công nghiệp của Synopsys (DC, Formality, ICC2).
  • Cung cấp các thiết lập ràng buộc SDC, quy tắc định tuyến cây xung nhịp (CTS NDR $2w2s$), và quy trình sửa lỗi DRC/LVS trên thư viện công nghệ SAED 32nm.

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

1. Tại sao nhóm tác giả lựa chọn thuật toán nhân ma trận cơ bản thay vì các thuật toán có độ phức tạp thấp hơn như Strassen hay Coppersmith-Winograd?
Trả lời: Các thuật toán như Strassen ($O(n^{2.81})$) hay Coppersmith-Winograd ($O(n^{2.376})$) tuy có độ phức tạp tiệm cận thấp hơn nhưng thuật toán triển khai rất phức tạp và đòi hỏi nhiều lệnh phụ trợ. Đối với ma trận kích thước nhỏ ($4 \times 4$) như trong phạm vi đề tài, chi phí phần cứng và độ trễ bổ sung của các thuật toán này làm giảm hiệu suất, do đó thuật toán nhân cơ bản ($O(n^3)$) mang lại hiệu quả thực thi phần cứng tối ưu nhất.

2. Giao tiếp APB cần bao nhiêu chu kỳ xung nhịp để nạp đủ dữ liệu cho một ma trận đầu vào $4 \times 4$?
Trả lời: Dữ liệu một ma trận $4 \times 4$ gồm 16 số nguyên 8-bit được chia thành 4 hàng, mỗi hàng đóng gói trong 1 từ 32-bit. Mỗi giao dịch ghi một từ 32-bit qua APB cần 5 chu kỳ xung nhịp (Setup, Access và Idle). Do đó, tổng thời gian nạp toàn bộ một ma trận đầu vào là $4 \times 5 = 20$ chu kỳ xung nhịp.

3. Khối tính toán nhân ma trận mất bao nhiêu chu kỳ xung nhịp để tạo ra kết quả sau khi đã có đủ dữ liệu?
Trả lời: Sau khi dữ liệu hai ma trận $A$ và $B$ được nạp đầy đủ vào các thanh ghi đệm của khối top_acc, khối tính toán phần cứng matrix_multiply thực hiện nhân song song và xuất kết quả toàn bộ 16 phần tử của ma trận $C$ chỉ trong đúng 1 chu kỳ xung nhịp.

4. Trong bước thiết kế vật lý (Physical Design) trên ICC2, hệ số sử dụng diện tích (Urate) và quy tắc cây xung nhịp (CTS) được thiết lập như thế nào?
Trả lời: Tại bước Floorplan, hệ số sử dụng diện tích core được thiết lập ở mức $Urate = 65%$ dạng hình vuông để dành không gian chèn thêm cell đệm sửa lỗi timing. Tại bước CTS, quy tắc định tuyến không mặc định (NDR) được cấu hình là $2w2s$ (độ rộng dây gấp đôi, khoảng cách gấp đôi) sử dụng cell đệm/đảo có điện áp ngưỡng thấp (VLT) để tối ưu công suất và độ lệch pha xung nhịp.

5. Kết quả kiểm tra tương đương logic (Formality) và kiểm tra vật lý (DRC/LVS) của thiết kế đạt được như thế nào?
Trả lời: Công cụ Synopsys Formality xác nhận Gate-Level Netlist sau khi tổng hợp hoàn toàn tương đương logic 100% với mã nguồn RTL gốc (dưới sự dẫn đường của tệp SVF). Ở bước thiết kế vật lý cuối cùng, thiết kế vượt qua toàn bộ các bài kiểm tra quy tắc hình học (DRC) và tương đương sơ đồ mạch (LVS) mà không ghi nhận bất kỳ vi phạm nào.


Kết luận

Khóa luận tốt nghiệp của tác giả Phan Trường Sinh và Lâm Sơn Nhật Thái đã hoàn thành trọn vẹn việc thiết kế và hiện thực hóa bộ tăng tốc phần cứng nhân ma trận $4 \times 4$ tích hợp chuẩn bus APB từ mức mô tả RTL đến layout vật lý GDSII. Sử dụng quy trình công cụ EDA tiêu chuẩn của Synopsys trên công nghệ CMOS 32nm, thiết kế đạt tần số hoạt động $\ge 200\text{ MHz}$, tối ưu hóa thời gian tính toán ma trận xuống còn 1 chu kỳ xung nhịp và đảm bảo tuyệt đối các ràng buộc định thời, DRC, LVS cũng như tính tương đương logic. Đề tài đã xây dựng một khối IP phần cứng hoàn chỉnh, đóng vai trò nền tảng vững chắc cho các nghiên cứu tích hợp mở rộng vào hệ thống vi xử lý RISC-V SoC trong tương lai.