<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>LEC: Learning-Driven Data-path Equivalence Checking</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Jiang Long , Robert K. Brayton</institution>
          ,
          <addr-line>Michael Case</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>In the LEC system, we employ a learning-driven approach for solving combinational data-path equivalence checking problems. The data-path logic is specified using Boolean and word-level operators in VHDL/Verilog. The targeted application area are Cto-RTL equivalence checking problems found in an industrial setting. These are difficult because of the algebraic transformations done on the data-path logic for highly optimized implementations. Without high level knowledge, existing techniques in bit-level equivalence checking and QF BV SMT solving are unable to solve these problems effectively. It is crucial to reverse engineer such transformations to bring more similarity between the two sides of the logic. However, it is difficult to extract algebraic logic embedded in a cloud of Boolean and word-level arithmetic operators. To address this, LEC uses a compositional proof methodology and analysis beyond the bit and word level by incorporating algebraic reasoning through polynomial reconstruction. LEC's open architecture allows new solver techniques to be integrated progressively. It builds sub-model trees, recursively transformating the sub-problems to simplify and expose the actual bottleneck arithmetic logic. In addition to rewriting rules that normalize the arithmetic operators, LEC supports conditional rewriting, where the application of a rule is dependent on the existence of invariants in the design itself. LEC utilizes both functional and structural information of the data-path logic to recognize and reconstruct algebraic transformations. A case-study illustrates the steps used to extract the arithmetic embedded in a data-path design as a linear sum of signed integers, and shows the procedures that collaboratively led to a successful compositional proof.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        With the increasing popularity of high-level design
methodologies there is renewed interest in data-path equivalence
checking [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ][
        <xref ref-type="bibr" rid="ref13">13</xref>
        ][
        <xref ref-type="bibr" rid="ref18">18</xref>
        ][
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. In such an application, a design
prototype is first implemented and validated in C/C++, and
then used as the golden specification. A corresponding
Verilog/VHDL design is implemented either manually or
automatically through high-level synthesis tool [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ][
        <xref ref-type="bibr" rid="ref4">4</xref>
        ][
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. In
both cases, a miter logic for equivalence checking is formed
to prove the correctness of the generated RTL model by
comparing it against the original C/C++ implementation.
      </p>
      <p>
        The data-path logic targeted in this paper is specified
using Verilog/VHDL. The bit and word-level operators in
Verilog/VHDL have the same semantic expressiveness as SMT
QF BV theory[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Table I gives a one-to-one correspondence
between Verilog and QF BV unsigned operators. Signed
arithmetic operators are also supported. The complexity of such an
equivalence problem is NP-complete. However, on the extreme
end, the complexity becomes O(1) of the size of the network
if the two designs are structurally the same. An NP-complete
problem can be tackled by using SAT-solvers as a general
procedure. To counter the capacity limitation of SAT-solving,
it is crucial to reduce the complexity by identifying internal
match points and by conducting transformations to bring in
more structural similarity between the two sides of the miter
logic.
      </p>
      <p>Boolean
bit-wise
arithmetic
extract
concat
comparator
shifter</p>
      <p>Verilog operators
&amp;&amp;; k; !; ; mux
&amp;; j; ; ; mux
+; ; ; =; %
[]
fg
&lt;; &gt;; ;
;</p>
      <p>SMT QF BV operators</p>
      <p>and; or; not; xor; ite
bvand; bvor; bvnot; bvxor; bvite
bvadd; bvsub; bvmul; bvdiv; bvmod
extract
concat
bvugt; bvult; bvuge; bvule</p>
      <p>bvshl; bvshr</p>
      <p>The differences between the two data-path logics under
equivalence checking are introduced by various arithmetic
transformations for timing, area and power optimizations.
These optimizations are domain specific and can be very
specialized towards a particular data-path design and underlying
technology. They have the following characteristics:
The two sides of the miter logic are architecturally
different and have no internal match points.</p>
      <p>Many expensive operators such as adders and multipliers
are converted to cheaper but more complex
implementations and the order of computations are changed. It is
not a scalable solution to rely on SAT solving on the
bit-blasted model.</p>
      <p>
        The parts of the transformed portion are embedded in
a cloud of bit and word level operators. Algebraic
extraction [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ][
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] of arithmetic logic based on structural
patterns is generally too restrictive to handle real-world
post-optimization data-path logic.
      </p>
      <p>Word-level rewriting uses local transformation. Without
high-level information, local rewriting is not able to make
the two sides of the miter logic structurally more similar.</p>
      <p>Lacking high-level knowledge of the data-path logic, the
equivalence problems can be very difficult for gate-level
equivalence checking and general QF BV SMT solvers.
Strategically, LEC views the bottleneck of such problems as having
been introduced by high-level optimizations and employs a
collaborative approach to isolate, recognize and reconstruct
the high-level transformations to simplify the miter model by
bringing in more structural similarities.</p>
      <sec id="sec-1-1">
        <title>B. Contributions</title>
        <p>The LEC system incorporates compositional proof
strategies, uses rewriting to normalize arithmetic operators, and
conducts analysis beyond bit and word level. The collaborating
procedures help to expose the actual bottleneck in a proof of
equivalence. The novel aspects of this system are:
1) It uses global algebraic reasoning through polynomial
reconstruction. In the case-study, it uses the functional
information of the design to reverse engineer the
arithmetic expression as a linear sum and also uses a
structural skeleton of the original data-path to achieve the
equivalence proof.
2) It supports conditional rewriting and proves required
invariants as pre-conditions.
3) It uses recursive transformations that target making both
sides of the miter logic structurally more similar and
hence more amenable to bit-level SAT sweeping.
4) It has an open architecture, allowing new solver
techniques to be integrated progressively.</p>
        <p>Through a case study, we demonstrate the steps that were
used to reconstruct the arithmetic embedded in a data-path
design as a linear sum of signed integers, as well as all the
procedures that compositionally led to a successful equivalence
proof. The experimental results demonstrate the effectiveness
of these collaborating procedures.</p>
      </sec>
      <sec id="sec-1-2">
        <title>C. Overview</title>
        <p>The overall tool flow is described in Section II. Learning
techniques and system integration are presented in Section III
and IV. A case study is presented in Section V. Experimental
results is presented in Section VI followed by a comparison
with related work and conclusion.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>II. TOOL FLOW</title>
      <p>LEC takes Verilog/VHDL as the input language for the
datapath logic under comparison. Internally, a miter network, as
in Figure 2(a), is constructed comparing combinational logic
functions F and G. Figure 1 illustrates the overall tool flow.</p>
      <p>
        First, the Verific RTL parser front-end[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] is used to compile
