Verification Course Outline 1746626564
Verification Course Outline 1746626564
www.eda-academy.com
Verilog Coding Series
www.eda-academy.com
3.5. Declaring Vectors
3.6. Assigning Between Different Vector Widths
3.7. Specifying Literal Values
3.8. Automatic Extension of Unsigned Literals
3.9. Variable Vector Selection, Declaring Nets
3.10. Handling Undeclared Identifiers
3.11. Net Declaration Assignment
3.12. Resolving Net Conflicts
3.13. Types of Variables
3.14. Integer and reg Assignments
3.15. Arrays in Verilog
3.16. Declaring Module Parameters
3.17. Local Parameters and Parameter Passing
www.eda-academy.com
6. Assignment Types in Verilog
6.1. Understanding Blocking Assignments
6.2. Race Conditions in Blocking Assignments
6.3. Impact of Blocking Assignment Order
6.4. Understanding Nonblocking Assignments
6.5. Nonblocking Assignments in Sequential Procedures
6.6. Using Temporary Variables in Sequential Logic
6.7. Managing Multiple Assignments in Procedures
6.8. Understanding Continuous Assignments
6.9. Multiple Continuous Assignments
6.10. Understanding Procedural Assignments
6.11. Multiple Procedural Assignments
6.12. Avoiding Combinational Feedback Loops
6.13. Generate Statements in Verilog
6.14. Generate Statement - Conditional If
6.15. Generate Statement - Conditional Case
6.16. Generate Statement - For Loop
www.eda-academy.com
8.4. Constant Functions
8.5. Task Declaration
8.6. Calling Tasks
8.7. Disabling Tasks
8.8. Issues in Functions and Tasks
8.9. Automatic Tasks
8.10. Argument Passing in Verilog
8.11. Subroutine Side Effects
8.12. Accessing Module Variables via Subroutines
www.eda-academy.com
Verilog Coding - Synthesis (Member Free)
www.eda-academy.com
3.7. Impact of Coding Style on Synthesis
3.8. Synthesis Challenges and Limitations
3.9. Technology-Specific Optimization
3.10. FPGA-Specific Synthesis Challenges
3.11. Synthesizable Verilog Constructs
3.12. Verilog Coding Style
www.eda-academy.com
5.9. Optimizing Power and Noise: Gray Encoding
5.10. Optimizing Performance: One-Hot Encoding
5.11. State Bit Indexing in One-Hot Encoding
www.eda-academy.com
8.13. Apply Carry-Save Adder (CSA) Transformations
8.14. ChipWare Library and Synthesis
8.15. Tradeoffs
8.16. Manual Macrocell Instantiation
8.17. Map to Technology Cells and Optimize
8.18. Technology-Dependent Optimization
8.19. Boundary Optimizations
8.20. Register Retiming
8.21. Scan Insertion
8.22. Analyze Results
8.23. Timing Report
8.24. Write Netlist
www.eda-academy.com
Verilog Coding - Verification (Member Free)
www.eda-academy.com
3.7. Simulation Sequencing in Verilog
3.8. Simulation Evaluation Methods
3.9. RTL Simulation Optimization Techniques I
3.10. RTL Simulation Optimization Techniques II
3.11. Register Initialization Methods
3.12. Simulating Tri-state Buses
3.13. Assertion Monitors in Two-State Simulation
3.14. Two-State Simulation Benefits
www.eda-academy.com
6.3. Bus Interface Controller Model
6.4. Bus Interface Controller Implementation
6.5. Combinational and Sequential Logic
6.6. Bus Interface Controller RTL
6.7. Testbench Types
6.8. Testbenches with File I/O
www.eda-academy.com
8.11. Generating Random Stimulus
8.12. Common Random Distributions
8.13. Testing Boundary Conditions
8.14. Worst-Case Test Example – FIFO Model
8.15. Worst-Case Test Example – FIFO Test Tasks
8.16. Worst-Case Test Example – FIFO Test Sequence
8.17. Testing Protocol Interactions
8.18. Sweep Test Example – Task Definitions
8.19. Sweep Test Example – Test Sequence
8.20. Capturing and Replaying Vectors
8.21. Resolving Vector Capture and Replay Issues
8.22. Capturing Vectors to Files
8.23. Applying Vectors from Files
8.24. Vector Capture and Replay Example – Model
8.25. Vector Capture and Replay Example – Testbench
8.26. Vector Capture and Replay Example – Capture
www.eda-academy.com
9.26. Script-Driven Testbench in Verilog-2001
www.eda-academy.com
Verilog Coding - Design (Member Free)
www.eda-academy.com
3.8. Decoder I
3.9. Decoder II
3.10. Decoder III
3.11. Encoder I
3.12. Encoder II
3.13. Comparator I
3.14. Comparator II
www.eda-academy.com
5.17. Fixed-Point Numbers
5.18. Floating-Point Numbers
5.19. Binary-Coded-Decimal Representation
www.eda-academy.com
7.21. Synchronous Registers Example 4
7.22. Synchronous Counters Overview
7.23. Synchronous Counters Example 1
7.24. Synchronous Counters Example 2
7.25. Synchronous Counters Example 3
www.eda-academy.com
SystemVerilog Language Series
www.eda-academy.com
3.4. do ... while Loop
3.5. foreach Loop
3.6. break and continue Statements
3.7. Verilog case Statement
3.8. SystemVerilog priority case
3.9. SystemVerilog unique case
3.10. SystemVerilog priority if and unique if
3.11. Using iff in Event Control
3.12. Procedural Block Types in SystemVerilog
3.13. Combinational Blocks with always_comb
3.14. always_comb vs. always @*
3.15. Latch Blocks with always_latch
3.16. Register Blocks with always_ff
www.eda-academy.com
6. Hierarchy and Connectivity
6.1. Simplifying Port Connections
6.2. Implicit Port Connection: .name (dot-name)
6.3. Implicit Port Connection: .* (dot-star)
6.4. Rules for Using .name and .*
6.5. Advantages of Different Connection Types
6.6. Declaring User-Defined Types
6.7. Compilation Unit Scope (CUS)
6.8. Packages
6.9. Explicit Import
6.10. Wildcard Import
6.11. Ambiguity and Resolved Names
6.12. Import Statement
www.eda-academy.com
9.4. Challenges of Bus Connections Without Interfaces
9.5. Bus Connections Using Interfaces
9.6. Interface Port Mapping Rules
9.7. Accessing Interface Ports
9.8. Accessing Interface Instances
9.9. Define Interface Ports
9.10. Interface Port Applications
9.11. Interface Parameterization
9.12. Modports in Interfaces
9.13. Modport Selection in Module Declaration
9.14. Modport Selection in Module Instantiation
9.15. Shared Interface Tasks
9.16. Interface Methods
9.17. Modport Interface Methods
9.18. Using Generic Interfaces
www.eda-academy.com
SystemVerilog Language - Verification (Member Free)
www.eda-academy.com
3.5. Clocking Block
3.6. Clocking Block Syntax
3.7. Clocking Block Output Drive
3.8. Clocking Block Input Sampling
3.9. Input and Output Skew in Clocking Blocks
3.10. Example: Clocking Block with Skews
3.11. Example: Output Skew Synchronization
3.12. Clocking Block Options and Defaults
3.13. Cycle Delay in Clocking Blocks
3.14. Using Hierarchical Expressions
www.eda-academy.com
5.9. Static Methods
5.10. Current Object Handle: this
5.11. Class Properties as Class Instances
5.12. Aggregation vs. Inheritance
5.13. Example: Simple Inheritance
5.14. Example: Inheritance and Constructors
5.15. Multi-Layer Inheritance
5.16. Data Encapsulation in Classes
5.17. Class Parameters
www.eda-academy.com
8. Functional Coverage with Covergroups
8.1. Structural and Functional Coverage
8.2. Types of Functional Coverage
8.3. Data-Oriented Functional Coverage
8.4. Defining a Coverage Model
8.5. Automatic Coverage Bins
8.6. Defining Explicit Bins
8.7. Explicit Scalar and Vector Bins
8.8. Example: Explicit Scalar and Vector Bins
8.9. Counting Bins in a Covergroup
8.10. Cross Coverage
8.11. Automatic Cross Bins Example
8.12. Explicit Cross Bins and Selections
8.13. Ignored and Illegal Cross Bins
8.14. Defining Easier Cover Cross Bins
8.15. Class-Based Coverage Model
8.16. Tracking Transitions in Coverage
8.17. Specify Coverage Options
8.18. Reference: Type-Specific type_option Fields
8.19. Reference: Instance-Specific option Fields
8.20. Reference: Covergroup Methods
www.eda-academy.com
SystemVerilog Language - Advanced (Member Free)
www.eda-academy.com
3.8. Using Clocking Blocks in Interfaces
3.9. Core Verification Component (VC) Architecture
3.10. Virtual Interface Connections
3.11. Virtual Interface Module Example
3.12. Virtual Interface Class Example
3.13. Virtual Interface Limitations
3.14. Benefits of Transaction Based Verification (TBV)
www.eda-academy.com
6. Direct Programming Interface (DPI)
6.1. The Verilog PLI
6.2. The SystemVerilog DPI
6.3. DPI Characteristics
6.4. SystemVerilog to C Data Type Mapping I
6.5. SystemVerilog to C Data Type Mapping II
6.6. Importing C Functions and Tasks
6.7. Ensuring Data Type Compatibility
6.8. Import Linkage Name
6.9. Task and Function Import in SystemVerilog
6.10. Context Tasks and Functions
6.11. Pure Functions and Simulation Optimization
6.12. Exporting Tasks and Functions
6.13. Export Linkage Name
6.14. Aspects of Task and Function Export
6.15. Imported and Exported Functions Example
6.16. Compilation Options for Linked C Code
6.17. DPI Advantages and Limitations
6.18. Disable Handshake Protocol
6.19. Disable Handshake for Functions
6.20. Disable Handshake for Tasks
www.eda-academy.com
8.6. Assertion and Property Evaluation
8.7. Example of Assertion Evaluation
8.8. Assertion Placement in SystemVerilog
8.9. Sequences
8.10. Same Cycle Sequence Implication: |->
8.11. Next Cycle Sequence Implication: |=>
8.12. Sequence Property Analysis
8.13. Disabling Properties
8.14. Assertion Status
8.15. Cycle Delay Repetition
8.16. Consecutive Sequence Repetition
8.17. Consecutive Repetition with Ranges
www.eda-academy.com
SystemVerilog Language - Testbench (Member Free)
www.eda-academy.com
3.2. Static vs Automatic Subroutines
3.3. SystemVerilog Optional begin/end and Named Ends
3.4. Void Functions
3.5. Function Output Arguments
3.6. Subroutine Exit with Return
3.7. Default Argument Handling
3.8. Argument Binding by Name
3.9. Optional Argument Usage
3.10. Argument Passing by Value
3.11. Variable Access by Side-Effect
3.12. Argument Passing by Reference
3.13. Working with Reference Arguments
4. Interfaces
4.1. SystemVerilog Interfaces
4.2. SystemVerilog Interface Basics
4.3. Simplifying Connections with Interfaces
4.4. Challenges of Bus Connections Without Interfaces
4.5. Bus Connections Using Interfaces
4.6. Interface Port Mapping Rules
4.7. Accessing Interface Ports
4.8. Accessing Interface Instances
4.9. Define Interface Ports
4.10. Interface Port Applications
4.11. Interface Parameterization
4.12. Modports in Interfaces
4.13. Modport Selection in Module Declaration
4.14. Modport Selection in Module Instantiation
4.15. Shared Interface Tasks
4.16. Interface Methods
4.17. Modport Interface Methods
4.18. Using Generic Interfaces
www.eda-academy.com
5.8. Associative Array Lookup Table I
5.9. Associative Array Lookup Table II
5.10. Queues
5.11. Queue Methods
5.12. Queue Methods Example
5.13. Array Manipulation Methods
5.14. Array Locator Methods
5.15. Comparison of Array Operations
6. Classes
6.1. Class Overview in SystemVerilog
6.2. Variables of the Class Type
6.3. Class Handles and Memory Safety
6.4. Class Properties and Methods
6.5. External Method Declaration
6.6. Class Constructor
6.7. Example: Class Definition and Instantiation
6.8. Static Properties
6.9. Static Methods
6.10. Current Object Handle: this
6.11. Class Properties as Class Instances
6.12. Aggregation vs. Inheritance
6.13. Example: Simple Inheritance
6.14. Example: Inheritance and Constructors
6.15. Multi-Layer Inheritance
6.16. Data Encapsulation in Classes
6.17. Class Parameters
www.eda-academy.com
7.12. Constraint Expressions: Iterative Constraints
7.13. Controlling Constraints: constraint_mode()
7.14. Example: Application of constraint_mode()
7.15. Randomization Procedure
7.16. Randomization Ordering and Solution Probability
7.17. Setting the Random Seed: srandom()
www.eda-academy.com
9.12. Semaphore-Based Process Synchronization
9.13. Event Variables
9.14. Merging Events
9.15. Reclaiming Events
www.eda-academy.com
SystemVerilog Language - Coverage (Member Free)
www.eda-academy.com
3.7. Example Defining Coverpoint Value Bins
3.8. Defining Coverpoint Transition Bins
3.9. Example Defining Coverpoint Transition Bins
3.10. Defining Coverpoint Crosses
3.11. Automatically Created Cross Bins
3.12. Defining Cross Bins
3.13. Example Defining Cross Bins
3.14. Using Covergroups in Classes
3.15. Example Using Covergroups in Classes
www.eda-academy.com
5.6. Metric-Driven Verification Goals
5.7. Integrating Coverage Techniques
5.8. Explicit Coverage in SystemVerilog
5.9. Coverage Placement Strategies
5.10. Interface Monitor Coverage Declaration
5.11. Interface Monitor Coverage Trigger
5.12. Module Monitor Coverage
5.13. When to Cover
5.14. Comparing With and Without MDV
www.eda-academy.com
8. Assertion-Based Verification (ABV) Methodology
8.1. Traditional Verification
8.2. Traditional Verification Disadvantages
8.3. Assertion-Based Solution
8.4. Advantages of Assertion-Based Verification
8.5. Before Assertion-Base Verification
8.6. After Assertion-Base Verification
8.7. Verification Testbench based on Assertion
8.8. Property specification in Assertion-Based Verification
8.9. Assertion in Simulation Testbench
8.10. Assertion in Formal Verification Testbench
8.11. Assertion-Based Verification Methodology
www.eda-academy.com
SystemVerilog Language - Assertion (Member Free)
www.eda-academy.com
3.12. FSM Verification with SVA
3.13. FSM Assertion Checks
3.14. Understanding Assertion Overlapping
3.15. Edge-Triggered Functions
3.16. $past Function
3.17. $stable Function
3.18. $countones() and $isunknown() Functions
3.19. $onehot() and $onehot0() Functions
4. Sequences
4.1. Sequence Operators and Features
4.2. Understanding Sequence Examples in SVA
4.3. Sequence Implication
4.4. Conditional and Unconditional Properties
4.5. Never Properties in SVA Assertions
4.6. Sequence Property Analysis
4.7. Edge-triggered Sequences with $rose and $fell
4.8. Handling Assertions with Disable Properties
4.9. Using Default Disable
4.10. Synchronous Abort Operators
4.11. Assertion Status
4.12. Cycle Delay Repetition
4.13. Cycle Delay Repetition Ranges
4.14. Consecutive Repetition
4.15. Consecutive Repetition with Ranges
4.16. Consecutive Repetition: Special Ranges
4.17. Non-Consecutive Repetition
4.18. Go-To Repetition
4.19. Non-Consecutive and Go-To Ranges
4.20. Non-Consecutive Repetition Range Example
4.21. Go-To Repetition Range Example
4.22. Repetition Shorthand
4.23. Property Abstraction
4.24. Challenges in Assertion Specification
4.25. Issues with Under-Specifying Assertions
www.eda-academy.com
5.5. Sequence or Operator
5.6. Sequence and Operator
5.7. Sequence intersect Operator
5.8. Sequence Operator Examples
5.9. first_match Operator
5.10. first_match Operator: Removing Undesired Failures
5.11. Sequence throughout Operator
5.12. Sequence within Operator
www.eda-academy.com
7.11. Keep Assertions Simple
7.12. Recommended Not to Be Used in Formal
7.13. Recommended SVA Coding Styles I
7.14. Recommended SVA Coding Styles II
7.15. Recommended SVA property modelling I
7.16. Recommended SVA property modelling II
www.eda-academy.com
9.16. FIFO White-Box Property Checks
www.eda-academy.com
UVM Series
www.eda-academy.com
4. Common Class Operations
4.1. Reference Copy
4.2. Clone
4.3. Shallow and Deep Clone
4.4. Deep Cloning
4.5. Printing Method
4.6. Print Policy Control
4.7. Polymorphism and Encapsulation
4.8. Constructing a Print Array
4.9. Building and Using the Print Method
4.10. Aggregate Classes
4.11. Managing Instance Names
4.12. Using Instance Names
5. Components
5.1. Architecture for Driving Data into DUT
5.2. Verification Component Hierarchy
5.3. Instance Names and Parent Pointers
5.4. Base Class Implementation for Components
5.5. Simple Component Connections
www.eda-academy.com
8. Class-Based Testbench
8.1. Transaction-Based Verification
8.2. Simple Testbench: PDS Port
8.3. Classes as Component Structures
8.4. Parent Handle
8.5. Using Parent Handles for Pathnames
8.6. Sequencer Stimulus Generator
8.7. Simple Driver
8.8. Simple Monitor
8.9. PDS Verification Component
8.10. VC Configuration
8.11. Simple VC Instantiation
8.12. Sequencer Policy
8.13. Setting Sequencer Policy
8.14. Testbench Wrapper
8.15. Test Class Functionality
8.16. Simplified Component Class Diagram
8.17. Features of the Class Library
www.eda-academy.com
Universal Verification Methodology - Fundamentals (Member
Free)
www.eda-academy.com
3.3. Design for Test Writing Using Knobs
3.4. Basic Constraints for Legal Packets
3.5. Layering Constraints for Testing
3.6. Example: Layering Constraints
3.7. Class Methods
3.8. UVM Inheritance Tree for Data Items
3.9. Data Modeling with UVM
3.10. UVM Field Macros
3.11. Field Macros for Array Types
3.12. Flag Arguments for Field Macros
3.13. Field Macro Usage Examples
3.14. Copy and Clone Automation Methods
3.15. Compare Automation Method
3.16. Print Automation Method
3.17. Transaction Recording in UVM
3.18. Creating and Using a UVM Package
3.19. Compiling UVM Code
www.eda-academy.com
5.12. Directory Structure
5.13. UVC Directory Structure
5.14. UVC Package and Include Files
5.15. Top-Level Module for Initial Testing
5.16. Messages for Debug and Error Reporting
5.17. Message Macros: Info, Verbosity
5.18. Full Range of Message Macros
5.19. Message Actions
7. Configuration
7.1. Configuring Topology
7.2. Configuring is_active Agent Property
7.3. Setting Config Properties
7.4. Config Property Setting Example
7.5. Configuration Mechanism Overview
7.6. Selected Configuration Database Methods
7.7. Setting YAPP Agent to Passive from Test
7.8. Config Setting Rules
7.9. Debugging Configuration Settings
7.10. set_config Methods
www.eda-academy.com
8.8. Overriding Specific Instances
8.9. Type Versus Instance Overrides
8.10. Alternative Syntax for Type/Instance Overrides
8.11. Override Rules
8.12. Notes About the Factory
www.eda-academy.com
Universal Verification Methodology - Advanced (Member Free)
www.eda-academy.com
3.9. Virtual Sequence Objection
3.10. Instantiating & Connecting Virtual Sequencer
3.11. Setting the Virtual Sequence
www.eda-academy.com
5.18. TLM FIFO Methods
5.19. Characteristics of Analysis FIFO
5.20. Analysis FIFO Scoreboard
5.21. Analysis FIFO Testbench Connection
5.22. YAPP Scoreboard Using Analysis FIFOs
5.23. Bi-Directional TLM Transport Connection
5.24. TLM2 for UVM
www.eda-academy.com
7.17. Backdoor DUT Access: Peek/Poke
7.18. Model Access Only: get/set/randomize
7.19. Update: DUT to Match Register Model
7.20. Mirror: Register Model to Match DUT
7.21. Executing Register API Calls in Test
www.eda-academy.com
Universal Verification Methodology - Register Verification I
(Member Free)
www.eda-academy.com
3.12. IP-XACT: Wrap Registers in an Address Block
3.13. Generated Register Block with Address Map
3.14. Memory Management in Address Blocks
3.15. IP-XACT: Memory Definition
3.16. Generated Memory
3.17. IP-XACT: Top Level Declarations
3.18. Register Model Top Level 1 – Register Block
3.19. Register Model Top Level 2 – Memories
www.eda-academy.com
6.7. Detecting Reset
6.8. Checking Topology for Adapter Connection
6.9. Test Execution of a Built-In Register Sequence
8. Prediction
8.1. Understanding Prediction
8.2. Implicit Prediction
8.3. Challenges with Implicit Prediction
8.4. Explicit Prediction
8.5. Predictor Component Functions
8.6. Predictor Creation and Configuration
8.7. Analysis TLM Components
8.8. Predictor Connection
8.9. Passive Prediction
8.10. Prediction Modes
8.11. Manual Prediction from Sequences
8.12. Manual Prediction from Scoreboard
8.13. Initiating Manual Prediction
www.eda-academy.com
9.10. Accessing Mirrored: predict/get_mirrored_value
9.11. Model Access Only: get/set
9.12. Model Access Only: randomize
9.13. Update DUT to Match Register Model – Frontdoor
9.14. Update DUT to Match Register Model – Backdoor
9.15. Mirror Register Model to Match DUT – Frontdoor
9.16. Mirror Register Model to Match DUT – Backdoor
9.17. Mirror Usage Examples
9.18. Disabling check-on-read
9.19. Convenience Handles
9.20. Memory Access Methods
9.21. Memory write() Method
9.22. Memory burst_write() Method
www.eda-academy.com
Universal Verification Methodology - Register Verification II
(Member Free)
www.eda-academy.com
4.2. YAPP Router Scoreboard Structure
4.3. Router Reference Model and Scoreboard
4.4. Efficient Use of Register Model
4.5. Module UVC and Register Model
4.6. Access Register Model in Reference Model
4.7. Updating the Reference Model – TLM Declarations
4.8. Using Register Model to Query DUT Configuration
4.9. Verifying Volatile (Read-Only) Registers
4.10. YAPP Address Counter Validation
4.11. Setting Mirrored in the Register Model
4.12. mirror() Check Results
www.eda-academy.com
8. Running Built-in Register Sequences and Tests
8.1. UVM Built-In Sequences for Registers
8.2. UVM Built-In Sequences for Memories
8.3. UVM Built-In Sequences for Registers and Memories
8.4. Built-In Sequences and Access Policies
8.5. Setting Skip Attributes via Resource Database
8.6. Overview of uvm_reg_mem_built_in_seq
www.eda-academy.com
Formal Verification Series
www.eda-academy.com
4.3. Formal Property Verification(FPV)
4.4. FPV Process Flow
4.5. Inputs and Outputs for FPV
4.6. Creating FPV Testbench
4.7. Where to Use FPV
www.eda-academy.com
8.3. General Design Issues
8.4. Safety/Security
8.5. Structural Operation
8.6. Assertion Creation
www.eda-academy.com
Formal Verification: SVA Coding
www.eda-academy.com
3.10. Steps to Create an SVA checker
3.11. SVA Assertion Structure
3.12. SVA Property Placement
www.eda-academy.com
6. Use of Auxiliary HDL Code
6.1. What Is Auxiliary Code
6.2. Auxiliary Code vs SVA
6.3. Auxiliary Code – Example 1 (I)
6.4. Auxiliary Code – Example 1 (II)
6.5. Auxiliary Code – Example 1 (III)
6.6. Auxiliary Code – Example 1 (IV)
6.7. Auxiliary Code – Example 2 (I)
6.8. Auxiliary Code – Example 2 (II)
6.9. Auxiliary Code – Example 2 (III)
6.10. Auxiliary Code – Example 3 (I)
6.11. Auxiliary Code – Example 3 (II)
6.12. Auxiliary Code – Example 3 (III)
6.13. Auxiliary Code – Example 4 (I)
6.14. Auxiliary Code – Example 4 (II)
6.15. Auxiliary Code – Example 5 (I)
6.16. Auxiliary Code – Example 5 (II)
6.17. Auxiliary Code – Example 5 (III)
6.18. Auxiliary Code – Example 6 (I)
6.19. Auxiliary Code – Example 6 (II)
6.20. Auxiliary Code – Example 6 (III)
6.21. Auxiliary Code – Example 7 (I)
6.22. Auxiliary Code – Example 7 (II)
6.23. Auxiliary Code – Example 7 (III)
www.eda-academy.com
Formal Verification: PSL Coding
www.eda-academy.com
3.11. Always and Never Properties
3.12. Links to Formal Verification
www.eda-academy.com
6. Use of Auxiliary HDL Code
6.1. What Is Auxiliary Code
6.2. Auxiliary Code vs PSL
6.3. Auxiliary Code – Example 1 (I)
6.4. Auxiliary Code – Example 1 (II)
6.5. Auxiliary Code – Example 1 (III)
6.6. Auxiliary Code – Example 1 (IV)
6.7. Auxiliary Code – Example 2 (I)
6.8. Auxiliary Code – Example 2 (II)
6.9. Auxiliary Code – Example 2 (III)
6.10. Auxiliary Code – Example 3 (I)
6.11. Auxiliary Code – Example 3 (II)
6.12. Auxiliary Code – Example 3 (III)
6.13. Auxiliary Code – Example 4 (I)
6.14. Auxiliary Code – Example 4 (II)
6.15. Auxiliary Code – Example 5 (I)
6.16. Auxiliary Code – Example 5 (II)
6.17. Auxiliary Code – Example 5 (III)
6.18. Auxiliary Code – Example 6 (I)
6.19. Auxiliary Code – Example 6 (II)
6.20. Auxiliary Code – Example 6 (III)
6.21. Auxiliary Code – Example 7 (I)
6.22. Auxiliary Code – Example 7 (II)
6.23. Auxiliary Code – Example 7 (III)
www.eda-academy.com
Formal Verification Full Course List
1. Introduction to Formal Verification (Available)
2. Formal Verification Fundamentals
3. SVA Coding for Formal Verification (Available)
4. PSL Coding for Formal Verification (Available)
5. Property Checking
6. Functional Signoff with Formal
7. Formal Verification Applications
8. Formal Verification: Auto Formal
9. Formal Verification: Formal Apps
10.Formal Verification: Unit Signoff
11.Formal Verification: Block Signoff
12.Formal Verification: System Signoff
www.eda-academy.com
Resource: Formal Verification of Properties in Hardware Design
(PDF)
1. Introduction
1.1. Motivation for Embracing Formal Verification
1.2. Target Audience and Learning Approach
1.3. Chapter Structure and Practical Themes
www.eda-academy.com
3.2. Verification Result Confidence in Formal Analysis
3.3. Deterministic Verification Outcomes
3.4. Flexible Verification with Incomplete Methods
3.5. Bounded Formal Verification
3.6. Managing Abstraction and Approximation in Formal Verification
3.7. Understanding Approximation
3.8. Overapproximation and Its Implications
3.9. Underapproximation in Practice
3.10. The Problem of Contradictory Assumptions
3.11. Pruning and Model Simplification
3.12. Applying Formal Methods Throughout RTL Verification
3.13. Exhaustive Verification
3.14. Lightweight Verification
3.15. Early RTL Verification
3.16. Defining and Validating Interface Assumptions
3.17. The Role of Assumptions in Formal Verification
3.18. Challenges in Proving Assumptions Formally
3.19. Complementary Simulation-Based Validation
3.20. Formal Verification Efficiency
3.21. Hybrid Verification Approaches
www.eda-academy.com
5. Formal Property Verification
5.1. Understanding Formal Property Checking
5.2. Exploring Exhaustive Design Verification through Formal Methods
5.3. Defining the Role of Formal Properties
5.4. Exhaustive Verification with FPV
5.5. The Formal Checking Mechanism
5.6. Comprehensive Strategies in Formal and Dynamic Verification
5.7. Exploring Dynamic and Formal Approaches
5.8. Critical Considerations for Formal Efficiency
5.9. Applying Property-Based Verification
5.10. Formal Property Verification Flow and Applications
5.11. FPV Workflow
5.12. Key Inputs and Expected Outputs
5.13. Best Use Cases and Application Limits
5.14. Constructing a Formal Verification Environment
5.15. Cycle-Based Models
5.16. Input Constraints
5.17. End-to-End Assertions
5.18. Functional Coverage Properties
5.19. Formal Verification IP (VIP)
www.eda-academy.com
7. Formal Verification Techniques for Arbiter Designs
7.1. Arbitration Logic and Fairness
7.2. Types of Arbitration Mechanisms
7.3. Ensuring Liveness in Arbitration
7.4. Expressing and Validating Fairness Properties
7.5. Ensuring Grant Fairness
7.6. Simple Arbitration with Fairness Constraints
7.7. Assertion for Fair Arbitration
7.8. Fairness for Other Clients
7.9. Scaling Fair Arbitration
7.10. Arbiter-Specific Properties
7.11. Exclusive Grant Control
7.12. Latency Enforcement
7.13. Valid Grant Preconditions
7.14. Priority-Based Grant Control
7.15. Two-Client Priority Rule
7.16. Assertion Violation Example
7.17. Scaling to Multiple Clients
7.18. Automation of Priority Assertions
7.19. Dynamic Weighted Arbitration
7.20. Credit Mechanism and Arbitration Logic
7.21. Enforcing Credit Conditions Through Assertions
7.22. Preventing Starvation with Credit Fairness
7.23. Adaptive Client Prioritization
7.24. Event-Driven Priority Switching
7.25. Assertion-Based Enforcement
7.26. Structured Behavior Partitioning
7.27. Handling Overlapping Requests
7.28. Challenges with Traditional Assertions
7.29. Using Tags for Accurate Matching
7.30. Latency Awareness in Assertion Design
7.31. Implications for High-Performance Design
7.32. Designing a Reusable Assertion-Based Verification Block for an Arbiter
7.33. Interface Structure and Signal Roles
7.34. Behavioral Requirements in Natural Language
7.35. Creating the Assertion Interface
7.36. Adding Analysis Capabilities
7.37. Integrating and Reusing Assertion Logic
www.eda-academy.com
8.4. Functional Overview of SDRAM Controller Transactions
8.5. Supported Memory Transactions
8.6. State Control and Transitions
8.7. SDRAM Transaction Flows
8.8. Property Description in Natural Language
8.9. Assertion Integration in SDRAM Control
8.10. Signal Interface and Modport Connection
8.11. Communication with Analysis Environment
8.12. Error Status Propagation and Reporting
8.13. Signal Modeling for Assertion Readability
8.14. Naming Convention Consistency
8.15. Assertion Design for Controller Behavior
8.16. Encapsulate Assertions for Verification Use
www.eda-academy.com
10.6. Queue Operations and Signal Behavior
10.7. Basic Enqueue and Dequeue Process
10.8. Clearing a Middle Entry
10.9. Behavioral Expectations in Natural Language
10.10. Assertion Integration in Monitor Design
10.11. Defining the Signal Interface
10.12. Connecting to Analysis Components
10.13. Defining Error Reporting Mechanisms
10.14. Assertion-Based Verification of Queue Behavior
10.15. Assertion Integration for Monitor Design
www.eda-academy.com
ABV Series
1. Assertion
1.1. Specifying Properties
1.2. What is an Assertion
1.3. Defining Assertion
1.4. Assertions Monitor Design Properties
1.5. What are Assertions used for
1.6. What aren’t Assertions used for
1.7. Why to Use Assertions
1.8. Who to Write Assertions
1.9. Where to Use Assertions
1.10. Issues with Assertions I
1.11. Issues with Assertions II
www.eda-academy.com
3.8. Sequences IV
3.9. Properties I
3.10. Properties II
3.11. Properties III
3.12. Properties IV
3.13. Liveness I
3.14. Liveness II
3.15. Glue Logic I
3.16. Glue Logic II
www.eda-academy.com
Introduction to Assertion Based Verification - PSL (Member Free)
1. Assertion
1.1. Specifying Properties
1.2. What is an Assertion
1.3. Defining Assertion
1.4. Assertions Monitor Design Properties
1.5. What are Assertions used for
1.6. What aren’t Assertions used for
1.7. Why to Use Assertions
1.8. Who to Write Assertions
1.9. Where to Use Assertions
1.10. Issues with Assertions I
1.11. Issues with Assertions II
www.eda-academy.com
3.11. Properties III
3.12. Properties IV
3.13. Liveness I
3.14. Liveness II
3.15. Glue Logic I
3.16. Glue Logic II
www.eda-academy.com
SVA/PSL Coding Series
1. Assertion
1.1. Specifying Properties
1.2. What is an Assertion
1.3. Defining Assertion
1.4. Assertions Monitor Design Properties
1.5. What are Assertions used for
1.6. What aren’t Assertions used for
1.7. Why to Use Assertions
1.8. Who to Write Assertions
1.9. Where to Use Assertions
1.10. Issues with Assertions I
1.11. Issues with Assertions II
www.eda-academy.com
3.9. Placing Assertions
3.10. Same Cycle Implication
3.11. Next Cycle Implication
3.12. FSM Verification with SVA
3.13. FSM Assertion Checks
3.14. Understanding Assertion Overlapping
3.15. Edge-Triggered Functions
3.16. $past Function
3.17. $stable Function
3.18. $countones() and $isunknown() Functions
3.19. $onehot() and $onehot0() Functions
www.eda-academy.com
5.2. Sequence Clocking
5.3. Sequence Composition Operators
5.4. Sequence fusion Operator
5.5. Sequence or Operator
5.6. Sequence and Operator
5.7. Sequence intersect Operator
5.8. Sequence Operator Examples
5.9. first_match Operator
5.10. first_match Operator: Removing Undesired Failures
5.11. Sequence throughout Operator
5.12. Sequence within Operator
www.eda-academy.com
SystemVerilog Assertion (SVA) - Formal (Member Free)
www.eda-academy.com
3.3. Sequence Implication
3.4. Conditional and Unconditional Properties
3.5. Never Properties in SVA Assertions
3.6. Sequence Property Analysis
3.7. Edge-triggered Sequences with $rose and $fell
3.8. Handling Assertions with Disable Properties
3.9. Using Default Disable
3.10. Synchronous Abort Operators
3.11. Assertion Status
3.12. Cycle Delay Repetition
3.13. Cycle Delay Repetition Ranges
3.14. Consecutive Repetition
3.15. Consecutive Repetition with Ranges
3.16. Consecutive Repetition: Special Ranges
3.17. Non-Consecutive Repetition
3.18. Go-To Repetition
3.19. Non-Consecutive and Go-To Ranges
3.20. Non-Consecutive Repetition Range Example
3.21. Go-To Repetition Range Example
3.22. Repetition Shorthand
3.23. Property Abstraction
3.24. Challenges in Assertion Specification
3.25. Issues with Under-Specifying Assertions
www.eda-academy.com
5.7. Simplifying Property – Example 2
5.8. Simplifying Property – Example 3
5.9. Simplifying Property – Example 4
5.10. Express In Native Language
5.11. Keep Assertions Simple
5.12. Recommended Not to Be Used in Formal
5.13. Recommended SVA Coding Styles I
5.14. Recommended SVA Coding Styles II
5.15. Recommended SVA property modelling I
5.16. Recommended SVA property modelling II
www.eda-academy.com
7.5. Inputs and Outputs for FPV
7.6. Creating FPV Testbench
7.7. FPV Testbench – Cycle-Based Models
7.8. FPV Testbench – Constraints
7.9. FPV Testbench – End-to-End Checkers
7.10. FPV Testbench – Functional Covers
7.11. FPV Testbench – Formal VIP
7.12. Where to Use FPV
www.eda-academy.com
SystemVerilog Assertion (SVA) - Advanced (Member Free)
www.eda-academy.com
3.11. Challenges with Local Variables as Arguments
3.12. Data Integrity Verification with Local Variables
3.13. SVA Data Integrity Assumptions
3.14. Using Multi-clocked Sequences
3.15. Using Multi-clocked Properties
3.16. Procedural Block Assertions
3.17. Complex Property Example
3.18. Simplifying Complex Clock Expressions
3.19. Property Clocking Tips
www.eda-academy.com
5. Efficient SVA Property Reuse
5.1. Sequence Arguments
5.2. Property Arguments
5.3. Assertion Generation
5.4. Verification Component Modules
5.5. Assertion Binding
5.6. Assertion Binding Example
5.7. Conditional Properties
5.8. Understanding Properties
5.9. Simulation of a Block
5.10. Simplifying Formal Verification
5.11. Nondeterministic Constants
5.12. Handling Formal Complexity
www.eda-academy.com
Property Specification Language (PSL) - Fundamentals (Member
Free)
1. Assertion
1.1. Specifying Properties
1.2. What is an Assertion
1.3. Defining Assertion
1.4. Assertions Monitor Design Properties
1.5. What are Assertions used for
1.6. What aren’t Assertions used for
1.7. Why to Use Assertions
1.8. Who to Write Assertions
1.9. Where to Use Assertions
1.10. Issues with Assertions I
1.11. Issues with Assertions II
www.eda-academy.com
3.10. Counter Intuitive Clock Behaviour
3.11. Clocked vs Unclocked Properties
3.12. Default Clock Statement
3.13. Conditional Assertion Check
www.eda-academy.com
5.19. Abort with SERE
5.20. Named Sequences
5.21. Using Named Sequences
5.22. Named Conditions in PSL
www.eda-academy.com
Property Specification Language (PSL) - Formal (Member Free)
www.eda-academy.com
3.9. abort Operator
3.10. async_abort and sync_abort
3.11. Bounding Operator Precedence
3.12. Termination Operator Precedence
3.13. Foundation Language Examples
3.14. Cascading Next
3.15. Sequences
www.eda-academy.com
5.9. Restrictions on never
5.10. Implication: Fulfilling Conditions
5.11. Implication: Enabling Conditions
5.12. Using Verilog Text Replacement Macros
5.13. Verilog Conditional PSL Parsing
5.14. Guarded Properties
5.15. Naming Restrictions
5.16. Verification Components (vcomps)
www.eda-academy.com
7.7. FPV Testbench – Cycle-Based Models
7.8. FPV Testbench – Constraints
7.9. FPV Testbench – End-to-End Checkers
7.10. FPV Testbench – Functional Covers
7.11. FPV Testbench – Formal VIP
7.12. Where to Use FPV
www.eda-academy.com
Property Specification Language (PSL) - Advanced (Member
Free)
www.eda-academy.com
3.10. Advanced Use of ended()
3.11. Parameterized Sequences
3.12. Nested Sequence Example
3.13. HDL Type Parameters
3.14. Parameterized Properties
3.15. Replicated Properties
3.16. Using Replication
3.17. Property Declaration Using for
3.18. Property Declaration: for vs forall
3.19. Parameterized Sequence Operators
3.20. Understanding Macro Capabilities
3.21. Using Macros for Assertion Generation
3.22. Comparison: %for, forall, and for
3.23. Understanding Local Variables
3.24. Utilizing Local Variables in PSL
www.eda-academy.com
5.6. Verification Unit Types
5.7. VUint Binding
5.8. Default Verification Unit
5.9. Modeling Layer
5.10. Modeling Layer Example
5.11. Inheritance Binding and Modeling Layer
5.12. Applying Inheritance
5.13. Verification Unit Advantages
www.eda-academy.com