R-Verify: Deep Checking of Embedded Code James Ezick † Donald Nguyen † Richard Lethin † Rick Pancoast* (†) Reservoir Labs (*) Lockheed Martin The Eleventh.

Slides:



Advertisements
Similar presentations
Inference without the Engine!. What is EZ-Xpert 3.0? EZ-Xpert is a Rapid Application Development (RAD) environment for creating fast and accurate rule-based.
Advertisements

Course Outline Traditional Static Program Analysis Software Testing
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
Compilation 2011 Static Analysis Johnni Winther Michael I. Schwartzbach Aarhus University.
ECE 454 Computer Systems Programming Compiler and Optimization (I) Ding Yuan ECE Dept., University of Toronto
8. Code Generation. Generate executable code for a target machine that is a faithful representation of the semantics of the source code Depends not only.
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Assembly Code Verification Using Model Checking Hao XIAO Singapore University of Technology and Design.
The Software Model Checker BLAST by Dirk Beyer, Thomas A. Henzinger, Ranjit Jhala and Rupak Majumdar Presented by Yunho Kim Provable Software Lab, KAIST.
SSP Re-hosting System Development: CLBM Overview and Module Recognition SSP Team Department of ECE Stevens Institute of Technology Presented by Hongbing.
Static Analysis of Embedded C Code John Regehr University of Utah Joint work with Nathan Cooprider.
1/18 CS 693/793 Lecture 09 Special Topics in Domain Specific Languages CS 693/793-1C Spring 2004 Mo, We, Fr 10:10 – 11:00 CH 430.
Cpeg421-08S/final-review1 Course Review Tom St. John.
Behavioral Design Outline –Design Specification –Behavioral Design –Behavioral Specification –Hardware Description Languages –Behavioral Simulation –Behavioral.
Describing Syntax and Semantics
1 Formal Engineering of Reliable Software LASER 2004 school Tutorial, Lecture1 Natasha Sharygina Carnegie Mellon University.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Program Analysis Mooly Sagiv Tel Aviv University Sunday Scrieber 8 Monday Schrieber.
Formal verification Marco A. Peña Universitat Politècnica de Catalunya.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 4: SMT-based Bounded Model Checking of Concurrent Software.
By Ryan Mowry.  Graphical models of system  Entire system or just parts  Complex systems easier to understand  “Capture key requirements and demonstrate.
Data Structures and Programming.  John Edgar2.
Lecture 2 Phases of Compiler. Preprocessors, Compilers, Assemblers, and Linkers Preprocessor Compiler Assembler Linker Skeletal Source Program Source.
By D. Beyer et. al. Simon Fraser University (Spring 09) Presentation By: Pashootan Vaezipoor.
CSC2108 Lazy Abstraction on Software Model Checking Wai Sum Mong.
Design Space Exploration
Department of Computer Science A Static Program Analyzer to increase software reuse Ramakrishnan Venkitaraman and Gopal Gupta.
CSC 338: Compiler design and implementation
Quantum Programming Languages for Specification and Optimization Fred Chong UC Santa Barbara Ken Brown, Ravi Chugh, Margaret Martonosi, John Reppy and.
1 COMP 3438 – Part II-Lecture 1: Overview of Compiler Design Dr. Zili Shao Department of Computing The Hong Kong Polytechnic Univ.
Inferring Specifications to Detect Errors in Code Mana Taghdiri Presented by: Robert Seater MIT Computer Science & AI Lab.
System Software for Parallel Computing. Two System Software Components Hard to do the innovation Replacement for Tradition Optimizing Compilers Replacement.
Generative Programming. Automated Assembly Lines.
Distributed computing using Projective Geometry: Decoding of Error correcting codes Nachiket Gajare, Hrishikesh Sharma and Prof. Sachin Patkar IIT Bombay.
INRIA - LaBRICharles Consel Jan-06 1 Domain-Specific Software Engineering Charles Consel Phoenix Research Group LaBRI /INRIA-Futurs January 2006.
N from what language did C++ originate? n what’s input, output device? n what’s main memory, memory location, memory address? n what’s a program, data?
Compressed Abstract Syntax Trees as Mobile Code Christian H. Stork Vivek Haldar University of California, Irvine.
Compiler Principles Fall Compiler Principles Lecture 0: Local Optimizations Roman Manevich Ben-Gurion University.
MILAN: Technical Overview October 2, 2002 Akos Ledeczi MILAN Workshop Institute for Software Integrated.
Chapter 1 Introduction Study Goals: Master: the phases of a compiler Understand: what is a compiler Know: interpreter,compiler structure.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
 Programming - the process of creating computer programs.
