SystemVerilog OOP Mastery · All levels

Type-Parameter Patterns for Reusable OOP Testbench Design

Parameterize data type and policy type to build reusable scoreboards and utilities without sacrificing readability.

Overview

Parameterize data type and policy type to build reusable scoreboards and utilities without sacrificing readability.

A productive pattern is data-parameterized infrastructure: scoreboard #(type REQ_T, type RSP_T = REQ_T). This keeps one implementation while permitting many transaction classes. The key is documenting the expected contract on type parameters (for example, supports compare() or convert2string()).

In this topic

diagram
1. Concept Explained
2. Code Examples
3. SystemVerilog vs C++/Java
4. Pitfalls
5. Exercises
6. Interview Questions

Read the concept first, study the code examples, compare against C++/Java, then test yourself with the exercises and interview questions.

Class vs handle vs object memory model

diagram
CLASS VS HANDLE VS OBJECT IN MEMORY

compile-time blueprint                    runtime state
+---------------------------+             +-------------------------+
| class packet;             |             | stack frame             |
|   rand bit [7:0] addr;    |             |   packet p ------------+----+
|   function void display() |             |                         |    |
| endclass                  |             +-------------------------+    |
+---------------------------+                                          |
                                                                       v
                                                           +-------------------------+
                                                           | heap object @0x1004     |
                                                           | addr = 8'h3C            |
                                                           | display() body executes |
                                                           +-------------------------+

Class defines behavior. Handle stores a reference. Object lives on heap.

Related topics