Advanced OOP and Testbench Guidelines

  • Chris Spear


How would you create a complex class for a bus transaction that also performs error injection and has variable delays? The first approach is to put everything in a large, flat class. This approach is simple to build and easy to understand (all the code is right there in one class), but can be slow to develop and debug. Additionally, such a large class is a maintenance burden, as anyone who wants to make a new transaction behavior has to edit the same file. Just as you would never create a complex RTL design using just one Verilog module, you should break classes down into smaller, reusable blocks.


Base Class Parameterized Class Functional Coverage Extended Class Abstract Class 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Copyright information

© Springer Science+Business Media, LLC 2008

Authors and Affiliations

  • Chris Spear
    • 1
  1. 1.Synopsys, Inc.Marlboro.USA

Personalised recommendations