UVM Class Library cung cấp những tiện ích đa năng (generic utilities) chẳng hạn như sự phân cấp các thành phần cấu thành (component hierarchy), mô hình thư viện gói tin (transaction library model - TLM), cơ sở dữ liệu cấu hình (configuration database), ..., mà cho phép người dùng tạo ra hầu như bất cứ kiến trúc testbench nào mà anh/chị ấy muốn. Phần này cung cấp một vài hướng dẫn tổng quan (broad guidelines) cho một loại kiến trúc testbench được khuyên dùng (recommended) bằng cách sử dụng một góc nhìn vào kiến trúc này trong một nô lực để giới thiệu các thuật ngữ được sử dụng trong suốt hướng dẫn sử dụng này, như được chỉ ra ở hình sau:
UVM testbench thường hiện thực hóa (instantiate) một Design under Test (DUT) module và UVM Test class, và cấu hình những kết nối giữa chúng. Nếu như các tài sản verification này bao gồm các module-based components thì chúng cũng được hiện thực hóa dưới UVM Testbench. UVM Test thì được hiện thực hóa ở lúc chạy mô phỏng (dynamically at run-time) để cho phép UVM Testbench được biên dịch (compile) một lần và chạy với nhiều test khác nhau.
Chú ý rằng trong một vài kiến trúc, thuật ngữ Testbench được sử dụng để tham chiếu tới một special module mà chỉ chứa (encapsulate) các verification collaterals (những thành phần dùng cho kiểm thử), và rồi nó cũng được tích hợp cùng với DUT.
UVM Test
UVM Test là top-level UVM Component trong UVM Testbench. UVM Test thường thực hiện ba chức năng chính:
- Instantiates the top-level environment
- Configures the environment (via factory overrides or the configuration databases)
- Apply stimulus by invoking UVM Sequences through the environment to DUT
UVM Environment
UVM Environment là một hierarchical component mà nhóm các verification components khác lại với nhau. Các components này đan kết vào nhau (interrelated). Typical components mà thường được hiện thực hóa bên trong của UVM Environment là UVM Agents, UVM Scoreboard, hoặc thậm chí là các UVM Environment khác. Top-level UVM Environment chứa tất cả các verification components nhắm tới DUT.
Ví dụ, trong một typical SoC UVM Environment, bạn sẽ tìm thấy một UVM Environment ứng với mỗi IP (chẳng hạn như PCIe Environment, USB Environment, Memory Controller Environment, ...). Đôi khi những IP Environment này được nhóm lại với nhau để tạo thành Cluster Environment (cụm environment như IO Environment, Processor Environment ...), mà cuối cùng chúng lại được nhóm lại với nhau thành top-level SoC Environment.
UVM Scoreboard
Chức năng chính của UVM Scoreboard là để kiểm tra hành vi của một DUT nào đó. UVM Scoreboard thường nhận các gói tin (transactions) chứa cả inputs và outputs của DUT thông qua các analysis ports của UVM Agent (các kết nối này không được thể hiện trong hình trên), run các input transactions này thông qua một vài loại mô hình tham chiếu (reference model hay còn gọi là thành phần tiên đoán predictor) để tạo ra các giá trị kỳ vọng và rồi so sánh giá trị kì vọng này với các outputs thực sự từ DUT.
Có những methodologies khác nhau về việc thực thi scoreboard như thế nào, bản chất của reference model, và truyền thông (communicate) giữa scoreboard và phần còn lại của testbench thế nào.
UVM Agent
UVM Agent là một hierarchical component mà chứa một nhóm các verification components khác lại với nhau để làm việc với một giao diện cụ thể của DUT (dealing with a specific DUT interface). Một typical UVM Agent gồm có một UVM Sequencer để quản lý stimulus flow (luồng dữ liệu kích thích), một UVM Driver để đưa các stimulus vào giao diện DUT (apply stimulus on the DUT interface), và một UVM Monitor để giám sát DUT interface. UVM Agent có thể chứa các component khác như coverage collectors, protocol checkers, TLM model, etc.
UVM Agent cần hoạt động ở cả hai chế độ: active mode (có khả năng sinh ra các stimulus) và passive mode (chỉ giám sát interface mà không điều khiển nó).
UVM Sequencer
UVM Sequencer hành xử như là một bộ phân xử (arbiter) để quản lý transaction flow từ nhiều stimulus sequences. Cụ thể hơn, UVM Sequencer quản lý luồng các UVM Sequence Items transactions sinh ra bởi một hay nhiều UVM Sequences.
UVM Sequence
Một UVM Sequence là một object mà có hành vi sinh ra stimulus (contains a behaviour for generating stimulus). Các UVM Sequences không phải là một phần của component hierarchy. UVM Sequences có thể là nhất thời (transient) hay là tồn tại rất lâu (persistent). Một thực thể UVM Sequence (instance) có thể đóng vai trò quan trọng (come into) trong sự tồn tại của một single transaction, nó cũng có thể drive stimulus cho một khoảng thời gian mô phỏng (duration of simulation), hoặc bất cứ chỗ nào ở giữa hai thái cực này. Các UVM Sequences có thể hoạt động một cách phân cấp với một sequence gọi là parent sequence, mà gọi (invoke) một sequence khác gọi là một child sequence.
Để hoạt động, mỗi một UVM Sequence thì cuối cùng bị ràng buộc bởi một UVM Sequencer (bound). Nhiều thực thể UVM Sequences có thể bị ràng buộc tới cùng một UVM Sequencer.