input RTL into the Verific Netlist Database. VeriABC[
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]
processes the Verific netlist, flattens the hierarchy and produces
an intermediate DAG representation in static single assignment
(SSA) form, consisting of Boolean and word-level operators
as shown in Table I. Except for the hierarchical information,
the SSA is a close-to-verbatim representation of the original
RTL description. From SSA, a bit-blasting procedure generates
a corresponding bit-level network as an AIG (And-inverter
graph). Word-level simulation models can be created at the
SSA level. ABC[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] equivalence checking solvers are integrated
as external solvers.
(a)miter network
      </p>
      <p>(b)structurally hashed</p>
      <p>An SSA netlist is a DAG of bit and word-level operators
annotated with bit-width and sign information. In the tool flow,
both Verific and VeriABC perform simple structural hashing
at the SSA level, merging common sub-expressions. After
merging, the miter logic is divided into three colored regions
using cone of influence (COI) relations, as in Figure 2 (b).</p>
      <p>Red: if the node is in the COI of F only</p>
      <p>Original
miter
Word−level
Simulator
miter
F=G
input:̄x
new miter target
Verific Parser Frontend</p>
      <p>VeriABC
SSA Network
Bit−level</p>
      <p>AIG
ABC
solvers
SAT</p>
      <p>UNSAT</p>
      <p>Learning−based
Transformations</p>
      <p>Transformed</p>
      <p>RTL</p>
      <p>
        LEC tries to solve the miter directly using random
simulation on the word-level simulator or by ABC[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]’s equivalence
checking procedure dcec, which is a re-implementation of
iprove[
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. If unresolved, LEC applies transformations to the
SSA and produces sub-models in Verilog miter format from
which LEC can be recursively applied. The overall system
integration is described in Section IV.
      </p>
    </sec>
    <sec id="sec-3">
      <title>III. LEARNING TECHNIQUES</title>
      <p>In this section, we present the techniques implemented in
LEC. Even though some are simple and intuitive, they are
powerful when integrated together as demonstrated in the
experimental results. All techniques are essential bdecause
LEC may not achieve a final proof if any one is omitted.
Their interactions are illustrated in the case-study in Section
V.</p>
      <p>F(x̄)</p>
      <p>G(̄x)</p>
      <p>F(x̄)</p>
      <p>G(̄x)</p>
      <p>F(x̄)</p>
      <p>G(̄x)
red
blue
red</p>
      <p>blue
miter
F=G
purple
input :̄x
miter
F=G
kept
abstract input x̄'
redundant
input:x̄
(c)abstraction</p>
    </sec>
    <sec id="sec-4">
      <title>Blue: if the node is in the COI of G only</title>
      <p>Purple: the node is in the COI of both sides of the miter
i.e. common logic
The purple region is the portion of the miter logic that
has been proved equivalent already, while the red and blue
regions are the unresolved ones. LEC makes progress by
reducing the red/blue regions and increasing the purple region.
The common logic constrains the logic for the red and blue
regions, which may be abstracted (see Section III-E) to reduce
redundancy and possibly expose the real bottleneck in a proof.</p>
      <sec id="sec-4-1">
        <title>B. Simulation model</title>
        <p>
          Two word-level simulators are generated from the SSA
network. One is a native interpreted model. The other uses
the open-source Verilator[
          <xref ref-type="bibr" rid="ref29">29</xref>
          ] for compiled simulation. From
the SSA network, LEC automatically generates C++ code for
pseudo-random input drivers and for monitoring design
behavior. Verilator compiles the Verilog miter logic, links in the
generated C++ code and produces a simulator as a standalone
executable. Efficient and effective simulation is crucial in our
current flow in capturing potential constants and potential
internal equivalent points at the SSA level. Simulation is also
used to reduce common logic in the abstraction computation
procedure.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>C. Bit-level model</title>
        <p>
          As shown in Figure 1, an AIG is created from the SSA
network by bit-blasting. LEC calls ABC[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]’s SAT sweeping
procedure dcec to perform direct solving at the bit level. Using
the AIG model, the native SAT solver embedded in LEC can
be used to obtain a formal proof for a particular query. Typical
queries are for extracting constant nodes, proving suspected
equivalent pairs of points or conducting particular learning for
rewriting. Book-keeping information between the SSA nodes
and the AIG nodes allows queries to be constructed at the
word-level and verified at the bit-level. The result is then used
to simplify the SSA network.
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>D. Constants and Potential Equivalent Points (PEPs)</title>
        <p>At the word-level, candidates for constants and PEPs are
identified through simulation and SAT queries are posed. Each
such SAT query is constructed and checked at the bit-level.
SAT-solving is configured at a low-effort level (run for a few
seconds) for these types of queries. Proven constants and PEPs
are used immediately to simplify the SSA network, leading
to a new sub-model of less complexity. LEC then continues
to process the sub-model. In the presence of unproven PEPs,
LEC can choose one as the next miter target, normally the
smallest in terms of the number of nodes in its COI. The proof
progresses as constants and PEPs are identified and used to
simplify the miter model.</p>
      </sec>
      <sec id="sec-4-4">
        <title>E. Abstraction</title>
        <p>As illustrated in Figure 2 (c), in computing an abstraction,
LEC computes a cut in the purple region (common logic), and
removes the logic between the cut and the inputs. An abstract
model is formed by replacing the cut signals with free inputs
x0. If this abstracted miter is UNSAT, then the original miter
is UNSAT. In our current implementation, LEC traverses the
SSA network in topological order from the inputs. As each
node is tentatively replaced with new PIs, simulation is used
to validate the replacement. If successful, the node is omitted
and replaced with the new PIs and the next node is processed
similarly.</p>
        <p>A successful abstraction step removes irrelevant logic and
exposes a smaller unresolved region of the miter logic,
allowing LEC to continue using other procedures. In addition,
as seen from experimental results, the reduction of common
logic can reduce significantly the amount of complexity for
downstream SAT-solving, e.g. when common multipliers being
removed from the miter logic. An unsuccessful abstraction
when the abstract miter becomes SAT, indicates the existence
of a rare event not being captured during random simulations.
Often, this gives hints for selecting case-splitting candidates.</p>
      </sec>
      <sec id="sec-4-5">
        <title>F. Rewriting</title>
        <p>
          Similar to [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], word-level rewriting transforms an SSA
network into a structurally different but functionally equivalent
one. Through rewriting, certain equivalence checking problems
can become much simpler. In our experience, a multiplier is
often a source of difficulty in data-path equivalence checking.
        </p>
        <p>If two multipliers from opposite sides of the miter are matched
exactly, LEC can simplify the miter through structural hashing
and treat them as common logic. This is most effective when
combined with the abstraction procedure as the common
multiplier can now be totally removed.</p>
        <p>In LEC, a few rules are hard-coded through pattern
matching applied to the SSA network. The goal is to process
multiplications so that they can be matched exactly. This
rewriting is implementation specific; for illustration purposes,
we list a few rewriting rules in Table II using Verilog notation
and the semantics of the operators.</p>
        <p>The first rule is the normalization of multiplier operands. If
a multiplier uses a partial product generator and a compressor
tree, switching the operands of the multiplication becomes a
very hard SAT problem because at the bit level the
implementation is not symmetrical. It is almost imperative to apply
this rule whenever possible. The second and third rules use
the distributive laws of multiplication and multiplexing. Rules
4 and 5 remove the shift operator when it is used with
extract and concat because it is hard for multiplication to
be restructured through the operator. Rule 6 distributes
multiplication through the concat of two bit vectors using
+. It uses the fact that the concatenation fa; b[n 1 : 0]g is
equivalent to a 2n + b[n 1 : 0].</p>
        <p>The following is a more complex rule that distributes + over
the extract operator. The right hand side is corrected with a
third term, which is the carry bit from adding the lower n bits
of a and b.</p>
        <p>(a + b)[m : n] =
a[m : n] + b[m : n] + (a[n
1 : 0])[n]
(1)</p>
        <p>After implemented to trace back from the sel port of a mux node
mux(condb; d0a c; d1 c) through its Boolean fanins and choose the candidates that have
mux(cond; d0[m : n]; d1[m : n]) the highest controllability.</p>
        <p>f (m-n)’b0, a[m:n] g Another advantage of case-splitting is that the co-factored
a[m : n] sub-models contain new candidates for constants and PEPs,
a c n + b[n 1 : 0] c which lead to other down-stream transformations not possible
before. Case-splitting also reduces the amount of Boolean
logic in the SSA network and exposes the data-path logic to
high-level learning such as polynomial construction.
Repeatedly applying the above rules, LEC transforms the SSA
network and keeps only the and + operators, enhancing
the possibility of multipliers to be matched. Note that the
above rule (1) and Rule 4-6 in Table II are correct for
unsigned operators. Currently, for signed operators, due to
sign extension and the two’s complement representation of the
operands, we have not implemented a good set of rewriting
rules.</p>
        <p>1) Conditional rewriting: The following equation
