High level design là gì

 - 

Các bài viết về công nghệ vi mạch được trình bày theo sự hiểu biết hạn hẹp của nhóm tác giả nên tác giả luôn mong muốn nhận được góp ý từ bạn đọc để các bài viết ngày càng chính xác, hoàn thiện và bổ ích hơn.

Bạn đang xem: High level design là gì


*
Hình 1: (a) Phát triển hệ thốngtheo phương pháp truyền thống (b) phát triển hệ thống theo phương pháp HLD
Với HLD, phần cứng được mô hình hóa bằng chính ngôn ngữ dùng để phát triển phần mềm như C/C++ hay SystemC. Điều này giúp phần mềm và phần cứng có thể được tích hợp sớm để thử nghiệm và đánh giá hiệu quả và tính khả thi. Sau khi hệ thống được tối ưu như yêu cầu, phần cứng mới bắt đầu được thiết kế trùng khớp với mô hình đã phát triển. Với cách này, phần cứng được đảm bảo tương thích phần mềm và đáp ứng tốt cho hệ thống mong muốn. Bên cạnh đó, phần mềm có thể tiếp tục được thử nghiệm và hoàn chỉnh song song với việc phát triển phần cứng.
Hình 1(b) minh họa quy trình phát triển hệ thống theo phương pháp HLD. Với mô hình này, phần cứng được mô hình hóa bằng C/C++ hoặc SystemC. Sau đó, nó được tích hợp với phần mềm để tạo thành một hệ thống hoàn chỉnh ở bước Pre-integration. Mô hình hệ thống này được sử dụng để đánh giá tính khả thi, chức năng, hiệu năng và các yêu cầu khác mà hệ thống phải đạt được. Nếu mọi yêu cầu đều đáp ứng ở bước này, phần cứng mới được thiết kế. Điều này đảm bảo khả năng thành công rất cao của hệ thống thực tế. Bạn có thể thắc mắc rằng, nếu sử dụng phương pháp HLD để thiết kế phần cứng thì thời gian thiết kế sẽ tăng đáng kể do phải làm hai bước là “thiết kế mô hình sử dụng C/C++ hoặc SystemC” và “thiết kế mức thấp sử dụng Verilog/VHDL”. Trên thực tế, thời gian thiết kế phần cứng sẽ tăng nhưng không đáng kể nếu mô hình phần cứng sử dụng ngôn ngữ cấp cao như C/C++ hoặc SystemC có thể tổng hợp được. “Tổng hợp được” nghĩa là có thể dùng phần mềm để chuyển đổi từ HLD code thành RTL code. Sau đó, chúng ta chỉ cần dùng phần mềm chuyên dụng để kiểm tra “tính tương đồng” giữa HLD code và RTL code.
SystemC là một thư viện được xây dựng trên nền tảng ngôn ngữ C++ hỗ trợ việc mô hình hóa hệ thống và phần cứng. Thư viện này chứa các class được xây dựng bằng C++. Việc mô hình hệ thống hay phần cứng là gọi và sử dụng các class C++ đã được xây dựng sẵn trong thư viện SystemC.
SystemC hỗ trợ rất nhiều các class khác nhau nhưng chỉ một phần trong số này là có thể tổng hợp được. Các phần mềm tổng hợp SystemC cũng có các giới hạn, quy định khác nhau về khả năng tổng hợp. Chính vì vậy, người viết model code theo định hướng tổng hợp cần cố gắng sử dụng các mô tả đơn giản để có thể phù hợp với càng nhiều phần mềm khác nhau. Điều này giúp cho model code tạo ra có tầm sử dụng rộng. Tuy nhiên, nó phụ thuộc vào kinh nghiệm và hiểu biết của người thiết kế nên việc viết model code tương thích với phần mềm mà bạn sẽ sử dụng là ưu tiên hàng đầu.
1. Input requirement: Tổng hợp và phân tích các yêu cầu của hệ thống và phần cứng. Kết quả của bước này là một tài liệu mô tả chi tiết các phân tích.
2. Logic specification: Phân tích thiết kế từ tổng quan đến chi tiết tới mức cổng logic. Kết quả của bước này là một tài liệu phân tích chi tiết thiết kế.
3. Model specification: Phân tích chi tiết mô hình phần cứng dựa trên logic specification đã có. Ở bước này, người thiết kế cần xác định rõ các process và các tín hiệu kết nối giữa các method. Kết quả của bước này là một tài liệu phân tích chi tiết mô hình phần cứng.

Xem thêm: Bún Mọc Tiếng Anh Là Gì - Tên Món Ăn Bằng Tiếng Anh


4. Model coding: Mô hình phần cứng dựa trên model specification. Trong tài liệu này, SystemC được sử dụng để mô hình phần cứng. Việc mô hình phần cứng phải tạo ra model code có thể tổng hợp được. Kết quả của bước này là các file model code.
5. Model verification: Kiểm tra các file model code. Model code được kiểm tra về cú pháp, luật thiết kế, khả năng tổng hợp và chức năng. Kết quả của bước này là các file model code đã được kiểm tra hoàn chỉnh.
6. Model synthesis: Tổng hợp model code. Model code được chuyển đổi thành RTL code (Verilog/VHDL). Kết quả của bước này là các file RTL code.
7. Consistency check: Kiểm tra tính tương đồng giữa RTL code với model code. Kết quả của bước này là các file RTL code đã được đảm bảo chức năng tương đương như model code.
*
Hình 2: Quy trình HLD

Các bước thực hiện sẽ được nhóm tác giả trình bày chi tiết với một ví dụ cụ thể trong những bài sau. Để có thể nhanh chóng hiểu và thử nghiệm các bạn hãy chuẩn bị những nội dung sau đây:
1. Ví dụ dùng để minh họa cho loạt bài này là thiết kế SCPU. Các bạn hãy đọc loạt bài sau để hiểu thiết kế này.
2. Tải và cài đặt phần mềm Xilinx Design Tool - Vivado HL Design để kiểm tra cú pháp và tổng hợp. Tuy đây là phần mềm biên dịch dành cho FPGA nhưng là một công cụ dễ tìm và cài đặt trên Windows.

Xem thêm: Quả Mướp Đắng Có Tác Dụng Gì ? Ăn Mướp Đắng Có Tác Dụng Gì


3. Bên cạnh đó, SystemC là một thư viện của C++ nên bạn có thể tải và dùng gcc để kiểm tra cú pháp. Tuy nhiên, gcc không kiểm tra được khả năng tổng hợp của model code.