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 Quiz7%
Overview of Verification Quiz7%
Formal Verification and Model Checking Quiz7%
Modeling Background Quiz7%
Transition Systems Quiz7%
Program Graphs Quiz7%
Modeling Concurrency using Transition Systems Quiz7%
Modeling Communications via Shared Variables Quiz7%
Modeling Communications via Handshaking Quiz7%
Synchronous Parallelism Quiz7%
Final Project30%

Letter Grade Rubric

Letter GradeÌý
Minimum Percentage
A93%
A-90%
B+86%
B83%
B-80%
C+76%
C73%
C-70%
D+66%
D60%
F0%