(a
c) b = (a b)
c
(2)
reduces the bit-width of a multiplier on the left hand side to
a smaller one on the right. It is correct if a, b, c are integers
but incorrect in Verilog semantics, which uses modulo integer
arithmetic. However, if the following is true within the miter
model in modulo integer semantics
( (a
c)
c) == a
(3)
then equation (2) is valid. In such a situation, LEC identifies
the pattern on the left hand side of (2) in the SSA network
and executes a SAT query concerning (3) using the AIG model
through bit-level solvers. The transformation to the left hand
side of (2) is carried out only if the query is proven to be an
invariant. Such a transformation may produce an exact match
of a b afterwards, which can be crucial for achieving the final
proof.</p>
      </sec>
      <sec id="sec-4-6">
        <title>G. Case-split</title>
        <p>Case-splitting on a binary signal, cofactors the original
model into two sub-models. The miter is proven if both
submodels are proven, or falsified if any sub-model is falsified.
Although exponential in nature, if many signals are chosen,
casesplitting can simplify the underlying bit-level SAT solving
significantly. For example, it is difficult to prove the following
miter structure directly through bit-blasting and SAT solving
at the AIG level
(x + y) (x + y) == x
x + 2 x y + y y
(4)
where x is a 32-bit integer and y a single binary signal.
However, it can be proven easily if case-splitting is done on
y = 0 and y = 1. After constant propagation, the bit-level
solver can prove both sub-models easily.</p>
        <p>The current case-splitting mechanism supports cofactoring
on an input bit or input bit-vector. In verifying the test cases
experienced so far, the case splits are conducted on a bit, a
bit-vector equal to zero or not, or on the lsb or msb of a
bit-vector equals to zero or not. A heuristic procedure can be</p>
      </sec>
      <sec id="sec-4-7">
        <title>H. Polynomial construction</title>
        <p>Reasoning at the word-level, rewriting rules are based on
the arithmetic properties of the corresponding operators such
as the commutative law of integer multiplication. However,
rewriting applies only local transformations and does not have
a global view. In situations when the miter logic is constructed
from arithmetic optimization at the polynomial level, local
rewriting is not able to bring similarity into the miter for
further simplification. In such a situation, LEC tries to
reconstruct the polynomial of the whole miter model to establish
equivalence through arithmetic or algebraic equivalences and
then use high level transformations to prove the equivalence
of the original miter.</p>
        <p>As a generic procedure, LEC follows four steps to prove a
miter network F (x) = G(x) where F and G are the top level
signals being compared, and x is the vector of input variables
(bit-vectors):
1) Conjecture (possibly by design knowledge) about the
algebraic domain of the polynomial, e.g. signed vs.
unsigned integer, modulo integer arithmetic, the order
of the polynomial etc. These conjectures set up the
framework and semantics for polynomial reconstruction
as illustrated in the case-study of Section V.
2) Determine a polynomial f and create a logic network
F 0 such that the following can be proved formally.
How f is constructed is domain and test-case dependent.
In the case-study of Section V, we use simulation
patterns to probe for the coefficients of a linear function.
3) Determine a polynomial g and create a logic network
G0 such that the following can be proved formally.</p>
        <sec id="sec-4-7-1">
          <title>F 0 implements f miter F 0 = F</title>
        </sec>
        <sec id="sec-4-7-2">
          <title>G0 implements g miter G0 = G f = g</title>
          <p>4) Establish the following equivalence formally at the
algebraic level.</p>
          <p>The combination of Items 2, 3, and 4 establishes the
equivalence proof of the original miter model F = G. In constructing
F 0 and G0, we try to make them as structurally similar to F
and G as possible. Details are given in Section V.
(5)
(6)
(7)
(8)
(9)</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>IV. SYSTEM INTEGRATION</title>
      <p>The above learning techniques are integrated in LEC as a set
of logically independent procedures. Each procedure produces
one or more sub-models, illustrated as a tree in Figure 3.</p>
      <p>The root node is the current targeted Verilog miter model.</p>
      <p>It has eight children. The simulator and AIG models are
the ones described in Figure 1. The simplif ied sub-model is
generated by constant propagation and merging proven PEPs.</p>
      <p>The abstraction and rewrite sub-models are created by the
abstraction and rewrite procedures in the previous section.</p>
      <p>The case-split sub-model consists of a set of sub-models,
corresponding to the cofactoring variables selected. In the
current implementation, the user needs to input the set of
signals to case-split on; eventually they will be selected by
heuristics. The linear-construction node has two sub-models
which will be explained in detail in Section V. When PEPs
are identified through simulation, a P EP node is create with
the set of unproven-PEPs as sub-models.</p>
      <p>Verilog Miter Model
simulator
AIG
simplified
abstraction
rewrite
case-split
linear-construction
PEP
pep0
pep1
...
pepm
case0
case1
...
casen
caseF
caseG</p>
      <p>LEC
Fig. 3. Branching sub-model tree</p>
      <p>Two nodes in the sub-model tree are terminal. One is the
