+917032795463 |   info@ascentsemi.com

RTL VERIFICATION

RTL Verification Course

RTL verification is a process of verifying the functionality, correctness, and performance of a digital circuit or system at the register transfer level (RTL) of abstraction. The RTL level is the level at which the digital circuit is described using hardware description languages (HDL) such as Verilog or VHDL. RTL verification is an important step in the design process, as it helps to ensure that the digital circuit functions as intended before it is fabricated.

RTL verification involves developing a testbench, which is a set of input stimuli used to exercise the digital circuit under test. The testbench generates a sequence of inputs, which are applied to the circuit, and the output responses are compared to the expected output values. The goal of RTL verification is to ensure that the output responses match the expected values for all possible input sequences.

RTL verification techniques:

Directed testing: Directed testing involves designing test cases based on the designer’s understanding of the circuit’s behavior

Random testing: Random testing involves generating test cases randomly, and is useful for exploring the design space and identifying potential issues

Constraint-based testing: Constraint-based testing involves generating test cases based on specified constraints, such as input signal frequencies or amplitude ranges.

RTL verification also involves analyzing the verification coverage, which is a measure of the percentage of the design that has been tested. Coverage analysis helps to ensure that all possible scenarios and corner cases have been tested, and can help identify areas of the design that require further testing.

Overall, RTL verification is an essential step in the digital circuit design process, and helps to ensure that the final design is functional, correct, and performs as intended.

Course Outcomes

Understanding of RTL Design: Participants will gain a comprehensive understanding of RTL design concepts, including basic digital circuits, combinational and sequential logic, and timing analysis.

Proficiency in Verification Methodologies: Participants will become proficient in verification methodologies such as testbenches, coverage-driven verification, constrained random verification, and assertion-based verification.

Ability to Write Effective Testbenches: Participants will learn how to write effective testbenches using System Verilog and other verification languages to verify RTL designs.

Knowledge of Assertion-Based Verification: Participants will gain an understanding of assertion-based verification techniques and how to use them to verify RTL designs.

Ability to Analyze Coverage: Participants will learn how to analyze coverage metrics to ensure that the design has been fully tested.

Understanding of Verification Tools: Participants will become familiar with industry-standard verification tools such as UVM and OVM and learn how to use them to verify RTL designs.

Knowledge of Debugging Techniques: Participants will learn how to use debugging techniques such as waveform analysis and assertion tracing to diagnose and fix issues in RTL designs.

Overall, participants in this course will gain the knowledge and skills required to effectively verify RTL designs using industry-standard tools and methodologies, making them valuable assets in the VLSI industry.

Course Outline

VLSI Basics Module

ASIC Design Flow

    • Introduction to ASIC/FPGA/SOC
    • ASIC Design Flow
    • Manufacturing process

Introduction to Linux basics

    • History of Linux
    • Linux distributions and versions
    • The Linux file system
    • Linux command line interface

Linux Commands

    • Basic Linux commands (ls, cd, mkdir, rm, cp, mv, etc.)
    • Advanced Linux commands (grep, sed, awk, etc.)
    • Managing processes
    • Text editors (vi, nano)

Introduction to GVIM Interface

    • GVIM window and buffer management
    • Using modes (insert, normal, visual)
    • Basic GVIM commands (save, quit, open, etc.)

GVIM Editing

    • GVIM window and buffer management
    • Using modes (insert, normal, visual)
    • Basic GVIM commands (save, quit, open, etc.)

Basic Shell scripting

    • Writing and running shell scripts
    • Shell script syntax and variables
    • Looping and branching statements
    • Using command-line arguments in scripts

 GIT Basics

    • GVIM window and buffer management
    • Using modes (insert, normal, visual)
    • Basic GVIM commands (save, quit, open, etc.)

 Collaborating with GIT

    • GVIM window and buffer management
    • Using modes (insert, normal, visual)
    • Basic GVIM commands (save, quit, open, etc.)

 Advanced GIT Features

    • GVIM window and buffer management
    • Using modes (insert, normal, visual)
    • Basic GVIM commands (save, quit, open, etc.)

 GIT Best Practices

    • GVIM window and buffer management
    • Using modes (insert, normal, visual)
    • Basic GVIM commands (save, quit, open, etc.)

GIT Troubleshooting and maintenance.

    • Git recovery and restoration
    • Git troubleshooting tips and tricks
    • Git maintenance and optimization for corporate use
    • Git security and access control best practices

CMOS Basics

    • Review of Semiconductor physics
    • MOSFT Basics
    • Pass Transistors
    • CMOS Inverter operation and its characteristics
    • CMOS Logic circuits
    • CMOS Basic Building blocks
    • CMOS sequential elements
    • Flip flop timing Parameters – (SETUP, HOLD, CLK TO Q)

Digital Design Basics

    • The importance of Number System in Data Representation.
    • Different Optimization techniques using Boolean algebra.
    • Gate level optimization
    • Logic optimization using Karnaugh Maps.
    • Basic building blocks for Combinational Logic Circuits
    • implementing different Logical Expressions using the same.
    • Evolution of the Sequential Elements-Latches and Flip Flops.
    • Synchronous Sequential Machines-Synchronous Detectors, Counters and Register

