Encoding RTL Constructs for MathSAT: a Preliminary Report

  • Authors:
  • Marco Bozzano;Roberto Bruttomesso;Alessandro Cimatti;Anders Franzén;Ziyad Hanna;Zurab Khasidashvili;Amit Palti;Roberto Sebastiani

  • Affiliations:
  • ITC-IRST,Via Sommarive 18, 38050 Povo, Trento, Italy;ITC-IRST,Via Sommarive 18, 38050 Povo, Trento, Italy;ITC-IRST,Via Sommarive 18, 38050 Povo, Trento, Italy;ITC-IRST,Via Sommarive 18, 38050 Povo, Trento, Italy and DIT, Università di Trento, Via Sommarive 14, 38050 Povo, Trento, Italy;Logic and Validation Technologies, Intel Architecture Group of Haifa, Israel;Logic and Validation Technologies, Intel Architecture Group of Haifa, Israel;Logic and Validation Technologies, Intel Architecture Group of Haifa, Israel;DIT, Università di Trento, Via Sommarive 14, 38050 Povo, Trento, Italy

  • Venue:
  • Electronic Notes in Theoretical Computer Science (ENTCS)
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Formal checking at Register-Transfer Level (RTL) is currently a fundamental step in the design of hardware circuits. Most tools for formal checking, however, work at the boolean level, which is not expressive enough to capture the abstract, high level (e.g., structural, word level) information of RTL designs. Tools for formal checking are thus confronted with problems which are ''flattened'' down to boolean level, so that a predominant part of their computational effort is wasted in performing useless boolean search on the bitwise encoding of integer data and arithmetical operations. In this paper we present a way of encoding RTL constructs into SMT formulas, that is, boolean combinations of boolean variables and quantifier-free constraints in Integer Linear Arithmetic. Such formulas can be handled by the MathSAT tool (and others) directly, without flattening to boolean level, so that to reduce drastically the computational effort. We propose a mixed boolean/ILP encoding, in which control variables are encoded as boolean variables, datapath variables as integer variables; control constructs are handled as boolean combination of control variables and predicates over datapath variables, and datapath constructs are encoded, as much as possible, as linear arithmetical constraints over datapath variables.