simulator model which can falsify the miter through random
simulation. The other is the AIG model where ABC’s bit-level
dcec procedure is applied. The rest of the leaf models (in bold
font) are generated as Verilog miter models, which have the
same format as the root node. LEC procedures can be applied
recursively to these leaf nodes to extend the sub-model trees to
simpler ones. The LEC proof process progresses by expanding
the sub-model tree. A sub-model is resolved as SAT or UNSAT
from its sub-models’ proof results.</p>
      <p>Since there are no logical dependencies between sibling
sub-models, any branch can be chosen to continue the proof
process. Sibling sub-models can be forked in parallel from
a parent process. A node in the sub-model tree determines
its proof result from its children. Table III gives the possible
return values from the first level sub-models. SIMPLIFY is
returned by a P EP node to its parent model when at least
one of its sub-models, pepi, is proven UNSAT, notifying the
parent node to simplify further with the newly proved pepi.</p>
      <p>Depending on the logical relationships between a parent and
its immediate sub-models, a node is either disjunctive or
conjunctive in semantics. In Figure 3, a Verilog miter model node
Sub-model
simulator</p>
      <p>AIG
simplified
abstraction
rewrite
case-split
linear construction</p>
      <p>PEP</p>
      <p>Return</p>
      <p>SAT
SAT/UNSAT
SAT/UNSAT</p>
      <p>UNSAT
SAT/UNSAT
SAT/UNSAT
SAT/UNSAT</p>
      <p>SIMPLIFY
is disjunctive, which includes the root and all the leaf nodes
in bold font. The case-split and linear construction nodes
are conjunctive; a P EP node is disjunctive. The semantics,
shown in the following tables, are used to resolve the proof
result of the parent model from its immediate sub-models. To
complete the calculus, we introduced two values: CON and
BOT, where CON stands for an internal conflict indicating a
potential LEC software bug and BOT is the bottom of the
value lattice and acts like an uninitialized value.</p>
      <p>Tables IV and V are the truth tables for the disjunction and
conjunction semantics of the return values, in which UNS,
UNK, SMP stand for UNSAT, UNKNOWN, and SIMPLIFY.</p>
      <p>Assuming a bug free situation, at a disjunctive node, if either
SAT or UNSAT is returned from a sub-model, this is the final
proof result for the parent. In conjunction, the parent must wait
until all sub-models are resolved as UNSAT before deciding
that its result is UNSAT, while any SAT sub-model implies
the current model is SAT. A P EP node returns SIMPLIFY
to its parent if one of its sub-models, say pepi, is proven
UNSAT. In this case, the parent model can apply another round
of simplification to obtain a new simplif ied sub-model by
merging the node pair in the just-proved pepi. The proof log in
Figure VI is a sample sub-model tree where only the branches
that contributed to the final proof are shown. Indentation
indicates the parent-child relationship. Recursively, the proof
result of the top level target is evaluated as UNSAT.</p>
      <p>Using this sub-model tree infrastructure, any new
procedures discovered in the future can be plugged into the system
easily. Also, the system is fully parallelizable in that siblings
can be executed at the same time. The proof process can be
retrieved from the expanded sub-model tree.</p>
      <p>V. CASE STUDY
three numbers on the right are the node counts in the red,
blue and purple regions (common logic) of the SSA network
as distinguished in Figure 2(a). Only those sub-models that
contributed to the final proof are shown in the figure. Others
are ignored. As seen in Figure 5, the case-split procedure is</p>
      <p>
        The design in this case-study is an industrial example taken applied twice, at lines 2 and 9. Both models have a
