Thanyapat Sakunkonchak Masahiro Fujita

Slides:



Advertisements
Similar presentations
Representing Boolean Functions for Symbolic Model Checking Supratik Chakraborty IIT Bombay.
Advertisements

Masahiro Fujita Yoshihisa Kojima University of Tokyo May 2, 2008
Computer Design Aided Computer Design Aided Fujita Lab, University of Tokyo Equivalence Checking in C-based System-Level Design by Sequentializing Concurrent.
Chapter 10- Instruction set architectures
High Level Languages: A Comparison By Joel Best. 2 Sources The Challenges of Synthesizing Hardware from C-Like Languages  by Stephen A. Edwards High-Level.
1/20 Generalized Symbolic Execution for Model Checking and Testing Charngki PSWLAB Generalized Symbolic Execution for Model Checking and Testing.
Ch. 7 Process Synchronization (1/2) I Background F Producer - Consumer process :  Compiler, Assembler, Loader, · · · · · · F Bounded buffer.
A survey of techniques for precise program slicing Komondoor V. Raghavan Indian Institute of Science, Bangalore.
SYMBOLIC MODEL CHECKING: STATES AND BEYOND J.R. Burch E.M. Clarke K.L. McMillan D. L. Dill L. J. Hwang Presented by Rehana Begam.
1 Program Slicing Purvi Patel. 2 Contents Introduction What is program slicing? Principle of dependences Variants of program slicing Slicing classifications.
LECTURE 1 CMSC 201. Overview Goal: Problem solving and algorithm development. Learn to program in Python. Algorithm - a set of unambiguous and ordered.
Symmetry-Aware Predicate Abstraction for Shared-Variable Concurrent Programs Alastair Donaldson, Alexander Kaiser, Daniel Kroening, and Thomas Wahl Computer.
Detailed Design Kenneth M. Anderson Lecture 21
Formal Methods. Importance of high quality software ● Software has increasingly significant in our everyday activities - manages our bank accounts - pays.
Model Checking. Used in studying behaviors of reactive systems Typically involves three steps: Create a finite state model (FSM) of the system design.
1 Ivan Lanese Computer Science Department University of Bologna Italy Concurrent and located synchronizations in π-calculus.
Formal Verification of SpecC Programs using Predicate Abstraction Himanshu Jain Daniel Kroening Edmund Clarke Carnegie Mellon University.
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 4: SMT-based Bounded Model Checking of Concurrent Software.
Cheng/Dillon-Software Engineering: Formal Methods Model Checking.
Using Mathematica for modeling, simulation and property checking of hardware systems Ghiath AL SAMMANE VDS group : Verification & Modeling of Digital systems.
Java Programming, 3e Concepts and Techniques Chapter 3 Section 62 – Manipulating Data Using Methods – Day 1.
1 Automatic Refinement and Vacuity Detection for Symbolic Trajectory Evaluation Orna Grumberg Technion Haifa, Israel Joint work with Rachel Tzoref.
PAGES:51-59 SECTION: CONTROL1 : DECISIONS Decisions.
“Software” Esterel Execution (work in progress) Dumitru POTOP-BUTUCARU Ecole des Mines de Paris
Fall 2004EE 3563 Digital Systems Design EE 3563 VHSIC Hardware Description Language  Required Reading: –These Slides –VHDL Tutorial  Very High Speed.
A Framework on Synchronization Verification in System-Level Design Thanyapat Sakunkonchak Satoshi Komatsu Masahiro Fujita Fujita Laboratory University.
Formal Verification of Synchronization Issues of SpecC Description with Automatic Abstraction Thanyapat Sakunkonchak Masahiro Fujita Department of Electronics.
Verification & Validation By: Amir Masoud Gharehbaghi
Verification of Synchronization in SpecC Description with the Use of Difference Decision Diagrams Thanyapat Sakunkonchak Masahiro Fujita Department of.
Verifying Programs with BDDs Topics Representing Boolean functions with Binary Decision Diagrams Application to program verification class-bdd.ppt
ELEE 4303 Digital II Introduction to Verilog. ELEE 4303 Digital II Learning Objectives Get familiar with background of HDLs Basic concepts of Verilog.
04/26/20031 ECE 551: Digital System Design & Synthesis Lecture Set : Introduction to VHDL 12.2: VHDL versus Verilog (Separate File)
Verification of Behavioral Consistency in C by Using Symbolic Simulation and Program Slicer Takeshi Matsumoto Thanyapat Sakunkonchak Hiroshi Saito Masahiro.
Model Checking Lecture 1. Model checking, narrowly interpreted: Decision procedures for checking if a given Kripke structure is a model for a given formula.
Boolean Programs: A Model and Process For Software Analysis By Thomas Ball and Sriram K. Rajamani Microsoft technical paper MSR-TR Presented by.
Model Checking Lecture 1: Specification Tom Henzinger.
CS223: Software Engineering Lecture 26: Software Testing.
On Sequentializing Concurrent Programs
Adapted from Krste Asanovic
Formal methods: Lecture
SS 2017 Software Verification Bounded Model Checking, Outlook
Learning to Program D is for Digital.
Control Flow Testing Handouts
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Overheads for Computers as Components
Activity Diagram.
Outline of the Chapter Basic Idea Outline of Control Flow Testing
Algorithm and Ambiguity
Relational Algebra Chapter 4, Part A
New Directions in the Development of ABC
Over-Approximating Boolean Programs with Unbounded Thread Creation
Binary Decision Diagrams
Relational Algebra Chapter 4, Sections 4.1 – 4.2
Formal Methods in software development
Pages:51-59 Section: Control1 : decisions
Formal Methods in software development
Algorithm and Ambiguity
Introduction to SMV 2/19/2003.
A Refinement Calculus for Promela
Programming Concepts and Database
Collaboration of Parafrase-2 and NaraView
Applying Use Cases (Chapters 25,26)
Canonical Computation without Canonical Data Structure
Synchronization Verification in System-Level Design with ILP Solvers
Basic Concepts of Algorithm
Predicate Abstraction
Dichotomies in CSP Karl Lieberherr inspired by the paper:
Pages:51-59 Section: Control1 : decisions
Verifying Programs with BDDs Sept. 22, 2006
Subject Name: SOFTWARE ENGINEERING Subject Code:10IS51
Presentation transcript:

