ECEA 5900 Introduction to Modeling for Formal Verification
1st course in the Fundamentals of Model Checking.
Instructor: Hao Zheng
This course introduces the basic concepts of functional verification and model checking, highlighting their importance in modern system designs. It explains different modeling formalisms for representing the behavior of hardware and software, which are either suitable for automated analysis or can represent data-dependent controls that are common in computing system designs. Additionally, it describes system compositions with respect to different communication models
Learning Outcomes
- Appreciate pros and cons of model checking relative to other verification approaches.
- Obtain an overview of model checking to functional verification.
- Understand basic concepts of functional verification and its importance in system design.
- Create program graphs for computations captured in software.
- Derive transition systems from program graphs.
- Understand the syntax and structure of program graphs.
- Create transition systems modeling dynamic behavior.
- Interpret the semantics of transition systems for representing dynamic behavior.
- Understand syntax of transition systems.
- Perform synchronous parallel composition for synchronous sequential circuits.
- Perform system compositions at levels of transition systems or program graphs following different communication models.
- Understand common models for parallel system compositions.
Syllabus
Duration: 4Ìýhours
This module introduces basic concepts of functional verification and model checking. It demonstrates the importance of verification via some examples, outlines the challenges, and reviews pros and cons of model checking with respect to other verification methods.ÌýÌýÌýÌý
Duration: 5Ìýhours
This module introduces transition systems, a basic modeling formalism for representing behavior of hardware and software that is suitable for automated analysis. The syntax and semantics of transition systems are explained, and how sequential circuits can be represented as transition systems is described. Next, program graphs as a formalism to model software are introduced. Syntax of program graphs is described, and semantic interpretation using transition systems is explained.
Duration: 5Ìýhours
This module introduces some modeling formalisms capturing different types of system compositions. Particularly, interleaving of concurrent transition systems, compositions of systems communicating via shared variables or handshaking are explained. Additionally, synchronous parallelism is described for composing synchronous circuit composition.
Duration: 24Ìýhours
This module provides an opportunity to exercise modeling and composition formalisms and methods learned in the previous modules.
- Use skills from module 3 to find the transition system of systems using appropriate composition methods.
- Use skills from module 2 to construct circuit representations for sequential hardware designs, and derive the corresponding transition systems.
- Use skills from module 2 to find program graphs for individual threads of parallel systems and derive the corresponding transition systems.
Ìý
Grading
Assignment | Percentage of Grade |
Motivation of Verification Quiz | 7% |
Overview of Verification Quiz | 7% |
Formal Verification and Model Checking Quiz | 7% |
Modeling Background Quiz | 7% |
Transition Systems Quiz | 7% |
Program Graphs Quiz | 7% |
Modeling Concurrency using Transition Systems Quiz | 7% |
Modeling Communications via Shared Variables Quiz | 7% |
Modeling Communications via Handshaking Quiz | 7% |
Synchronous Parallelism Quiz | 7% |
Final Project | 30% |
Letter Grade Rubric
Letter GradeÌý | Minimum Percentage |
A | 93% |
A- | 90% |
B+ | 86% |
B | 83% |
B- | 80% |
C+ | 76% |
C | 73% |
C- | 70% |
D+ | 66% |
D | 60% |
F | 0% |