Advanced Digital Design

    • Flip Flop timing parameters
    • Critical path and operating frequency of the system.
    • Design of Hybrid Counters.
    • Design of complex Sequence detectors.
    • Design of Control FSMs based on the specifications.
    • Design of Frequency synthesizers

 Verilog and System Verilog Basics

Introduction to Verilog and System Verilog

    • Concepts of top-down design
    • Overview of RTL models, gate/switch models
    • The RTL design flow with simulation and synthesis 

Design Verification Using Simulation

    • Writing verification testbenches in Verilog
    • Running your preferred Verilog simulator
    • Debugging designs with simulation
    • Lab: Running your simulator and debug tool

Verilog HDL Syntax and Semantics 

    • Identifier names
    • Logic values and numbers
    • Data types and 2-state vs. 4-state guidelines, Enumerated types
    • User-defined types, Casting
    • Lab: Experiment with 2-state and 4-state data types

Procedures and Assignment Statements

    • Procedural blocks
    • System Verilog enhanced procedural blocks
    • Blocking and nonblocking assignments
    • Continuous assignments
    • Tasks and functions
    • Lab: Experiment with blocking and nonblocking assignments.

Programming Statements and Operators

    • Programming statements and language rules
    • Operators and language rules
    • Avoiding subtle programming “gotchas” Guidelines for best coding practices
    • Lab: Model and verify a simple ALU

 System Verilog Compound Types and Packages

    • Arrays and array assignments
    • Structures and unions, Packages
    • Lab: Model and verify an Instruction Stack

 System Verilog Interfaces

    • Using interfaces to simplify inter-module connections.
    • Specifying interface views (modports)
    • Using tasks and functions in interfaces
    • Interfaces as an RTL modelling construct
    • Lab: Model and verify a master/slave interface bus

 Synthesizing RTL Models

    • General synthesis guidelines
    • Running your preferred synthesis compiler
    • Lab: Synthesize a shift/storage register

 RTL Models of Combinational Logic

    • Always procedures and sensitivity list Continuous assignments
    • Synthesis full case and parallel case statements
    • System Verilog unique and priority decision statements
    • Lab: Model, verify and synthesize an ALU

 RTL Models of Sequential Logic

    • Flip-flops and latches
    • Synchronous and asynchronous inputs
    • Lab: Model, verify and synthesize a Johnson counter.

Modelling State Machines

    • Modelling Mealy and Moore state machines
    • Modelling state encoding sequences.
    • Lab: Model, verify and synthesize a UART

System Verilog Object Oriented Programming for Verification

System Verilog Assertions for Design & Verification

Introduction to Verilog and System Verilog

    • Overview and history of Verilog and System Verilog
    • Synthesis and verification language subsets
    • A simple Verilog test bench
    • Lab: running simulations

Verilog and System Verilog Syntax and Semantics

    • Identifier names 
    • Logic values and literal values 
    • Verilog and System Verilog data types 
    • Lab: Verification with 2-state data types

Procedures, Programming Statements and Operators

    • Procedural blocks
    • Tasks and functions
    • Procedural assignments (blocking and non-blocking)
    • Continuous assignments
    • Programming statements and operators
    • Modeling RAMs and ROMs
    • Modeling memories
    • Loading programs into memory models
    • Lab: model and verify a single-port SRAM

System Verilog User-defined Types and Packages

    • User-defined types and enumerated types
    • Structures and unions
    • Casting
    • Packages and $unit
    • Lab: Model and verify an Instruction Stack

System Verilog Interfaces

    • Using interfaces to simplify inter-module connections.
    • Specifying interface views (modports).
    • Using tasks and functions in interfaces
    • Using interfaces between the testbench and the DUT
    • Lab: model and verify a master/slave interface bus

 Verilog Verification Constructs

    • Configurable test benches
    • Structured tests
    • Reading and Writing data files
    • Lab: verify a design using test vectors

 Program Blocks and Clocking Domains

    • Program blocks
    • Clocking domains
    • Final blocks
    • Lab: Developing a test program

Object-Oriented Programming- Part One

    • System Verilog’s class data type
    • Defining class objects
    • Class methods
    • Class inheritance
    • Lab: Creating a simple OOPs testbench

 Object-Oriented Programming, Part Two

    • Extending class definitions (inheritance)
    • Virtual methods
    • Virtual classes
    • Public and private classes
    • Lab: Creating an advanced OO testbench

Dynamic Arrays and Scoreboards

    • Dynamic arrays
    • Associative arrays
    • Queues
    • Strings 
    • Lab: Create a scoreboard using dynamic arrays

 Process Synchronization

    • Fork—join dynamic processes.
    • Built-in mailbox classes
    • Built-in semaphore classes \Enhanced event data types
    • Lab: Using mailboxes for verification

Constrained Random Value Generation

    • Built-in System Verilog random classes
    • Defining constrained random values
    • Constrained random verification methodologies
    • Lab: Using constrained random test values

 Functional Coverage

    • Defining and constructing cover groups
    • Defining cover points and coverage bins
    • Coverage sampling
    • Cross coverage
    • Lab: Using coverage with constrained random tests