singlefrom the image processing domain. We verify specification bit input port, which was selected for cofactoring. ABC[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
= implementation where the “specification” is a manually- immediately proved the first cofactored case, case 0 (3 and
specified high-level description of the design. “Implemen- 10) , using the AIG model at 4 and 11. The time-out for the
tation” is a machine-generated and highly optimized RTL dcec run was set to two seconds. Abstraction was applied at 8,
implementation of the same design using[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. The miter logic significantly reducing the common logic from 675 to 29 SSA
is obtained through SLEC[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Therefore, the miter problem nodes, and effectively removing all the comparator logic. We
is verifying that the high-level synthesis (HLS) tool did not tried abstraction on the original model without the case-split
modify the design behavior. procedure and it failed to produce any result. The case-split at
      </p>
      <p>This miter is sequential in nature, but here we examine a 2 removed enough Boolean logic and eliminated some corner
bounded model checking (BMC) problem which checks the cases such that the abstraction procedure was able to produce
correctness of the implementation at cycle N. This renders the an abstract model successfully.
problem combinational. This is industrially relevant because Model 15 is the smallest unproved PEP from model 13.
the sequential problem is too hard to solve in general, and It is proved using the linear construction procedure at 16,
even the BMC problem at cycle N becomes too difficult for which we shall describe in detail in Section V-A. Model
industrial tools. 21 is the simplified model of model 13 after merging the</p>
      <p>
        The original design (specification) consists of 150 lines just-proved pep0. After simplification, most of the logic in
of C++. It went through the Calypto frontend[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and was model 21 became common logic through structural hashing,
synthesized into a word-level netlist in Verilog. The generated leaving only 10 nodes in each of the blue and red regions.
miter model has 1090 lines of structural Verilog code with 36 Model 21 was proved quickly by ABC which concludes the
input ports: 29 of which are 7 bits wide, 2 are 9 bits, 4 are proof of the original miter. In this case, the linear-construction
28 bits and one is a single-bit wire. The miter is comparing procedure was crucial in attaining the proof. However, the
two 28-bit values. We do not have knowledge about what the case-split, simplification, abstraction, and PEP models also are
design does except through structural statistics: no multipliers, very important because they collaborate in removing Boolean,
many adders, subtractors, comparators, shifters etc., together mux and comparator logic etc, but keeping only the part of the
with Boolean logic. From a schematic produced from the original miter logic which constitutes a linear function. Only
Verilog, there seems to be a sorting network implemented at this point, can a proof by the linear construction procedure
using comparators, but we can not tell anything further. succeed.
      </p>
      <p>Figure 5 illustrates the compositional proof produced by the
LEC system by showing the sub-model tree created during A. Linear construction
the proof process. Indentations indicate parent and sub-model For model 15 in Figure 5, the SSA network contains many
relations and are listed in the order they were created. The +, , and operators along with extract and concat
operators, but contains no Boolean operators or muxes. The input input variables to compute the coefficients:
ports consist of twenty-five 7-bit or 12-bit wide ports. The
miter is comparing two 15-bit wide output ports. At this point, b = F (0; 0; :::; 0)
simplification and abstraction can not simplify the model a0 = F (1; 0; :::; 0) b
further. Also, there are no good candidates for case-splitting. a1 = F (0; 1; :::; 0) b
The local rewriting rules can not be applied effectively without :::
ohfavtihneg msoimteer glologbica.l Hinifgohrm-leavtieolni ntofohremlpatcioonnvmerugset tbhee tewxotrascidteeds an 1 = F (0; 0; :::; 1) b
and applied to prove this miter model.</p>
      <p>After the linear construction procedure through LEC, the
miter logic is found to be implementing the following linear
sum in the signed integer domain using two’s complement
representation:
Another round of random simulation on both the logic and
the polynomial can be done to increase the likelihood of the
conjecture. The same is repeated for G(x) to obtain g(x).</p>
      <p>In integer arithmetic, f is equal to g if and only if the
coefficients match exactly for each term:
16 x0 + 2 x1 + 2 x2 + 2 x3 + 2 x4 + 2 x5
One side of the miter implements the above sum as a plain
linear adder chain (Figure 6(a)), the other side is a highly
optimized implementation using a balanced binary tree structure
(Figure 6(b)) and optimization tricks, which we don’t fully
understand. This is a hard problem for bit-level engines because
f = g &lt;=&gt; 8 i ai = a0i
and b = b0</p>
      <p>
        (12)
So checking of f = g is trivial in this case. In other algebraic
domains, domain specific reasoning may have to be applied
to derive algebraic equivalence e.g. in [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
      </p>
      <p>3) Synthesizing implementations F 0=G0 for f (f =g),
structurally similar to F=G: We want to find a Verilog
implementation F 0(x) of f such that
1) F 0 implements f
2) F 0 is structurally similar to F
To do this, all nodes in the SSA network with arithmetic
operators +, are marked, and edges connecting single bits
are removed. A reduced graph is then created from the marked
nodes in the remaining graph maintaining the input/output
relations between marked nodes. This graph is a skeleton of
the implementation structure of F . For each of its nodes, we
annotate it with a conjectured linear sum computed in the
same way as in the above steps. The root node F is annotated
with f and internal nodes annotated with linear sums fs,
ft, etc. For illustration purposes, Figure 7(a) shows such an
annotated reduced graph for node w. For an arbitrary node w</p>
      <p>w=f w(̄x)
s=f s(̄x)
+
u=...</p>
      <p>+
+
+</p>
      <p>v=...
+ t=f t(̄x)
x
̄
(a)annotated reduced graph
Fig. 7. Annotated reduced graph</p>
      <p>u=...
w=cs⋅s+ct⋅t + f st(̄x)</p>
      <p>+
s=... t=...</p>
      <p>+
+
+</p>
      <p>+ v=...
x
̄
(b)substituted annotation
in the reduced graph with inputs from nodes s and t, from the
annotation we have the following:
s = fs(x)
t = ft(x)
w = fw(x)
(10)
(11)</p>
      <p>We would like to substitute fw with variable s and t, such
that w is a function of s and t in order to follow the structure
of the skeleton reduced graph. Because all the functions are
linear sums, we can compute, using algebraic division, two
constants cs and ct such that the following holds:
w = cs s + ct t + fst(x)
...</p>
      <p>(a)linear adder chain
Fig. 6. Addition implementation
there are no internal match points to utilize. Therefore, LEC
resorts to trying a high-level method to establish equivalence
at the polynomial level. The following are the detailed steps
for this specific case.</p>
      <p>1) The conjecture: Assume the miter logic is F (x) = G(x)
as in Figure 2(a). LEC conjectures the following for the
arithmetic domain.</p>
      <p>Signed integer arithmetic. The numbers are in 2’s
complement representation.</p>
      <p>Assume F (x) and G(x) are implementing the linear sums
f and g of the forms
f (x) =
g(x) =</p>
      <p>X ai xi + b</p>
      <p>X a0i xi + b0
2) Determining the coefficients of f , g and proving f = g
algebraically: Given the data-path logic F (x) and the linear
sum formula (10), it takes n + 1 simulation patterns on the n
cs is the quotient of fw=fs and ct = (fw cs fs)=ft, while
fst is the remainder of the previous division. The substitution
is conducted in one topological traversal from the inputs to the
miter output. After substitution, the annotated reduced graph
is essentially a multi-level implementation of the above linear
sum. Because the linear sum annotated at each node in the
reduced graph is only a conjecture, it may not be exactly the
same function as in the original miter logic. However, in
reimplementing f using this structure, certain similarities are
still captured through the construction process.</p>
      <p>This multi-level circuit is implemented by traversing the
substituted reduced graph, and creating a corresponding
Verilog file for F 0. It is generated by allocating a bit-vector at
each internal node with its bit-width equivalent to output port
of F . The same can be done for G to obtain G0. The reason
why LEC goes through so much trouble to obtain separate
RTL implementations for F 0 and G0 (even though they are
both implementing f ), is that we need to prove F = F 0 and
G = G0 separately next. Without the structural similarities
created through this procedure, proving equivalence with an
arbitrary F 0 and G0 would be as difficult as proving the
original F = G. Generally, only with these extra similarities
injected, can the miter model be simplified enough to allow
SAT sweeping to succeed for F = F 0 and G = G0.</p>
      <p>4) Proving F = F 0 and G = G0 : We construct two miter
models F = F 0 and G = G0 as caseF and caseG in Figure
3, and apply LEC separately to each. By construction, each
miter should be simpler than the original F = G because of
the increased structural similarity between the two sides of the
miter. Another round of LEC might reduce this miter logic, if
not prove it directly through bit-level solvers. In the present
case, F = F 0 was proven instantly because F is a simple
linear adder chain, and so is F 0. Proving G = G0 takes more
time using ABCs dcec because G is a highly optimized
implementation of f and the multi-level implementation from the
annotated reduced graph only captures part of the similarity.</p>
      <p>But, the injected similarity was sufficient enough to reduce the
complexity to be within dcec’s capacity.</p>
      <p>5) Proving that F 0=G0 implements f =g : To complete the
