SystemVerilog OOP Mastery · All levels
clone() and copy() Methods: Exercises
Exercises for clone() and copy() Methods.
Practice exercises
Exercise 1
Given base class cmd and derived class burst_cmd, design copy so base and derived fields are copied safely.
Solution
diagram
Make base copy(cmd rhs) virtual. In burst_cmd.copy, call super.copy(rhs), then $cast to burst_cmd and copy derived fields only on success.Exercise 2
A monitor passes txn handle to two scoreboards; one mutates a field for normalization. How do you avoid cross-scoreboard side effects?
Solution
diagram
Each consumer should work on clone() output. Clone must deep-copy nested members so normalization does not affect other observers.