Verification of Synchronization in SpecC Description with the Use of Difference Decision Diagrams Thanyapat Sakunkonchak Masahiro Fujita Department of Electronic Engineering University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Content Introduction Background Verification Flow Verification Results Conclusion & Future Work July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Introduction What is SpecC? Why verification of synchronization? July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo What is SpecC? Standard system design language for adoption in industry and academia Handling system design specification->implementation, hardware/software co-design Build based on ANSI-C July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

Why verification of synchronization? Concurrency (parallel execution) is commonly exist in system design A kind of scheduling scheme (synchronization) is succinctly needed In many cases, sophisticated ones will be come up, takes developers lots of time and efforts to verify July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Content Introduction Background Verification Flow Verification Results Conclusion & Future Work July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Background Timing diagram of statements execution Concurrency in SpecC with ‘par’ semantic Sequentiality of each behavior in ‘par’ Synchronization semantics ‘notify/wait’ The use of Difference Decision Diagrams (DDDs) July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

Timing diagram of statements execution Tas<=T1s<T1e<=T2s<T2e<=Tae (sequentiality in a) Tbs<=T3s<T3e<=Tbe (sequentiality in b) Tas=Tbs, Tae=Tbe (concurrency between a and b) July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

Synchronization Example Ambiguous results of y causing from x = 10; /*st1*/ x = 20; /*st3*/ y = 20 (always) July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

Difference Decision Diagrams Symbolic representation of non-boolean with BDD seem to be less efficient DDDs represent different constraints,e.g. x-y≤c, x and y are integers, c is constant Represents graph for ¬(x−z<1)Λ(x−y≤0)Λ(y−z≤2) July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Content Introduction Background Verification Flow Verification Results Conclusion & Future Work July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Verification Flow Goal: check whether the given SpecC codes with ‘par’, ‘notify/wait’ are properly synchronized Use the idea of ‘Boolean Program’ [Ball and Rajamani] July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Boolean Program is a subset of the original program obtained by abstracting any conditionals in ‘if’ statements of the original program with a proportional variable, e.g. if(x > y) -> if(c0) All statements other than ‘notify/wait’, ‘if’ statements are abstracted away July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

From SpecC to Boolean SpecC The event manipulation statements are sustained The conditional or predicates of all ‘if-else’ statements are automatically replaced by dummy variables, e.g. if(x>0)->if(c0), if(x>4)->if(c1) Other statements are abstracted away by replacing with SKIP (“…”) July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

From SpecC to Boolean SpecC July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

From Boolean SpecC to C++ with DDD Header From Boolean SpecC to C++ with DDD Branching func. for DDD Declare timing variables Setup DDD graphs Verify July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Content Introduction Background Verification Flow Verification Results Conclusion & Future Work July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Verification Results SpecC->Boolean SpecC->C++ with DDD the process are automatic Using C++ compiler and DDD package to verify the synchronization of SpecC July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Verification Results SATISFIED UNSATISFIED DON’T KNOW In the case of UNSATISFIED, the counter-example is given to track the unsatisfied source July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Verification Result Let see an example There is no chance for the event e to be satisfied if the conditions (x<y) and (x>=y) must be true at the same time July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Content Introduction Background Verification Flow Verification Results Conclusion & Future Work July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Conclusion The verification of synchronization in SpecC description was proposed The idea of Boolean program is used to abstract away some details Collaborate with DDD, we can verify for synchronization in original SpecC Counter-example and verification of it is considered to be accomplished (on-going work) July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo

T. SAKUNKONCHAK and M. FUJITA University of Tokyo Future Work for users to interactively input constraints provide counter-example when the synchronization is not satisfied to be able to automatically generate ‘predicates’ refining predicates or add constraints on predicates July 23, 2002 T. SAKUNKONCHAK and M. FUJITA University of Tokyo