proof, we still have the proof obligation that F 0 and G0
implement f and g respectively. By construction from the
reduced graph, the generated Verilog is a verbatim translation
from the multi-level form of f . However, we need to bridge
the gap between Verilog’s bit-vector arithmetic vs. the integer
arithmetic of the linear sum. To do so, we created SVA
assertions to check that every Verilog statement captures the
integer value in full without losing precision due to underflows
or overflows.</p>
      <p>c[n : 0] =a[n
assert (a[n : 0] == (c[n : 0] b[m : 0])[n : 0])
c[m : 0] =fa[n : 0]g[m : 0];
assert a[n : 0] == f(n
m)
fc[m</p>
      <p>1]g; c[m : 0]g
The first two sets of assertions ensure there is no overflow of
signed integer add and no non-zero remainder of division.</p>
      <p>
        The third one ensures that extraction does not change the
value in two’s complement representation. The SVA checkers
are formally verified separately using the VeriABC[
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] flow,
which in turn uses ABCs model checker.
      </p>
      <p>From the above procedures, we established the following:</p>
      <p>f (x) = g(x)</p>
      <sec id="sec-5-1">
        <title>F 0(x) implements f (x)</title>
      </sec>
      <sec id="sec-5-2">
        <title>G0(x) implements g(x) F = F 0 G = G0</title>
        <p>(13)
(14)
(15)
(16)
(17)
Altogether they establish the proof for F = G.</p>
        <p>
          Combining the above procedures into a single run, LEC took
about 10 minutes on an i7 processor to complete the full proof.
Roughly 80% of the time is spent on compiling and running
random simulation, the rest are used for SAT solving. In table
VI, we also compare this run-time against Boolector[
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], z3
[
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] and ABC’ iprove [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] solver, all run on the same server.
It is clear that LEC expedites the proof significantly by using
the knowledge of the linear sum formulation inside the miter
logic.
        </p>
        <p>Miter
model 1</p>
        <p>Boolector
time-out</p>
        <p>Z3
time-out
iprove
time-out</p>
        <p>LEC
10min
In summary, polynomial reconstruction was a key
technique to prove the underlying miter problem. The
casestudy illustrates the major steps and the proof obligations
encountered during the process. The actual techniques used
for different domains of the underlying arithmetic would
differ. Each algebraic domain would require special purpose
heuristics and automated proof procedures to guarantee the
correctness of the reconstructions and transformations used
in the method. The goal of the linear construction procedure
was to inject increased structural similarity by using global
algebraic transformations.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>VI. EXPERIMENTAL RESULTS</title>
      <p>
        Table VI shows the experimental results comparing
Boolector[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], Z3[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] and iprove[
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] using a 24-hour
timeout limit on an 2.6Ghz Intel Xeon processor. These models
are generated directly using SLEC[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] for checking C-to-RTL
equivalence or extracted as a sub-target from PEPs. The first
column is the miter design name. The second column is the
number of lines of Verilog for the miter model specification.
Run-time or time-out results are reported for each solver in
columns 3 to 6. Although the miter models are not big in terms
of lines of Verilog, they are quite challenging for Boolector,
Z3 and iprove. The run-time of LEC is the total CPU time
including Verilog compilation. It was expected that iprove
would not prove any of them because it works on the
bitblasted model without any high-level information that the other
solvers have.
where aH , aL, bH , bL are the 32-bit slices of the original
64-bit bit-vectors. Both Boolector and Z3 are able to prove it.
LEC proves it by first utilizing rewriting rules to transform
the 64x64 multiplier into four 32x32 multipliers, matching
the other four in the RHS of the miter. As they are matched
exactly, they become common logic in the miter model. LEC
then produces an abstraction and obtains a reduced model
with all the multipliers removed: the outputs of the multipliers
become free inputs in the abstract model. The abstract model
is then proven instantly by ABC’s dcec on the AIG model.
      </p>
      <p>The miter d1, extracted from a PEP sub-model, is a
demonstration of rewrite rule 6 in Table II using 32-bit multiplication.
As both Boolector and Z3 fail to prove equivalence within
the time-limit, they likely do not have this rewriting rule
implemented.</p>
      <p>To prove d2, LEC conducts conditional rewriting using rule
(2) by first statically proving an invariant in the form of (3).
After the transformation, the multipliers are matched exactly
on both sides of the miter and removed in the subsequent
abstract model. The final miter model is proved instantly by
ABC on the bit level AIG.</p>
      <p>The miter model d3 has part of its logic similar to
mul 64 64 embedded inside. LEC proves d3 by first applying
rewriting rules repeatedly until no more rewriting is possible.
Then, LEC computes a reduced model through abstraction. In
the reduced model, LEC conducts a case-split on a one-bit
input. The case-0 AIG model is proven instantly, while case-1
is proven in about 10 minutes by ABC.</p>
      <p>The miter d4 is proven by first conducting a case-split of two
bit-vector inputs: cofactoring on whether the bit-vector equals
zero or not. Three of the four cofactored cases are proven
instantly. The one unresolved goes through a round of
simplification and abstraction. On the then obtained sub-model, three
one-bit inputs are identified and cofactored through case-split
procedures. LEC prove all eight cases quickly within a few
seconds.</p>
      <p>Miter d5 is extracted from model 15 in Figure 5 which
contains the purely linear sum miter described in the
casestudy section. For this simpler miter, Z3 is able to prove
it in 9 hours while both iprove and Boolector time out.
This shows that LEC’s transformations through collaborating
procedures successfully reduce the surrounding logic in the
original model, which was preventing Z3 to prove it in 24
hours.</p>
      <p>The above experiments demonstrate the effectiveness of
LEC’s collaborating procedures of simplification, rewriting,
case-splitting and abstraction computations. The LEC
architecture allows these procedures to be applied recursively through
a sub-model tree: the model obtained by one procedure
introduces new opportunities for applying other procedures
in the next iteration. As exemplified in miter d4, the initial
case-split gives rise to new opportunities for simplification
as new constants are introduced by cofactoring. Then a new
round of abstraction is able to remove enough common logic
and expose three one-bit inputs as case-split candidates in
the reduced model, which in turn gives rise to another
casesplit transformation that leads to the final proof. None of
this is possible without the transformations being applied in
sequence.</p>
    </sec>
    <sec id="sec-7">
      <title>VII. COMPARISON WITH RELATED WORK</title>
      <p>
        In bit-level equivalence-checking procedures [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ][
        <xref ref-type="bibr" rid="ref25">25</xref>
        ],
simulation, SAT-sweeping, AIG rewriting and internal
equivalence identification are all relevant to data-path
equivalencechecking. In LEC, these types of procedures are conducted
at the word-level. Word-level rewriting is difficult if only a
bit-level model is available. For example, with no knowledge
of the boundary of a multiplier, normalizing its operands is
impractical at the bit-level . Although abstraction and
casesplit techniques in LEC can be applied at the bit-level in
theory, these are not used due to the difficulty of
computing an abstraction boundary or of finding good cofactoring
candidates.
      </p>
      <p>
        SMT solving is relevant because a data-path is a subset
of QF BV theory. Methods such as [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ][
        <xref ref-type="bibr" rid="ref11">11</xref>
        ][
        <xref ref-type="bibr" rid="ref16">16</xref>
        ][
        <xref ref-type="bibr" rid="ref14">14</xref>
        ][
        <xref ref-type="bibr" rid="ref17">17</xref>
        ][
        <xref ref-type="bibr" rid="ref19">19</xref>
        ],
are state-of-art QF BV solvers. These employ different
implementations of word-level techniques in rewriting, abstraction,
case-splitting, and simplification, and interleave Boolean and
word-level reasoning via a generalized DPLL framework or
through abstraction refinements of various forms. Hector[
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] is
closest to LEC in terms of technology and targeted application
domains, and has a rich set of word-level rewriting rules along
with some theorem prover [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] procedures to validate every
rewriting applied. Hector also has an orchestration of a set of
bit-level solvers using SAT and BDD engines to employ once
the bit-level miter model is constructed. Strategically, LEC
relies less on the capacity of SAT solver; instead it builds
a compositional proof infrastructure and employs iterative
transformations to finally obtain a proof through sub-model
trees. The goal of these LEC learning procedures is to reverse
engineer the embedded high-level algebraic transformations
and bring more similarity between both sides of the miter
model.
      </p>
      <p>
        The techniques in [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ][
        <xref ref-type="bibr" rid="ref33">33</xref>
        ] also try to reconstruct an
algebraic model from the underlying logic, but they employ a
bottom up approach and their primitive element is a half-adder.
The method in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] simplifies the algebraic construction by
solving an integer linear programming problem. The limitation
of these approaches is that they rely on the structural pattern
of the underlying logic to reconstruct the algebraic model.
On the other hand, the linear construction case-study in
Section V-A constructs the polynomial through probing with
simulation patterns. This is more general as it uses only the
functional information of the data-path logic. For different
domains, other techniques may well be more applicable such
as the bottom-up approach. The use of vanishing polynomials
and Grobner bases in [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ][
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] to prove equivalence between
polynomials in the modulo integer domain can be utilized once
a polynomial form is reconstructed in LEC. In many data-path
miter models, such a polynomial in a certain domain or theory
is likely embedded in other control and data-path logic. Direct
application of algebraic techniques is often not practical. Thus
the collaborating procedures in LEC are designed to bridge
this gap and isolate such polynomials so that these high level
theories can then be applied.
      </p>
      <p>
        In conducting consistency checking between C and Verilog
