DAY 1
Session 1 : SV BASICS
Introduction to SystemVerilog
– Language evolution
– SV Design
– SV Assertions
– SV Testbench
– DPI and API
Abstract Modeling Constructs
– Data Types
Enums
Structure
– Packages
Arrays
Fixed arrays
Dynamic Arrays
Queues
Associative Arrays
Array methods
Lab 1 – SV Basics
Session 2 : INTERFACE
DUT Description
– Will use a memory controller slave model as DUT
– Uses a proprietary “VLB” (VerifLabs Bus) interface during training
– For AMS – will add few dummy analog/real ports with minimal logic to showcase SV features
Interface
– Grouping signals
– Modport
– Clocking block
LAB 2 – SV Interface
– Manual interface coding
– Automating interface generation
Session 3 : CLASS & BFM
Class
– Introduction to classes
– New – Constructor
– Transaction modelling with class
– Virtual interface
– Building BFM with SystemVerilog class
LAB 3 – Transactions & BFM
– Transaction modeling
– BFM building
– Simple testcase using BFM
Day 2
Session 4 : OOP CONCEPTS
OOP Concepts
– Encapsulation
– Inheritance
– Polymorphism
– Automatic garbage collection
– Task & Function (Automatic & static, void, extern and argument pass by value/reference
Final block
LAB 4 – Classes & OOP
– Inheritance
– Polymorphism
Session 5 : CONCURRENCY MODELING
Enhanced Concurrency Modelling
– Threads variants of fork join
– Disable fork, terminate
Inter process communication
– Mailboxes (Standard API or using it as conduit across classes/components)
Semaphores
– Standard API
– Typical applications
LAB 5 – Threads & Mailbox usage
– Adding mailbox to Driver BFM
– Using Mailbox to drive traffic to DUT
– Adding a monitor component and a new free running thread
– Adding Monitor mailbox
Session 6 : CONSTRAINT RANDOM VERIFICATION
Random vs. Directed testing
Need for Random testing
– Constraints in SVTB
– Class based constraints
– Randomise success / fail
– Inline constraints – randomise with()
– Distribution
– Function calls in constraints
– Array constraints
– Inheritance & layered constraints
Pre / Post randomize
LAB 6 – CRV (Constrained Random Verification)
– Adding constraints to transaction model
– Adding a generator component (another free running thread)
– Connect GEN – to – Driver using Mailbox
Day 3
Session 7 : ASSERTION BASED VERIFICATION
Introduction to Assertions & ABV
Structure of an assertion
Types of assertions
– Immediate
– Concurrent
Verification Directives
– Assert
– Assume
– Cover
– Bind
Boolean layer
– System functions
– Sample value functions
Sequences
– Anatomy
– Delay operators
– Repetition operators
Properties
– Anatomy
– Implication operators
SV scheduling semantics
LAB 7 – ABV (Assertion Based Verification)
– Simple assertions, binding
– Developing checker for given DUT using SVA
Session 8 : COVERAGE DRIVEN VERIFICATION
Functional coverage
– Motivation
– Introduction
– Types of coverage
– Functional coverage process
– Covergroup
– Coverpoint
– Concept of binning
– Cross
– Sampling event
LAB 8 – CDV (Coverage Driven Verification)
– Capturing Functional Coverage Model for the given DUT
– Adding proper sampling
– Run tests, collect coverage, analyze, improve
Session 9 : DIRECT PROGRAMMING INTERFACE
DPI
– Import
– Export
– Context
DPI vs. VPI/PLI
LAB 9 – DPI
– Using simple import & export
– Integrating a C golden Reference Model to a scoreboard via DPI
– Dynamic FCOV query API lab