SystemVerilog OOP Mastery · All levels
Encapsulation with local and protected
Encapsulation controls who can touch class state, preventing accidental corruption of protocol invariants. In SystemVerilog, local hides members from everyone except the defining class, while protected exposes them only to subclasses.
Overview
Encapsulation controls who can touch class state, preventing accidental corruption of protocol invariants. In SystemVerilog, local hides members from everyone except the defining class, while protected exposes them only to subclasses.
Use local for internals that must never be manipulated outside the class, including in derived classes. This is ideal for IDs, bookkeeping counters, and hidden state transitions where unrestricted writes would invalidate assumptions.
In this topic
1. Concept Explained
2. Code Examples
3. SystemVerilog vs C++/Java
4. Pitfalls
5. Exercises
6. Interview QuestionsRead 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
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.