RTL, the work [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] focuses on how to process a C program
to generate formal models. The tool relies on SMT solvers
[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ][
        <xref ref-type="bibr" rid="ref16">16</xref>
        ][
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] as the back-end solving engines.
      </p>
      <p>
        In terms of tool architecture, [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], all employ
a sophisticated set of transformations to simplify the target
model during verification. These are done at the bit-level. The
LEC infrastructure allows future extension to take advantage
of multi-core parallelization as demonstrated in [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]
[
        <xref ref-type="bibr" rid="ref32">32</xref>
        ], use a dedicated data-structures to represent the
proofobligations, while LEC relies on the sub-model tree to track
the compositional proof strategy used at each node.
      </p>
    </sec>
    <sec id="sec-8">
      <title>VIII. CONCLUSION</title>
      <p>In LEC, we build a system of collaborating procedures
for data-path equivalence-checking problems found from an
industrial setting. The strategy is to utilize Boolean level
solvers, conduct the transformations at the word-level and
to synthesize internal similarities by lifting the reasoning to
the algebraic level . Using a real industrial case-study, we
demonstrated the applicability of the sub-tree infrastructure for
integrating a compositional proof methodology using LEC.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>[1] ABC - a system for sequential synthesis and verification</article-title>
          . Berkeley Verification and Synthesis Research Center, http://www.bvsrc.org.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Calypto R Catapult Design</surname>
          </string-name>
          <article-title>Product</article-title>
          . http://www.calypto.com.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Calypto</surname>
            <given-names>R</given-names>
          </string-name>
          SLEC. http://www.calypto.com.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>[4] Forte design systems</article-title>
          . http://www.forteds.com.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <article-title>[5] smtlib</article-title>
          . http://www.smt-lib.org.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Verific</given-names>
            <surname>Design</surname>
          </string-name>
          Automation: http://www.verific.com.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. L.</given-names>
            <surname>Conway</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Deters</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Hadarean</surname>
          </string-name>
          , D. Jovanovic´,
          <string-name>
            <given-names>T.</given-names>
            <surname>King</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          . Cvc4. In Computer Aided Verification, pages
          <fpage>171</fpage>
          -
          <lpage>177</lpage>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Basith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Ahmad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rossi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Ciesielski</surname>
          </string-name>
          .
          <article-title>Algebraic approach to arithmetic design verification</article-title>
          .
          <source>In Formal Methods in Computer-Aided Design (FMCAD)</source>
          ,
          <year>2011</year>
          , pages
          <fpage>67</fpage>
          -
          <lpage>71</lpage>
          . IEEE,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>J.</given-names>
            <surname>Baumgartner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Mony</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Paruthi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kanzelman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Janssen</surname>
          </string-name>
          .
          <article-title>Scalable sequential equivalence checking across arbitrary design transformations</article-title>
          .
          <source>In Computer Design</source>
          ,
          <year>2006</year>
          . ICCD 2006. International Conference on, pages
          <fpage>259</fpage>
          -
          <lpage>266</lpage>
          . IEEE,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R.</given-names>
            <surname>Brayton</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Mishchenko</surname>
          </string-name>
          . Abc:
          <article-title>An academic industrial-strength verification tool</article-title>
          . In Computer Aided Verification, pages
          <fpage>24</fpage>
          -
          <lpage>40</lpage>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Brummayer</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          . Boolector:
          <article-title>An efficient smt solver for bitvectors and arrays</article-title>
          .
          <source>In Tools and Algorithms for the Construction and Analysis of Systems</source>
          , pages
          <fpage>174</fpage>
          -
          <lpage>177</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>M. L. Case</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Mishchenko</surname>
            , and
            <given-names>R. K.</given-names>
          </string-name>
          <string-name>
            <surname>Brayton</surname>
          </string-name>
          .
          <article-title>Automated extraction of inductive invariants to aid model checking</article-title>
          .
          <source>In Formal Methods in Computer Aided Design</source>
          ,
          <year>2007</year>
          . FMCAD'
          <volume>07</volume>
          , pages
          <fpage>165</fpage>
          -
          <lpage>172</lpage>
          . IEEE,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>P.</given-names>
            <surname>Chauhan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Goyal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Hasteer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mathur</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Sharma</surname>
          </string-name>
          .
          <article-title>Noncycle-accurate sequential equivalence checking</article-title>
          .
          <source>In Proceedings of the 46th Annual Design Automation Conference</source>
          , pages
          <fpage>460</fpage>
          -
          <lpage>465</lpage>
          . ACM,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A.</given-names>
            <surname>Cimatti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Griggio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. J.</given-names>
            <surname>Schaafsma</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Sebastiani</surname>
          </string-name>
          .
          <article-title>The mathsat5 smt solver</article-title>
          .
          <source>In Tools and Algorithms for the Construction and Analysis of Systems</source>
          , pages
          <fpage>93</fpage>
          -
          <lpage>107</lpage>
          . Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Neuendorffer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Noguera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Vissers</surname>
          </string-name>
          , and
          <string-name>
            <surname>Z. Zhang.</surname>
          </string-name>
          <article-title>High-level synthesis for fpgas: From prototyping to deployment. Computer-Aided Design of Integrated Circuits and Systems</article-title>
          , IEEE Transactions on,
          <volume>30</volume>
          (
          <issue>4</issue>
          ):
          <fpage>473</fpage>
          -
          <lpage>491</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>L. De Moura</surname>
            and
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Bjørner</surname>
          </string-name>
          . Z3:
          <article-title>An efficient smt solver</article-title>
          .
          <source>In Tools and Algorithms for the Construction and Analysis of Systems</source>
          , pages
          <fpage>337</fpage>
          -
          <lpage>340</lpage>
          . Springer,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>B.</given-names>
            <surname>Dutertre and L. De Moura</surname>
          </string-name>
          .
          <article-title>The yices smt solver</article-title>
          . Tool paper at http://yices. csl. sri. com/tool-paper. pdf,
          <volume>2</volume>
          :
          <fpage>2</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M.</given-names>
            <surname>Fujita</surname>
          </string-name>
          .
          <article-title>Equivalence checking between behavioral and rtl descriptions with virtual controllers and datapaths</article-title>
          .
          <source>ACM Transactions on Design Automation of Electronic Systems (TODAES)</source>
          ,
          <volume>10</volume>
          (
          <issue>4</issue>
          ):
          <fpage>610</fpage>
          -
          <lpage>626</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>S.</given-names>
            <surname>Jha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Limaye</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Seshia</surname>
          </string-name>
          . Beaver:
          <article-title>Engineering an efficient smt solver for bit-vector arithmetic</article-title>
          . In Computer Aided Verification, pages
          <fpage>668</fpage>
          -
          <lpage>674</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Koelbl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Jacoby</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Jain</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Pixley</surname>
          </string-name>
          .
          <article-title>Solver technology for system-level to rtl equivalence checking</article-title>
          .
          <source>In Design, Automation &amp; Test in Europe Conference &amp; Exhibition</source>
          ,
          <year>2009</year>
          . DATE'
          <volume>09</volume>
          ., pages
          <fpage>196</fpage>
          -
          <lpage>201</lpage>
          . IEEE,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>D.</given-names>
            <surname>Kroening</surname>
          </string-name>
          , E. Clarke, and
          <string-name>
            <given-names>K.</given-names>
            <surname>Yorav</surname>
          </string-name>
          .
          <article-title>Behavioral consistency of C and Verilog programs using bounded model checking</article-title>
          .
          <source>In Proceedings of DAC 2003</source>
          , pages
          <fpage>368</fpage>
          -
          <lpage>371</lpage>
          . ACM Press,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kuehlmann</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Baumgartner</surname>
          </string-name>
          .
          <article-title>Transformation-based verification using generalized retiming</article-title>
          . In Computer Aided Verification, pages
          <fpage>104</fpage>
          -
          <lpage>117</lpage>
          . Springer,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>J.</given-names>
            <surname>Long</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ray</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Sterin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mishchenko</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Brayton</surname>
          </string-name>
          .
          <article-title>Enhancing abc for ltl stabilization verification of systemverilog/vhdl models</article-title>
          . Ganesh Gopalakrishnan University of Utah USA, page
          <volume>38</volume>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>A.</given-names>
            <surname>Mishchenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Brayton</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Een</surname>
          </string-name>
          .
          <article-title>Improvements to combinational equivalence checking</article-title>
          . In Computer-Aided Design,
          <year>2006</year>
          . ICCAD '06. IEEE/ACM International Conference on, pages
          <fpage>836</fpage>
          -
          <lpage>843</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>V.</given-names>
            <surname>Paruthi</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Kuehlmann</surname>
          </string-name>
          .
          <article-title>Equivalence checking combining a structural sat-solver, bdds, and simulation</article-title>
          .
          <source>In Computer Design</source>
          ,
          <year>2000</year>
          . Proceedings. 2000 International Conference on, pages
          <fpage>459</fpage>
          -
          <lpage>464</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>E.</given-names>
            <surname>Pavlenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wedler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Stoffel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Kunz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dreyer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Seelisch</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Greuel. Stable</surname>
          </string-name>
          :
          <article-title>A new qf-bv smt solver for hard verification problems combining boolean reasoning with computer algebra</article-title>
          . In Design,
          <source>Automation &amp; Test in Europe Conference &amp; Exhibition (DATE)</source>
          ,
          <year>2011</year>
          , pages
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          . IEEE,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>N.</given-names>
            <surname>Shekhar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kalla</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Enescu</surname>
          </string-name>
          .
          <article-title>Equivalence verification of polynomial datapaths using ideal membership testing</article-title>
          .
          <source>Computer-Aided Design of Integrated Circuits and Systems</source>
          , IEEE Transactions on,
          <volume>26</volume>
          (
          <issue>7</issue>
          ):
          <fpage>1320</fpage>
          -
          <lpage>1330</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>N.</given-names>
            <surname>Shekhar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kalla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Enescu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Gopalakrishnan</surname>
          </string-name>
          .
          <article-title>Equivalence verification of polynomial datapaths with fixed-size bit-vectors using finite ring algebra</article-title>
          . In Computer-Aided Design,
          <year>2005</year>
          . ICCAD
          <article-title>-2005</article-title>
          . IEEE/ACM International Conference on, pages
          <fpage>291</fpage>
          -
          <lpage>296</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>W.</given-names>
            <surname>Snyder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Wasson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Galbi</surname>
          </string-name>
          . Verilator: Convert verilog code to c++/systemc,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>B.</given-names>
            <surname>Sterin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Een</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mishchenko</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Brayton</surname>
          </string-name>
          .
          <article-title>The benefit of concurrency in model checking</article-title>
          .
          <source>IWLS</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>D.</given-names>
            <surname>Stoffel</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Kunz</surname>
          </string-name>
          .
          <article-title>Equivalence checking of arithmetic circuits on the arithmetic bit level</article-title>
          .
          <source>Computer-Aided Design of Integrated Circuits and Systems</source>
          , IEEE Transactions on,
          <volume>23</volume>
          (
          <issue>5</issue>
          ):
          <fpage>586</fpage>
          -
          <lpage>597</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>D.</given-names>
            <surname>Wang</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Levitt</surname>
          </string-name>
          .
          <article-title>Automatic assume guarantee analysis for assertion-based formal verification</article-title>
          .
          <source>In Proceedings of the 2005 Asia and South Pacific Design Automation Conference</source>
          , pages
          <fpage>561</fpage>
          -
          <lpage>566</lpage>
          . ACM,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wedler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Stoffel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Brinkmann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Kunz</surname>
          </string-name>
          .
          <article-title>A normalization method for arithmetic data-path verification</article-title>
          .
          <source>Computer-Aided Design of Integrated Circuits and Systems</source>
          , IEEE Transactions on,
          <volume>26</volume>
          (
          <issue>11</issue>
          ):
          <fpage>1909</fpage>
          -
          <lpage>1922</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>