Verification of Digital Systems
Overall Course Objectives
This course provides basic knowledge of methods and tools for verifying integrated circuits, by covering the principial elements of coverage-driven constrained random verification:
• Mapping design architecture requirements into verification plans
• Implementing object-oriented test bench environments
• Creating constrained random test cases with intended random stimuli distribution
• Implementing functional checks on the RT as well as the transactional level
• Building coverage models for measuring verification completeness
• Mapping tests, checks, and coverage models to requirements in the verification plan
The course presents the fundamental theory necessary to understand and implement these principal elements. Students will learn how to use simulation tools to debug the design, the constrained random test cases as well as the implemented design checks, but also how to use such tools to measure the obtained coverage metrics using the implemented coverage models.
As a practical aspect, students work in small teams on a practical implementation of a testbench in PyUVM using Python for verifying the functionality of an RTL design. In the final project, each student team will integrate their complete PyUVM verification environment comprised of tests, checks, and coverage models. The final project will be evaluated based on the theoretical correctness of each element, as well as the aggregated capability of the verification environment for finding complex RTL design bugs.
By the end of this course, students will have gained both a thorough theoretical understanding and practical experience in employing modern methods for verifying integrated circuits, using PyUVM and Python. Students will become ready to employ the extensive industry-scale environments used to verify modern complex chip designs.
See course description in Danish
Learning Objectives
- Explain the role of different tools and languages in digital system verification and their application in verification processes.
- Apply the basic theory of constrained random verification to academic and real-world situations, including principles of functional verification of RTL designs, state space exploration, transaction concepts, verification quality, and verification plans.
- Design directed and constrained random test cases, ensuring effective stimuli distribution to verify RTL designs for real-world situations.
- Implement and/or use functional checkers, reference models, scoreboards, and assertions using temporal logic to validate design correctness for real-world situations.
- Develop and apply coverage models and coverage model closure techniques to measure verification completeness.
- Implement testbenches in PyUVM using Python to verify the functionality of an RTL design.
- Use simulation tools to debug RTL designs, test cases, functional checks, and coverage models.
- Analyze the effectiveness of a verification environment by evaluating verification metrics and bug-finding capabilities.
- Integrate different verification components, including tests, checks, and coverage models, into a complete verification environment.
- Assess the final quality of a verification environment based on its ability to detect complex RTL design bugs.
Course Content
Principles of verification of integrated circuits, constrained random verification, verification planning, transaction-based test bench architecture, coverage models, functional checks, assertions, PyUVM, Python tests, scoreboards, requirement-centric verification closure.
Possible start times
- 36 – 49 (Mon 8-12)
Teaching Method
Lectures, group work, and homework. Mandatory final project.
Faculty
Remarks
This course is given in collaboration with the company Syosil, which specializes in verification of digital systems.




