SYSTEM Verilog Index

Module 1: Verification Guidelines
  • Introduction to Verification: Understanding the verification process, verification plans, and methodology basics.
  • Testing Strategies: The difference between directed testing and constrained-random stimulus.
  • Testbench Architecture: Basic testbench functionality, testbench components, building layered testbenches, and maximizing code reuse.
  • Simulation & Performance: Simulation environment phases, functional coverage, and testbench performance.
Module 2: Data Types
  • Built-in and Custom Types: Built-in data types, creating new types with typedef, enumerated types, constants, strings, and net types.
  • Arrays and Storage: Fixed-size arrays, dynamic arrays, associative arrays, queues, and linked lists.
  • Data Structures: Array methods, choosing a storage type, and creating user-defined structures.
Module 3: Procedural Statements and Routines
  • Control Flow: Procedural statements and time values.
  • Tasks and Functions: Task and function overviews, void functions, routine arguments, and returning from a routine.
  • Storage Variables: Managing local data storage.
Module 4: Basic Object-Oriented Programming (OOP)
  • OOP Fundamentals: OOP terminology, thinking in nouns rather than verbs, and creating your first class.
  • Object Management: Creating new objects, copying objects, understanding dynamic objects, and object deallocation.
  • Class Architecture: Class routines, out-of-class routine definitions, scoping rules, public vs. private variables, and using one class inside another.
Module 5: Connecting the Testbench and Design
  • Interfaces and Timing: Separating the testbench and design, the interface construct, stimulus timing, and interface driving and sampling.
  • Integration: Top-level scopes, program-module interactions, connecting it all together, and SystemVerilog Assertions.
Module 6: Randomization
  • Randomization Basics: What to randomize, random control, and randomization in SystemVerilog.
  • Constraints: Constraint details, solution probabilities, controlling multiple constraint blocks, valid constraints, and in-line constraints.
  • Advanced Randomization: The pre_randomize and post_randomize functions, iterative and array constraints, atomic stimulus vs. scenario generation, and random generators.
Module 7: Threads and Interprocess Communication
  • Thread Management: Working with threads and building a testbench with threads and Interprocess Communication (IPC).
  • Synchronization: Utilizing events, semaphores, and mailboxes.
Module 8: Advanced OOP and Guidelines
  • Advanced Class Concepts: Introduction to inheritance, composition vs. inheritance, factory patterns, and copying an object.
  • Methods and Callbacks: Type casting, virtual methods, and using callbacks.
Module 9: Functional Coverage
  • Coverage Fundamentals: Coverage types, functional coverage strategies, and basic functional coverage examples.
  • Cover Groups: Anatomy of a cover group, triggering a cover group, and parameterized cover groups.
  • Data and Analysis: Data sampling, cross coverage, coverage options, and analyzing coverage data.
Module 10: Advanced Interfaces
  1. Advanced Interface Concepts: Using virtual interfaces, connecting to multiple design configurations, and writing procedural code in an interface.
Scroll to Top