From High-Level Modeling Towards Efficient and Trustworthy Circuits

Behavior-Interaction-Priority (BIP) is a layered embedded system design and verification framework that provides separation of functionality, synchronization, and priority concerns to simplify system design and to establish correctness by construction. BIP framework comes with a runtime engine and a suite of verification tools that use D-Finder and NuSMV as model checkers.

In this paper, we provide a method and a supporting tool that take a BIP system and a set of invariants and compute a reduced sequential circuit with a system-specific scheduler and a designated output that is true when the invariants hold. Our method uses ABC, a sequential circuit synthesis and verification framework, to (1) generate an efficient circuit implementation of the system that can be readily translated into FPGA or ASIC implementations, and to (2) verify the system and debug it in case a counterexample is found. Moreover, we generate a concurrent C implementation of the circuit that can be directly used for runtime verification.

We evaluated our method with two benchmark systems, and our results show that, compared to existing techniques, our method is faster and scales to larger sizes.

Implementation

The implementation of the translation is available in the online bip-to-abc.jar file.

The interface to ABC is available online SA.

The traffic example is also available online traffic.bip.

Translation from BIP to ABC

java -jar bip-to-abc.jar [options] input.bip output.abc [property.txt]

where:

    input.bip    = input BIP file name (required)
    ouput.abc    = ABC file name to be generated (required)
    property.txt = Pre and Post condition written in two different lines (optional)

and options are:

    -?                prints usage to stdout; exits (optional)  
    -emulator <s>     Generate emulation code output.abc.cpp (optional)  
                          - guide.txt: indices of interactions assigned to selector (e.g., -emulator=guide.txt) 
                          - integer <= 0: infinite exection (e.g., -emulator=0)
                          - integer > 0: number of cycles to be executed (e.g., -emulator=30)
    -h                prints usage to stdout; exits (optional) 
    -help             displays verbose help information (optional)
    -initialize-vars  Initialize free variables (optional)
    -optimized        Generate one cycle-based code (optional)
    -version          displays command's version (optional)

Example

java -jar bip-to-abc.jar -optimized -initialize-vars -emulator=guide input.bip output.abc property.txt
java -jar bip-to-abc.jar -o -i -e=guide input.bip output.abc property.txt
java -jar bip-to-abc.jar -o -i -e=0 input.bip output.abc property.txt
java -jar bip-to-abc.jar -o -i -e=30 input.bip output.abc property.txt
java -jar bip-to-abc.jar -o -e=guide input.bip output.abc

Option tags are not case sensitive, and may be truncated as long as they remain unambiguous. Option tags must be separated from their corresponding values by whitespace, or by an equal sign. Boolean options (options that require no associated value) may be specified alone (=true), or as 'tag=value' where value is 'true' or 'false'.

 
biptoabc.txt · Last modified: 2020/07/13 12:31 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki