Những hành trình đầy cảm hứng

Theo dõi những câu chuyện của các học giả và các chuyến thám hiểm nghiên cứu của họ

CLASS và UTILITY trong UVM – Bạn đã hiểu rõ chưa?

Admin iCdemy 3

Thu, 17 Jul 2025

CLASS và UTILITY trong UVM – Bạn đã hiểu rõ chưa?

Khi bắt đầu học UVM (Universal Verification Methodology), có hai khái niệm cốt lõi mà bất kỳ kỹ sư verification nào cũng cần nắm vững: ClassUtility. Đây chính là nền tảng giúp bạn xây dựng testbench chuyên nghiệp, dễ bảo trì và có khả năng tái sử dụng cao.


1. CLASS – Xương sống của UVM

Trong UVM, class là cấu trúc trung tâm, được định nghĩa trong SystemVerilog bằng từ khóa class và kết thúc bằng endclass.

Class bao gồm:

  • Data members: các biến dữ liệu lưu trữ trạng thái đối tượng.

  • Methods: các hàm (function) và tiến trình (task) định nghĩa hành vi của đối tượng.

Phân loại class trong UVM:

  • Class gốc: Ví dụ uvm_void, là lớp cơ sở trừu tượng nhất.

  • Class mở rộng: Ví dụ uvm_object kế thừa từ uvm_void, và uvm_transaction kế thừa từ uvm_object.

Ví dụ minh họa:

Trong ví dụ trên, my_transaction là một class mở rộng từ uvm_transaction. Nó định nghĩa một biến dữ liệu data và sử dụng macro uvm_object_utils để hỗ trợ việc đăng ký class này với factory.

Ưu điểm của class:

  • Kế thừa: my_transaction kế thừa tất cả các thuộc tính và phương thức từ uvm_transaction.

  • Tái sử dụng: Class này có thể dùng lại trong nhiều môi trường test khác nhau.

2. UTILITY – Trợ thủ đắc lực trong UVM

Utility là các công cụ, macro, kiểu dữ liệu hoặc thành phần hỗ trợ được UVM cung cấp sẵn, giúp việc xây dựng môi trường kiểm thử trở nên linh hoạt và hiệu quả hơn.

Ví dụ về utility:

  • Macro: như uvm_field_int, uvm_object_utils

  • Hàm hỗ trợ debug: uvm_report_error, uvm_report_info

  • Factory & Configuration: uvm_factory cho phép tạo đối tượng động và thay đổi hành vi mà không cần sửa code gốc.

Ví dụ minh họa:

Trong ví dụ này:

  • Macro uvm_component_utils đăng ký class my_env với factory.

  • Hàm uvm_report_info in thông tin trong phase build_phase, giúp dễ dàng theo dõi quá trình mô phỏng.

Lợi ích:

  • Dễ cấu hình và theo dõi.

  • Hỗ trợ mở rộng testbench một cách linh hoạt mà không cần sửa code gốc.

Kết luận

  • Class là nền tảng để định nghĩa logic và cấu trúc chính trong UVM.

  • Utility là công cụ hỗ trợ giúp tăng hiệu suất phát triển và kiểm thử.

Hiểu rõ hai yếu tố này sẽ giúp bạn xây dựng testbench UVM chuẩn mực, tiết kiệm thời gian, công sức và nâng cao khả năng mở rộng trong các dự án thực tế.

0 Bình luận

Để lại bình luận