Introduction to System Verilog Assertions (SVA)

    • A first look at System Verilog Assertions
    • The traditional design processes.
    • Using SVA in the definition of designs
    • Using SVA in the definition of verification
    • Using SVA to facilitate coverage metrics.
    • Naming conventions
    • Lab: Running simulations with SVA

 Overview of System Verilog Assertion

    • Assertion concepts
    • Immediate and concurrent assertions
    • Assertion sequence definitions

 Overview of SVA Properties and Sequences

    • Immediate and concurrent assertions
    • The SVA property construct
    • The SVA sequence construct
    • When to use properties versus sequences
    • Antecedent, consequent, and threads
    • Assertion, assumption, and verification directives
    • Lab

Understanding Sequences

    • Sequence operators and built-in functions
    • Capturing temporal behaviour
    • Implication operators
    • First match operator
    • Repetition operators
    • Sequence composition operators
    • Sequence methods
    • Lab

 Understanding Properties

    • Property declaration syntax
    • Using formal arguments
    • Local variables in properties
    • Clocking events
    • Disabling condition
    • Property expressions
    • Property operators
    • Lab

Advanced Properties and Sequences

    • Data types in properties and sequences
    • Proper use of assertion overlapping
    • Chaining implication operators
    • Multiple thread termination
    • Unbounded ranges in properties
    • Lab

SVA System Functions and System Tasks

    • Using the $sampled system function
    • Using the $past, $fell and $stable system functions
    • Vector analysis system functions
    • Severity level system functions
    • Assertion control system tasks
    • Lab

Clocked and Multi-clocked Assertions

    • Clock specification for properties and sequences
    • Clock resolution
    • Using a default clock
    • Multiple clocked sequences
    • Multiple clocked properties
    • Lab

Verification Directives & Verification-based Coverage

    • The assert, assume and cover directives
    • SVA coverage
    • Coverage metrics
    • Lab

 Binding SVA to Design Blocks

    • The SVA bind construct
    • Binding to all instances of a module or interface
    • Binding to a single instance of a module or interface
    • Verifying VHDL models using SVA
    • Lab

  Assertion Verification Plans

    • What goes into an assertion verification plan?
    • Planning the who, what and where
    • Analyzing the design specification
    • Final project: Define assertions for a small Design.

Universal Verification Methodologies

UVM Overview

    • Importance of verification methodologies
    • The purpose of UVM
    • UVM concepts
    • UVM Verification component
    • UVM testbench architecture
    • UVM test phases
    • UVM objects and components
    • Lab: Simulate a simple UVM testbench and DUT

Rapid Review of System Verilog Object-Oriented Verification

    • System Verilog’s class data type and new() constructors
    • Inheritance, data hiding.
    • Virtual methods and polymorphism
    • Specialized (parameterized) classes.
    • Object handle assignments and downcasting.
    • Constrained random value generation.
    • Functional coverage

UVM First Look

    • UVM class library
    • uvm_object class
    • uvm_component class
    • Registering UVM components with the factory
    • Virtual interfaces and connecting to the DUT.
    • UVM print and debug utilities.
    • Lab: The big picture — examine all the parts of a complete UVM testbench

UVM Sequence items and Sequences

    • UVM sequence_items (transactions)
    • Defining sequence_item methods
    • Using sequence_item field macros
    • UVM sequences of transactions
    • Sequence/Driver synchronization
    • Lab: Define and simulate sequence_items and sequences
    • UVM Sequencers and Drivers
    • UVM sequencers
    • UVM drivers
    • Transaction Level Modeling (TLM)
    • TLM ports, exports, and analysis ports
    • Lab: Define and simulate a UVM driver and sequencer

UVM Monitors and Agents

    • UVM monitors.
    • Adding one or more monitor analysis ports
    • UVM agents
    • Agent active and passive modes
    • Lab: Defining and simulating a UVM monitor and agent

UVM Functional Coverage

    • A review of System Verilog functional coverage
    • Coverage collectors
    • Where to add coverage collectors
    • Enabling and disabling coverage collectors
    • Lab: Define, simulate, and examine coverage
    • UVM Environments, Predictors, and Scoreboards
    • Scoreboard fundamentals
    • Predicting expected results
    • Comparing expected and actual results
    • Encapsulation in a test environment
    • Lab: Define and simulate a UVM scoreboard and environment, and verify the outputs of a (faulty) DUT

UVM Tests and Advanced Sequences

    • Putting everything together in a UVM test
    • Running multiple tests
    • Virtual sequences and sequencers
    • Sequential and parallel sequences
    • Sequencer arbitration modes
    • Layered sequences.
    • Driver to sequence feedback
    • Top-level modules
    • Lab: Define and simulate a test that runs multiple
    • sequences

UVM Factory and UVM Configuration

    • Understanding the UVM factory
    • Registering and constructing verification components
    • Factory overrides
    • Using the UVM Configuration database
    • Reuse and scalability considerations
    • UVM messages and reports
    • Lab: Define and simulate a configurable UVM test environment