Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Verification Series 8 : Code Coverage with Vivado 2024.1
Rating: 4.4 out of 5(8 ratings)
84 students

Verification Series 8 : Code Coverage with Vivado 2024.1

Step by Step Guide from Scratch
Created byKumar Khandagle
Last updated 5/2025
English
English [Auto],

What you'll learn

  • Code Coverage flow in Vivado
  • Essentials of Statement, Branch, Toggle & Condition Coverage
  • FSM Covereage with bins & transition bins
  • Reading Coverage reports

Course content

6 sections66 lectures2h 39m total length
  • What Code coverage do2:57

    Understand how code coverage reveals which RTL lines run under testbench stimulus, and how Vivado enables coverage, generates a database, and HTML reports to identify dead or unreachable code.

  • Usage of Code Coverage3:02

    Code coverage reveals dead or unreachable RTL logic and testbench quality by showing exercised lines, branches, FSM states, and signal combinations, but cannot guarantee functional correctness or detect protocol violations.

  • Code Coverage vs Functional Coverage vs Assertions P13:37

    Learn how code coverage, functional coverage, and assertions drive verification, using an ALU to test scenarios, input combinations, and cross coverage, with assertions checking design correctness.

  • Code Coverage vs Functional Coverage vs Assertions P22:33

    Use assertions to enforce timing, protocol, and state transitions, while functional coverage ensures all test scenarios are exercised, and code coverage tracks exercised RTL lines in Vivado 2024.1.

  • Code Coverage vs Functional Coverage vs Assertions P33:20

    Compare code coverage, functional coverage, and assertions to ensure all rtl parts are executed and tested, illustrated by an alu with add, subtract, and hand operation opcodes.

  • Code Coverage vs Functional Coverage vs Assertions P41:05

    Learn how code coverage may reach 100% yet miss input and output combinations; use functional coverage to test combinations and apply assertions to catch incorrect behavior in the verification environment.

  • Simplfied Code Coverage flow1:23

    Explore the code coverage flow in vivado, building the rtl testbench, running simulations, converting coverage data to html reports, and analyzing line, branch, condition, and toggle coverage to reach 100%.

  • How we use Vivado to generate Coverage report P11:45

    Navigate the vivado flow to generate a coverage report by creating an rtl project, adding a mux design and testbench, and configuring a digilent 0710 board for simulation.

  • How we use Vivado to generate Coverage report P21:42

    Learn how to enable and generate code coverage reports in Vivado 2024.1 using gui or tcl commands, and interpret simulation data from the elaboration options.

  • How we use Vivado to generate Coverage report P32:31

    Learn how to use Vivado to generate coverage reports during simulation, including setting the coverage name and directory, and selecting coverage types such as line, branch, condition, or toggle.

  • How we use Vivado to generate Coverage report P44:57

    Enable and manage code coverage in Vivado by setting a coverage name and directory in simulation settings, then run a simulation to create coverage data.

  • How we use Vivado to generate Coverage report P54:55

    Configure Vivado coverage by selecting the directory and name, enable statement, branch, condition, and toggle coverage, then export xim coverage to HTML.

  • How we use Vivado to generate Coverage report P63:05

    Learn how to generate a coverage report in Vivado 2024.1, configure coverage options, run simulations, and convert coverage data to readable HTML.

  • How we use Vivado to generate Coverage report P72:55

    Demonstrates how to generate Vivado code coverage, store coverage data with write Exim coverage or export Exim coverage, and open html dashboards from default or chosen directories.

  • How we use Vivado to generate Coverage report P81:28

    Learn how to generate a Vivado coverage report by enabling statement, branch, condition, and toggle coverage, running simulations, and exporting exim coverage to html outputs in your project directory.

  • Design Code0:07
  • TB Code0:18
  • Modified Code Coverage flow3:05

    Explore the modified code coverage flow in Vivado 2024.1, enabling coverage, running simulations, storing and exporting coverage data, and iterating test bench stimuli to reach 95% or more.

  • Self Check Assignments0:40

Requirements

  • Fundamentals of Digital Electronics and Verilog

Description

In modern digital design verification, code coverage plays a critical role in ensuring the quality and completeness of simulation-based testing. It is especially significant in safety-critical and regulated industries such as aerospace and avionics, where verification must meet strict compliance standards like DO-254. DO-254 mandates that hardware designs undergo rigorous verification processes, and code coverage is a key metric to demonstrate that all parts of the RTL have been exercised and tested. This helps identify untested portions of the design, ensuring that no functionality is left unchecked during simulation.

This course offers an in-depth exploration of code coverage using Vivado, with a strong emphasis on practical learning. It covers every essential aspect of the coverage workflow—from understanding the purpose and types of code coverage to generating and analyzing coverage reports in Vivado. The course clarifies the differences between code coverage, functional coverage, and assertions, helping learners understand how these elements complement each other in a comprehensive verification strategy.

Learners will explore five main types of code coverage: Statement Coverage, which checks whether each line of code has been executed during simulation; Branch Coverage, which ensures all control flow branches have been taken; Condition Coverage, which verifies each boolean condition within decision statements; Toggle Coverage, which tracks the transitions of signals to confirm full activity; and FSM (Finite State Machine) Coverage, which ensures all states and transitions in a state machine are exercised.

Through step-by-step demonstrations, students will learn how to design testbenches, write RTL code, simulate with Vivado, and interpret coverage results. 80% of the course is focused on code and flow demonstrations, 12% covers the theoretical foundations, and 8% involves self-check assignments to reinforce logical reasoning and understanding.

By the end of this course, learners will not only understand the theory behind code coverage but also gain practical experience using Vivado to achieve coverage closure in real-world verification environments, making it ideal for professionals working under compliance-driven standards like DO-254.

Who this course is for:

  • This course is for anyone interested in learning about code coverage in the verification of RTL designs.