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.

Related topics