Coder Social home page Coder Social logo

cosa's Introduction

http://www.mattarei.eu/cristian/images/CoSA-logo_small.png

CoSA: CoreIR Symbolic Analyzer

...an SMT-based symbolic model checker for hardware design.

Overview

CoSA supports a variety of input formats:

  • CoreIR
  • BTOR2
  • Verilog
  • SystemVerilog
  • Symbolic Transition System (STS)
  • Explicit states Transition System (ETS)

and verifications:

  • Invariant Properties
  • Linear Temporal Logic (LTL) Properties
  • Proving capabilities
  • Equivalence Checking
  • Parametric (Invariant) Model Checking
  • Fault Analysis
  • Automated Lemma Extraction

Installation

  1. pip3 install cosa to install CoSA, and its dependencies i.e., PySMT, PyCoreIR, and PyVerilog
  2. pysmt-install --msat to install MathSAT5 solver (it provides interpolation support), or pysmt-install --cvc4 for CVC4 and pysmt-install --z3 for Z3
  3. pysmt-install --env to show the environment variables that need to be exported

Software requirements:

  • CoreIR needs to be installed in order to support CoreIR as input format
  • Icarus Verilog needs to be installed in order to support Verilog as input format
  • Verific binaries (i.e., verific) and Icarus Verilog need to be installed in order to support SystemVerilog as input format

Usage

To start playing with the tool, you can run:

  1. CoSA -h shows the helper with command options
  2. CoSA -i examples/counters/counters.json --simulate -k 7 generates a system execution with depth 7
  3. CoSA -i examples/counters/counters.json --safety -p "!(count0.a.out = 5_16)" -k 7 performs reachability model checking with property count0.a.out != 5 as a 16-bit Bitvector
  4. CoSA --problem examples/counter/problem.txt --prefix trace performs liveness (GF) and finally (F) checking on the counter.json model using the problem definition
  5. CoSA --problem examples/fold-constants/problem.txt performs equivalence checking using lemmas

For more information, please refer to the CoSA user manual.

Docker

  1. install Docker with your package manager e.g., sudo apt-get install docker
  2. build the Docker image: cd docker/ubuntu_1604 && docker build -t ubuntu-cosa .
  3. run the Docker image: docker run -i -t ubuntu-cosa /bin/bash

Development

  • pip3 install -e . to install CoSA from the source
  • nosetests tests to run the tests

License

CoSA is released under the modified BSD (3-clause BSD) License.

If you use CoSA in your work, please consider citing the following publication:

 @inproceedings{DBLP:conf/fmcad/MattareiMBDHH18,
   author    = {Cristian Mattarei and
               Makai Mann and
               Clark Barrett and
               Ross G. Daly and
               Dillon Huff and
               Pat Hanrahan},
  title     = {{CoSA: Integrated Verification for Agile Hardware Design}},
  booktitle = {Formal Methods in Computer-Aided Design, {FMCAD} 2018, Austin, Texas,
               USA, October 30 - November 2, 2018.},
  publisher = {{IEEE}},
  year      = {2018}
}

Build Status

https://travis-ci.org/cristian-mattarei/CoSA.svg?branch=master

cosa's People

Contributors

cristian-mattarei avatar makaimann avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.