This SystemVerilog course provides the student with in-depth instruction for learning and applying the most useful constructs and concepts provided by the SystemVerilog language for verification. The course demonstrates the benefits of the language features, and how to make verification more efficient and effective using SystemVerilog constructs.
This class includes an extensive amount of material. The instructor can tailor the class discussion to fit all topics of interest. Students will have the opportunity to take home all of the material for use as a reference.
Days in Course Length
- SystemVerilog Fundamentals with SVA.
- Knowledge/experience simulating RTL logic designs.
- It is beneficial, but not required, for students have a working knowledge of the Verilog hardware description language.
- Synopsys VCS
- Mentor QuestaSim
- Cadence IUS (ncsim)
In this course the student will
- Learn the features of SystemVerilog for verification, and understand the improvements in verification efficiency over Verilog.
- Understand advanced verification features, such as the practical use of classes, randomization, checking, and coverage.
- Practice developing advanced coverage driven verification environments using advanced SystemVerilog features for verification.
- Coverage Driven Testbench Architectures
- Advanced Connections
- Clocking Block Introduction
- Using Clocking Blocks within Interfaces
- Virtual Interfaces
Processes and Scheduling
- Child Processes
- Dynamic Process Control (fork/join/join_none/join_any)
- Synchronizing Concurrent Processes
- More About Program Blocks
- Advanced Classes
- Reusable object-oriented code
- Virtual classes
- Dynamic casting
- Parameterized classes
- Advanced Stimulus Generation
- Controlling Randomization of Arrays, Array Elements
- Writing External Constraints
- Writing a Random Data Traffic Generator
- Using Randcase, Randsequence and Productions
- Creating Transactions using Factory Patterns
- Class-based Checkers
- Choices for Checking Approaches and Tradeoffs
- Transaction Based Checking
- Monitor and Checker Interaction
- Writing and Using Scoreboards
- Error Messages
- Functional Coverage
- Coverage methodology and planning
- Covergroup definition and options
- Covergroups in classes
- Bins, ignore, illegal
- Cross and transition coverage
- System Functions
- Coverage Reporting
- Interfacing to C code
- DPI versus VPI
- Type exchange
- Pure versus context
- Accessing the simulator from C
- Simulation Tool Usage
- Compilation, elaboration and simulation
- Debug techniques
- CPU performance analysis
- Optimization of memory consumption
- Fundamentals with SVA
- SystemVerilog for RTL Designers