UniTesK Test Suite Architecture Igor Bourdonov Alexander Kossatchev Victor Kuliamin Alexander Petrenko.
May08-21 Model-Based Software Development Kevin Korslund Daniel De Graaf Cory Kleinheksel Benjamin Miller Client – Rockwell Collins Faculty Advisor – Dr.
Using Symbolic PathFinder at NASA Corina Pãsãreanu Carnegie Mellon/NASA Ames.
The Spoofax Language Workbench Rules for Declarative specification of language and IDEs Lennart C. L. Kats and Eelco Visser Delft University of Technology.
Grigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois
Lecture1 Instructor: Amal Hussain ALshardy. Introduce students to the basics of writing software programs including variables, types, arrays, control.
1 Asstt. Prof Navjot Kaur Computer Dept PRESENTED BY.
CS223: Software Engineering Lecture 21: Unit Testing Metric.
Presented by : A best website designer company. Chapter 1 Introduction Prof Chung. 1.
CIS 540 Principles of Embedded Computation Spring Instructor: Rajeev Alur
The PLA Model: On the Combination of Product-Line Analyses 강태준.
Mechanisms for Requirements Driven Component Selection and Design Automation 최경석.
Presentation Title 2/4/2018 Software Verification using Predicate Abstraction and Iterative Refinement: Part Bug Catching: Automated Program Verification.
The architecture of the P416 compiler
Support for Program Analysis as a First-Class Design Constraint in Legion Michael Bauer 02/22/17.
Chapter 1 Introduction.
Introduction to Compiler Construction
Chapter 1 Introduction.
runtime verification Brief Overview Grigore Rosu
Formal Methods in Software Engineering 1
State your reasons or how to keep proofs while optimizing code
Many-core Software Development Platforms
Architectural-Level Synthesis
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
CISC 7120X Programming Languages and Compilers
Presentation transcript:

R-Verify: Deep Checking of Embedded Code James Ezick † Donald Nguyen † Richard Lethin † Rick Pancoast* (†) Reservoir Labs (*) Lockheed Martin The Eleventh Annual Workshop on High Performance Embedded Computing September 2007

2 HPEC 2007 R-Verify Design Usable Simplifies software development process –Find bugs earlier (debugging) –Static identification of bug patterns (regression testing) –Verify entire application with components (integration testing) Integrates with existing workflows Visual counter-example presentation Extensible to any domain Verification expertise not required –No new language to learn –Properties written in source language Powerful SAT based model checking technology –Modeling and deep semantic checking of complex systems –Aggressively optimized search Works with any programming style Scalable Uses reasonable time and space Applies abstraction and refinement R-Verify Supports: Pre- and post-condition checking including documented VSIPL rules Memory safety of embedded device drivers, interrupt handlers, and VSIPL “admitted” blocks Numerical precision of arithmetic pipelines with an emphasis on VSIPL pipeline implementations

3 HPEC 2007 R-Verify Deep Checking Cycle Execution Trace R-Stream IR Constraint Encoding Salt Alef Input Alef Solution Developer IDE Program Error Development/Verification Cycle

4 HPEC 2007 Built on Existing Reservoir Labs Technologies R-Stream 3.0 –Can plug into existing development environments such as Eclipse –Industry-standard C front end –Parses source code and generates intermediate representation (IR) –Robust toolkit of compiler algorithms Infer known loop bounds Unroll loops and inline entire function calls –Supports classical optimizations Constraint propagation Dead code elimination Partial subexpression elimination Many more –Integrated IR visualization and reflection tools to aid reporting –Rich library of useful analyses and representations Points-to analysis Reachability analysis Program dependency graphs Augmented post-dominator tree Salt 1.5 –Constraint intermediate language Easy to target –Optimizes constraint representations –Supports logical, pseudo-Boolean, fixed point arithmetic and set constraints –Extensible to other constraint logics Alef SAT Solver –Parallel satisfiability solver –Targets large problem sizes –Improved performance by exploiting data and cooperative search parallelism By basing R-Verify on mature, robust technologies we were able to: Manage Risk Reduce development time, cost Focus on applications and usability rather than technology