<!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>
      <journal-title-group>
        <journal-title>This work has been supported in part by SRC contract</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Enhancing ABC for LTL Stabilization Verification of SystemVerilog/VHDL Models</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Jiang Long</institution>
          ,
          <addr-line>Sayak Ray, Baruch Sterin, Alan Mishchenko</addr-line>
          ,
          <institution>Robert Brayton Berkeley Verification and Synthesis Research Center (BVSRC) Department of EECS, University of California</institution>
          ,
          <addr-line>Berkeley</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2057</year>
      </pub-date>
      <volume>001</volume>
      <abstract>
        <p>-We describe a tool which combines a commercial front-end with a version of the model checker, ABC, enhanced to handle a subset of LTL properties. Our tool, VeriABC, provides a solution at the RTL level and produces models for synthesis and formal verification purposes. We use Verific (a commercial software) as the generic parser platform for SystemVerilog and VHDL designs. VeriABC traverses the Verific netlist database structure and produces a formal model in the AIGER format. LTL can be specified using SVA 2009 constructs that are processed by Verific. VeriABC traverses the resulting SVA parse trees and produces equivalent LTL formulae using the F,G, Until and X operators. The model checker in ABC has been enhanced to handles LTL stabilization properties, an important subset of LTL. The paper presents VeriABC's implementation strategy, software architecture, tool flow, environment setup for formal verification, use model, the specification of properties in SVA and translation into LTL. Finally the properties are translated into safety properties that can be verified by the ABC model checker.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        We present an integrated tool flow for liveness model
checking using industry hardware description languages (HDLs) and
SystemVerilog Assertions: (i) VeriABC: a front-end to read in
hardware models expressed in HDLs, and (ii) capability of
model checking a subset of liveness properties. VeriABC is
able to read in hardware models expressed in SystemVerilog
or VHDL. SystemVerilog and VHDL languages are the most
popular HDLs being used in industry today for digital designs.
VeriABC generates a formal model in the AIGER[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] format
and relies on a commerical front-end, Verific, to build a generic
parser platform for HDLs. This allows down-stream tool flows
in synthesis and verification. A version of ABC was enhanced
from a safety-only verification engine to allow both safety and
liveness verification. Our current version supports a particular
subset of liveness properties called stabilization properties or
generalized fairness constraints (defined in Section IV).
      </p>
      <p>In a typical use model, a user will develop a hardware
design in SystemVerilog or VHDL, and specify its correctness
requirements in the property specification language
SystemVerilog Assertion (SVA). SVA has been adopted into IEEE
SystemVerilog standard and is supported by major
commercial tools in simulation, synthesis and verification. The SVA
language in SystemVerilog 2009 standard contains liveness
constructs that allow full specification of liveness properties
as those defined in LTL formulas. In our framework, a user
can specify both safety properties and liveness properties
(stabilization properties, to be precise). In this paper, we detail
its liveness capabilities.</p>
      <p>
        After reading in a design, VeriABC bit-blasts it into a
bitlevel netlist and converts the SVA stabilization properties into
an intermediate LTL representation. Then the LTL properties
are folded into the bit-level netlist in an appropriate way
(using an extended liveness-to-safety conversion, explained
later in Section IV). The resulting bit-level netlist represents
a formal model of the design, represented as an and-inverter
graph (AIG). And-inverter graphs are concise representations
of finite state machines. The AIGER[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] format is a prevalent
format for AIG representation. supported by various academic
tools and used in annual hardware model checking
competitions. Since our liveness verification is based on
liveness-tosafety conversion, eventually the safety verification backend in
ABC[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is called which works on the bit-level netlist produced
by the VeriABC front-end. We have used this methodology
to verify liveness in the context of compositional verification
of deadlock freedom of micro-architectural communication
fabrics. Preliminary experimental results are encouraging.
      </p>
      <sec id="sec-1-1">
        <title>A. Related work</title>
        <p>
          Although parsing and elaborating RTL languages are a
standard practice for commercial EDA products, it is a daunting
task for academics due to language complexity and continuous
language evolution over the years. Although, vl2mv[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] was an
academic tool that attempted to treat a significant subset of the
Verilog language for synthesis and verification purposes, it was
not maintained and language support was not complete. Tools
like ABC[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], VIS[
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] parse subsets of Verilog language too
strict and not applicable in a broad setting. Freely accessible
tools like icarus[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] contain Verilog languages front-end but are
not up-to-date with newer SystemVerilog features.
        </p>
        <p>Our choice of a commercial and stable front-end Verific,
allows academics to get around the language barrier to access
real-world designs.</p>
        <p>
          Liveness-to-safety conversion was first proposed in [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ],
[
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. They demonstrated that verification problems for any
!-regular property can be converted into a verification
problem of an equisatisfiable safety problem. Their algorithm
has been deployed successfully in industrial setups and used
to verify liveness properties of microprocessor designs [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
Our liveness-to-safety conversion algorithm for stabilization
is essentially an extension of the algorithm proposed in [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]
and is broader than discussed in [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
        </p>
      </sec>
      <sec id="sec-1-2">
        <title>B. Contribution</title>
        <p>As illustrated in Figure 1, we combine a commercial
frontend, Verific, with a version of our model checker, ABC,
enhanced to handle a subset of LTL properties. Our tool
processes the Verific output, conducts various modeling
procedures on the design, compiles SVA into LTL formulas, then
the enhanced ABC processes the LTL formulas for liveness
model checking. We detail the software architecture, tool flow,
formal model construction, SVA compilation and downstream
LTL modeling checking.</p>
        <p>DEBUG</p>
        <p>RTL+SVA
Verific Netlist Databse
AIGER + LTL Formula</p>
        <p>AIGER
Proven</p>
        <p>Error
Trace</p>
        <p>Verific Parser Platform
VeriABC
L2S
ABC Backend Engines</p>
      </sec>
      <sec id="sec-1-3">
        <title>C. Organization of the Paper</title>
        <p>We first discuss the capabilities of the Verific parser
platform. In Section III we describe the architecture, formal
modeling of VeriABC and translation of SVA into LTL. In
Section IV the stabilization properties are described in further
detail. Section V describes the liveness-to-safety conversion
for stabilization properties. Experimental results are presented
in Section VI.</p>
        <p>
          II. BACKGROUND: VERIFIC PARSER PLATFORM
Verific Design Automation[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] builds SystemVerilog and
VHDL Parser Platforms which enable its customers to develop
advanced EDA products quickly and at low cost. Verific’s
Parser Platforms are distributed as C++ source code or library
and build on all 32 and 64 bit Unix, Linux, and Windows
operating systems. Applications vary from formal verification
to synthesis, simulation, emulation, virtual prototyping, in
circuit debug, and design-for-test. We chose Verific as our
front-end for its commercial success and stability in supporting
the latest language constructs in SystemVerilog.
        </p>
        <p>Figure 2 shows the architecture of the Verific parser
frontend. The main commands we use in Verific library are analyze
and elaborate. Analyze creates parse-trees and performs
type-inferencing to resolve the meaning of identifiers. The
Parser/Analyzer supports the entire SystemVerilog IEEE 1800,
VHDL IEEE 1076-1993, and Verilog IEEE 1364-1995/2001
languages, without any restrictions. The resulting parse tree
comes with an extensive API.</p>
        <p>Elaborate supports both static elaboration and RTL
elaboration. Static elaboration elaborates the entire language, and
specifically binds instances to modules, resolves library
references, propagates defparams, unrolls generate statements,
and checks all hierarchical names and function/task calls.
The result after static elaboration is an elaborated parse tree,
appropriate for simulation like applications. RTL elaboration is
limited to the synthesizable subset of the language. In addition
to the static elaboration tasks for this subset, it generates
sequential networks through flipflop and latch detection, and
Boolean extraction. The result after RTL elaboration is a netlist
database, appropriate to applications such as logic synthesis
and formal verification. This netlist database is the starting
point of VeriABC and we utilize Verific provided C++ APIs
to access the database.</p>
      </sec>
      <sec id="sec-1-4">
        <title>A. Verific Netlist Database Structure</title>
        <p>In this Section, we use Verilog terminology to present
Verific’s netlist database structures. The netlist database is
rather intuitive and adheres to the module definitions. Shown
in Table I, there is a one-to-one correspondence between the
C++ API class definitions and Verilog constructs.</p>
        <p>A N etlist corresponds to module definitions in Verilog
while an Instance object corresponds to module instantiation,
Verific Database C++ API Class</p>
        <p>Netlist
Instance</p>
        <p>Port</p>
        <p>Net
PortRef</p>
        <p>Verilog RTL Objects</p>
        <p>Module definition</p>
        <p>Module instantiation
Module port declarations</p>
        <p>wire/reg/assign</p>
        <p>Port to Net connectivity
after the module’s parameters have been characterized. An
Instance is a thin copy of the N etlist plus a pointer to its
parent netlist. A N etlist contains a set of P orts, N ets and
Instances for its internal logic structure. A P ort corresponds
to the Verilog port definitions which can be input, output
or inout. A N et is a named component, intuitively a wire.
P ortRef contains the connectivity between a P ort and a
N et. The direction of the P ortRef can be in, out, or inout
depending on the type of P ort it contains. Using these C++
objects, the Verific netlist database defines a directed
hypergraph and encapsulates the following types of information:</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Design Hierarchy</title>
      <p>Design hierarchy is captured as an instance tree by
the parent pointers in the Instance with a top-level
netlist as the root.</p>
      <p>Unique Hierarchical Name</p>
      <p>Following the design hierarchy through the instance
tree, each internal object is assigned a unique
hierarchical name.</p>
      <p>Connectivity</p>
      <p>A directed hyper-graph is defined through P ort, N et
and P ortRef : P ort being the node, N et being the
edge, and P ortRef containing the connectivity and
direction information between pairs of a P ort and a
N et. As an edge in the hyper-graph, a N et can be
referenced in multiple P ortRef objects.</p>
      <p>Logic Definition</p>
      <p>At the leaf of the design hierarchy, a N etlist of
primitive operator types such as and, or, adder,
flipflop, latches etc defines the basic logic operators.</p>
      <p>Recursively, the functional behavior of the design is
captured through the directed hierarchical hyper-graph with basic
logic operators at its leaf level.</p>
    </sec>
    <sec id="sec-3">
      <title>III. VERIABC</title>
      <p>VeriABC traverses the above netlist database and transforms
it into a monolithic AIG which can be treated as a directed
acyclic graph (DAG). The AIG contains primary input,
primary output, register nodes and and-inverter nodes. Each
named P ort and N et in the Verific netlist has a mapped node
in the AIG graph. Additional book-keeping information such
as hash tables are created that map the hierarchical name to
the corresponding AIG node. The down-stream model checker
ABC then reads in this AIG to conduct formal analysis.</p>
      <sec id="sec-3-1">
        <title>A. Architecture</title>
        <p>A hyper-graph is rather hard to traverse and conduct
analysis/transformation at the same time.</p>
        <p>As shown in Figure 3, we employ a two phase approach.
First we construct an intermediate netlist graph, a DAG with
extra annotated node types representing logic structure and
connectivity of the flattened design. In addition to the simple
node types in and-inverter graphs, extra node types contain
annotations for language constructs such as tri states, flipflops
and latches etc. For example, flipflops contain set/reset pins
and driving d-pins; latches contain additional gated-clock
definitions. By language definition, a design can specify any signal
for the clock and reset signals. Design behavior is defined
by event-driven semantics. Further analysis needs be done to
determine if there is an AIG representation that can capture the
original design semantics. The intermediate netlist is a DAG
for which various traversal algorithms can be conducted for
the later analysis. For this step, VeriABC only traverses the
design hierarchy and hyper-graph in the Verific netlist database
to gather information and construct the intermediate DAG
representation without conducting any design style checking
or transformation.</p>
        <p>Verific Netlist</p>
        <p>Database
Intermediate
Netlist Graph</p>
        <p>AIG</p>
        <p>The end result of VeriABC is an AIG model that is
consistent with the original RTL design semantics. AIG is
recognized as a finite state machine model. Compared to
the event-driven semantics in HDL language, the execution
semantics of an AIG is synchronous with an implicit universal
clock that ticks at every step of the execution. The register
loads in its driver value at the beginning of each step. The
semantics inferred from the Verific netlist structure is more
complex, such as its flip-flop can have arbitrary reset logic and
clock network. The task in formal modeling is to transform the
above design components into AIG registers with additional
glue logic so that it maintains the consistency. In its simplest
form, the following check determines if the design can be
readily represented by an AIG.</p>
        <p>All registers are clocked by the same primary input signal
which does not fanout to other nodes.</p>
        <p>Reset/Set signals are primary inputs</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>No combinational loops</title>
      <p>No multiple drivers per node</p>
      <p>More complex design modeling and transformations can
be achieved by identifying certain patterns by traversing the
intermediate netlist graph. Our current implementation
supports the above form and produces a design style summary
for debugging purposes. Though capacity and performance
depends on the type of individual transformation and
analysis, for the above ones, the transformation and design style
checking is very fast, as it conducts only a few traversals of
the intermediate netlist graph. After design style checking, a
final traversal of the intermediate netlist graph generates an
AIGER file representing the formal model.</p>
      <sec id="sec-4-1">
        <title>C. Commands Implemented</title>
        <p>VeriABC implementation utilizes the Tcl command
interface shipped with the Verific library distribution. The following
is the list of commands implemented to manage the
environment setup for formal verification.</p>
        <p>veriabc analyze</p>
        <p>This command constructs the intermediate netlist
graph in Figure 3 and conducts design style checking.
veriabc set reset</p>
        <p>Although a reset signal can be automatically
detected in certain situations, this command provides
the user with the option to specify the length of
the reset sequence and phase of the reset condition.
A user can also specify the initial value of the
registers through a VCD waveform or textual file.
In the generated formal model, the initial value of
the registers will be valued at the end of the reset
sequence and the reset condition will be disabled
after reset.
veriabc set clock</p>
        <p>A user can specify the clock periods and
relationships in the situation when multi-clocks are in the
design. A phase-counter network will be created in
the formal model to generate the corresponding clock
signals.
veriabc set cutpoint</p>
        <p>This command will prune the cone-of-influence at
cutpoint signal and treat it as free input.
veriabc set constant</p>
        <p>This command sets either an input or a cut-point
signal to a constant value.
veriabc set assume</p>
        <p>This constrains the design signal to be a constant.
veriabc write</p>
        <p>write out the final formal model in AIGER format.
The above commands give the user flexibility to model the
environment with constraints and conduct design abstractions
during verification.</p>
      </sec>
      <sec id="sec-4-2">
        <title>D. SVA to LTL Compilation</title>
        <p>Figure 4 are the templates for matching the basic LTL
operators used in the set of stabilization properties. For stabilization
properties, in our current implementation, we restrict the p and
q to be Boolean expressions which seems to be sufficient in
practice. The SVA verification directive assume is used to
specify a fairness constraint, while assert is used to specify
the target LTL properties.</p>
        <p>property Until(p,q);</p>
        <p>p s_until q;
endproperty
property GF(p);</p>
        <p>always (s_eventually p);
endproperty
property FG(p);</p>
        <p>s_eventually (always p);
endproperty
property X(p);</p>
        <p>s_nexttime (p);
endproperty
Fig. 4. SVA Liveness Template</p>
        <p>Verific also processes SVA constructs into the netlist
database structure, essentially a corresponding parse tree is
integrated into the netlist. We conduct traversals of the parse
tree, identify specific liveness constructs and map them into
the corresponding LTL formula. At the end of the procedure,
along with the AIGER file generated, a separate file containing
the LTL formulas are generated indicating target liveness
assertions and fairness constraints. The support signals referred
to in the LTL formulas are named output signals in the
AIGER file. Although we currently only support stabilization
properties in LTL, the full LTL language using X, F , G,
U operators can be specified fully and translated through
SVA constructs. In doing so, this completes the formal model
generation and SVA compilation at the RTL level.</p>
        <p>
          IV. LIVENESS MODEL CHECKING IN VERIABC
In the FSM modeling formalism, the most intuitive notion
of stabilization states that the system will always reach a
particular state and stay there forever, no matter which state the
system started from or which path it took. Relaxing this notion
a bit, stabilization means that the system will eventually reach
and stay within a given subset of states. Also, stabilization may
denote conditions on the input and output signals of a system
when it attains a stable state. Applications of stabilization
properties have been demonstrated in [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] and [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], to name
a few. We review some basic temporal logic terminology and
formally define stabilization properties using LTL below.
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>A. LTL, model checking and stabilization property</title>
        <p>
          In SystemVerilg 2009 standard, a rich set of LTL operators
are added into SVA language. The SVA properties shown in
Familiarity is assumed with LTL, basic model checking
algorithms, and related terminology like Kripke structures and
Bu¨chi automata. For further details, see [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. In our current
context, we use LTL properties GFp and FGp, and thus
overview their semantics here: let be a path in some Kripke
structure K; j=K Gp means property p will hold on every
state along ; j=K Fp means the property p will hold
eventually on some state along ; j=K GFp means p will
hold along infinitely often, and j=K FGp means p will
hold eventually on forever. Since temporal operators F and
G are dual (i.e. Fp :G:p), operators FG and GF are also
dual (i.e. FGp :GF:p).
        </p>
        <p>Definition 1 (GF-atom): Any LTL formula of the form
GFp or FGp, where p is some atomic proposition or some
Boolean formula involving atomic propositions only, will be
called a ‘GF-atom’.</p>
        <p>Stabilization properties are defined as the family of LTL
formulas that are Boolean combinations of GF-atoms. Formally:</p>
        <p>Definition 2 (Stabilization Property): The set of
stabilization properties is the syntactic subset of LTL defined as
follows:
any GF-atom is a stabilization property
if is a stabilization property, then so is :
if and are stabilization properties, then so are ^
and _</p>
        <p>Example 1: FGp, GFp ) GFq, FGp ^ FGq ) FGr,
and FGp ) FGq _ (FGr ^ GFs) are stabilization
properties where p; q; r, and s are atomic propositions or Boolean
formulas involving atomic propositions only and a ) b is the
usual shorthand for :a _ b. However, G(r ) Fg) is an LTL
liveness property but not a stabilization property.</p>
        <p>
          Needless to say, these are all liveness properties. But not
all of them specify so-called system stabilization directly.
Properties like FGp and FGp ^ FGq ) FGr (or its
generalk
ization ^i=1FGpi ) FGq) are perhaps the most elementary
stabilization properties. FGp means that the system eventually
will reach a state from where p will always hold, i.e. the
system will eventually ‘stabilize’ at p. FGp ^ FGq ) FGr
means that if the system stabilizes at p and also at q (at
perhaps some other time), then it will stabilize eventually
at r. Hence, semantics of these properties are close to the
intuitive notion of stabilization. [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] demonstrates the use
and significance of stabilization properties in the context
of biological system analysis. However, our definition of
stabilization captures a broader family of specifications. It
includes FGp ) FGq _ (FGr ^ GFs) which may look
contrived, but for example, [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] uses many such complicated
stabilization properties for compositional deadlock analysis
of micro-architectural communication fabrics. On the other
hand, our definition includes many properties not intended to
specify so-called stabilization behavior. For example, GFp or
GFp ) GFq.
        </p>
        <p>
          The main motivation behind considering this broader subset
of LTL is that we offer a short-cut L2S conversion,
avoiding Bu¨chi automaton construction, in a uniform way (due
to the duality between FG and GF operators). The most
significant applications of this class that we have encountered
is “stabilization verification”, and hence the name is coined
for the family. (This name was inspired by [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]). Thus the
L2S conversion proposed here may be applied for proving
properties beyond the context of stabilization verification (eg.
GFp ) GFq).
        </p>
        <p>
          The class of LTL properties defined as stabilization
properties in this paper is a very important class of temporal
properties extensively studied in the literature. It is related
to so-called fairness specifications. Operators GF and FG
are often called infinitary operators [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] and symbols F 1
and G1 are used respectively instead [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. The class itself
(i.e. Boolean combination of GF-atoms) has been called
general fairness constraints [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. As shown in [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ],
various notions of fairness like impartiality [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], weak fairness
[
          <xref ref-type="bibr" rid="ref20">20</xref>
          ](also called justice [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]), strong fairness [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] (also called
compassion [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]), generalized fairness [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], state fairness [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]
(also known as fair choice from states [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]), limited looping
fairness [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], and fair reachability of predicate [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] can be
expressed by stabilization properties. These properties are used
to exclude “unfair” counterexamples in liveness verification
in both linear time and (fair) branching time paradigms. For
liveness verification, we usually have a liveness property (the
actual proof obligation) along with a set of fairness constraints.
Liveness properties may not be stabilization properties. In that
case we may need to construct the product of the system
and the Bu¨chi automaton of the (negation of the) liveness
property before performing the L2S conversion. Interestingly,
for many interesting applications as in [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] and [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], the
liveness verification obligations fall entirely in the family of
stabilization properties. For these applications, the simple L2S
scheme proposed in this paper works. Note that some liveness
properties like G(request ) Fgrant) are not stabilization
properties, but also have a direct L2S conversion [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. It is,
therefore, an interesting question that under what more general
conditions there exists a direct L2S conversion.
        </p>
        <p>V. L2S CONVERSION FOR STABILIZATION PROPERTIES
It is important to understand that any counterexample to
a liveness property (which must be an infinite trace) can be
seen as a “lasso” like configuration with a finite handle and
a finite loop. Therefore a liveness counter-example is a lasso
which does not satisfy the property on the loop but satisfies
all imposed fairness constraints on the loop.</p>
        <p>
          In general, a liveness problem is converted to a safety
problem by adding a loop-detection logic and property-detection
logic on top of the product of the FSM of the original system
and the Bu¨chi automaton of the property to be verified. The
loop-detection logic consists of a set of shadow registers,
comparator logic, and an ‘oracle’. The oracle saves the system
state in the shadow registers at a non-deterministically chosen
time. In all subsequent time frames, the current state of the
system is compared to the state in the shadow registers.
Whenever these two states match, the system has completed a
loop. The non-deterministic nature of the oracle allows all such
loops to be explored. The property verification logic checks if
any of the liveness conditions are violated in any such loop
and all fairness conditions always hold in the loop. This check
is done as a safety obligation. For a more detailed exposition,
see [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
        <p>
          As mentioned, for some simple properties L2S conversion
can be achieved while avoiding explicit Bu¨chi automata
construction. This is done by adding more functionality to the
property detection logic. As presented in [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ], these properties
are Fp; GFp; FGp; pUq; ; G(r ) Fq), and F(p ^ Xq) (Table
1 of [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]). This approach, reviewed in Figure 5, depicts an L2S
converted circuit for verifying the LTL property Fp.
        </p>
        <p>
          In the next paragraph, we describe how this construction
verifies Fp. In Section V-A we explain how to extend the ideas
of Figure 5 for stabilization properties. Instead of presenting
the liveness-to-safety conversion through Kripke
structurebased representations (i.e. through explicit state machines
based representations), we present the idea in terms of an
actual circuit construction (i.e. through symbolic representation
of the state space). Also, although we do not discuss it further,
the same mechanism handles fairness constraints, which are
always stabilization properties, so they just entail adding
additional logic to the circuit for the monitor. For Kripke
structure-based descriptions of liveness-to-safety conversion,
see [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
        <p>In Figure 5, save represents an additional primary input
added to the circuit. This plays the role of the ‘oracle’. When
save is asserted for the first time, the current state of the
circuit is saved in the set of shadow registers, and register
saved is set. saved thus remembers that input save has
been asserted and allows any further activity on save to
be ignored. For subsequent time frames, saved enables the
equality detection between the current state of the circuit and
the state in the shadow registers. Clearly, signal looped is
asserted iff the system has completed a loop. Signal live
remembers if the signal p has ever been asserted. The safety
property that the circuit verifies is, therefore, looped )
live. (In general this would be looped &amp; fair ) live.)
The block marked with “*” represents this logical implication
- the direction of the arrow distinguishes the antecedent signal
from the consequent signal of the implication.</p>
      </sec>
      <sec id="sec-4-4">
        <title>A. L2S for stabilization properties</title>
        <p>
          In [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ], the authors show how to do the L2S conversion for
GFp and FGp, which are GF-atoms. We demonstrate how to
extend this to any Boolean combination of GF-atoms using an
example, omitting a formal proof of correctness.
        </p>
        <p>Consider a simple stabilization property of the form
FGa ) FGb + FGc. An L2S converted circuit for this
is shown in Figure 6. (For simplicity, we do not show any
fairness constraints in the example.) Note that, signal live
in Figure 5 monitors if signal p has ever been asserted from
the very initial time frame. But for verifying GFp, we need to
monitor whether signal p has been asserted between the time
when saved is set and the time when looped becomes true.
Using this fact, the duality between FG and GF operators,
and the Boolean structure Xa ) Xb+Xc of the given formula,
we can derive the circuit of Figure 6. Logic that captures the
Boolean structure of is marked with a dotted triangle in
Figure 6. Hence, for any arbitrary stabilization property, we
need to create monitors for individual GF-atoms and a crown
of combinational logic on top of these monitors that captures
the Boolean structure of the property. We can formulate the
following theorem.</p>
        <p>Theorem 1: For any stabilization property, the given
procedure finds one counter-example if one exists.</p>
        <p>(Proof Sketch) Any stabilization property can be
transformed into another stabilization property with GF operators
only. Let f be the Boolean structure in the negation of the
given stabilization property. The procedure described above
will create a monitor that will search for a lasso-loop where
f is violated inside the loop. Since the procedure implicitly
enumerates all possible cycles in the state space, it will detect
a violating cycle if one such exists.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>VI. EXPERIMENTAL RESULTS</title>
      <p>
        We implemented our L2S scheme for general stabilization
properties in ABC and experimented with several designs of
communication fabrics from industry. Our objective was to
verify all stabilization properties defined for every structural
primitive of the XMAS framework [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The properties,
though local to each component, are verified in the context
of the whole design in order to avoid explicit environmental
modeling. BLIF models of the communication fabrics were
generated by the XMAS compiler [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] from high-level C++
models. The L2S monitor logic was then created by ABC
on these BLIF models. The XMAS compiler also generates
SMV models from C++ models so that the LTL encoding of
the stabilization properties can be verified directly on the SMV
models using the NuSMV model checker.
      </p>
      <p>
        We found that the ABC based L2S implementation has
much better scalability than NuSMV. NuSMV can solve only
toy designs while on the large designs of interest, it fails
to produce a result. On the other hand, our tool works well
even on large designs. For most cases, it produces a result
almost immediately. For a few cases, initial trials could not
produce a proof, but with the latest version of ABC using
simplification, abstraction, speculative reduction, and property
directed reachability (PDR) analysis [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], the proofs were
completed. This observation supports the premise that the use
of highly developed safety techniques can pay off for liveness
verification.
      </p>
      <p>
        Experimental results are shown below. Among all the local
properties that the XMAS compiler generated, we provide
results for the most challenging one. Call this property ; it
is defined for a FIFO buffer, and has the following LTL form
:= FG(:a) ) FG(:b) _ FG(c)
where a; b; and c are appropriate design signals (i.e. interface
signals of a FIFO buffer). Table 1, 2, and 3 compare the
performance of ABC with NuSMV on small examples. These
examples are instances of communication fabrics or
submodules thereof, and are explained in full detail in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
simple credit and simple vc (Table 1 and 2, respectively)
are designs corresponding to Figure 4 and 5 of [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], and
simple ms (Table 3) is a much simpler version of the design
shown in Figure 6 of [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Note from the table, how
performance of NuSMV degrades even for small designs. For large
designs, NuSMV could not finish for any single instance of
.
      </p>
      <p>Since is defined for a FIFO buffer and the XMAS
compiler created one instance of for each FIFO buffer, the
Fig. 5.</p>
      <p>Liveness-to-safety transformation for Fp
.
..</p>
      <p>Save</p>
      <sec id="sec-5-1">
        <title>Circuit Under</title>
        <p>Verification
state bits ..
.</p>
        <p>Saved
....</p>
        <p>Save</p>
      </sec>
      <sec id="sec-5-2">
        <title>Circuit Under</title>
        <p>Verification
a
b
c
.
state bits ..
.</p>
        <p>Saved
0
1
0
1
0
1
0
1
=
Shadow Registers
Live
Looped</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>L2S for stabilization property F Ga ) F Gb + F Gc</title>
      <p>Prop #
0
1
2
3</p>
      <p>ABC
(sec)
0.03
0.12
0.8
0.8
number of instances is the same as the number of FIFO
buffers. For example, the designs corresponding to Table 1, 2,
and 3 above have 3, 6, and 4 FIFO buffers, respectively.</p>
      <p>
        We also experimented on two large communication fabrics
of practical interest [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. One has 20 buffers and the
other has 24 buffers. 19 out of 20 of the first design and 23
out of 24 from the second design were proved by ABC by a
light-weight interpolation engine within a worst case time of
5.83 seconds (most were proved in less than a second).
Lightweight interpolation could not prove one instance from each
design. These were proved using advanced techniques from
ABC’s arsenal of safety verification algorithms. For example,
ABC took a total of 217.2 seconds to prove one of these harder
properties. In this time span, ABC first did some preliminary
simplification, then it tried interpolation, BMC, simulation
and PDR in parallel for a time budget of 20 seconds. But
this attempt failed and it moved on to further simplification
by reducing the design using localization abstraction and
speculation. It ran interpolation, BMC, simulation, BDD-based
reachability and PDR engines in parallel both after abstraction
and speculation, using an elevated time budget of 100 seconds
and 49 seconds respectively. The iteration after abstraction
could not prove the property, but the iteration after speculation
managed to prove it with the PDR engine, which produced the
final proof in 7 seconds.
      </p>
    </sec>
    <sec id="sec-7">
      <title>VII. CONCLUSION &amp; FUTURE WORK</title>
      <p>We have developed a tool, VeriABC, which allows us to
access real industrial designs written in SystemVerilog or
VHDL and to process them into the AIGER format. The result
can be used for synthesis and verification using a tool like
ABC. We described how the RTL processing is done using
the commercial front-end, Verific. SVA assertions are also
processed by Verific, and VeriABC creates a separate file of
equivalent LTL formulas. We showed an application of this
to property checking, where ABC was enhanced to convert a
subset of LTL into a circuit structure, thus effectively allowing
liveness checking in ABC.</p>
      <p>The use of a stable, supported and complete language
processing tool like Verific, allows academics access to real
industrial designs, without going through the hassle and daunting
task of building their own equivalent tool. Liveness property
checking is a growing interest in industry, and our enhanced
ABC with a front end that automatically converts to a circuit
structure for liveness checking, can use the advanced safety
property methods of ABC.</p>
      <p>In the future, the development of VeriABC will allow us
to extract higher level constructs from SystemVerilog and
VHDL by accessing Verific’s parse trees. These constructs
can be passed on using an extended AIGER format to an
enhanced ABC, which will use this information in synthesis
and verification.</p>
    </sec>
    <sec id="sec-8">
      <title>VIII. ACKNOWLEDGMENT</title>
    </sec>
    <sec id="sec-9">
      <title>REFERENCES</title>
    </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>Aiger</surname>
          </string-name>
          , http://fmv.jku.at/aiger/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Icarus</surname>
            <given-names>verilog</given-names>
          </string-name>
          , http://iverilog.icarus.com.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Verific</given-names>
            <surname>Design</surname>
          </string-name>
          Automation: http://www.verific.com.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>K.</given-names>
            <surname>Abrahamson</surname>
          </string-name>
          .
          <article-title>Decidability and expressiveness of logics of processes</article-title>
          . In
          <source>PhD Thesis</source>
          , University of Washington,
          <year>1980</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Baumgartner</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Mony</surname>
          </string-name>
          .
          <article-title>Scalable liveness checking via propertypreserving transformations</article-title>
          .
          <source>In DATE</source>
          , pages
          <fpage>1680</fpage>
          -
          <lpage>1685</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Artho</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Schuppan</surname>
          </string-name>
          .
          <article-title>Liveness checking as safety checking</article-title>
          .
          <source>In In FMICS02: Formal Methods for Industrial Critical Systems</source>
          , volume
          <volume>66</volume>
          (
          <article-title>2) of ENTCS</article-title>
          . Elsevier,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Bradley</surname>
          </string-name>
          .
          <article-title>Sat-based model checking without unrolling</article-title>
          .
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R.</given-names>
            <surname>Brayton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. D.</given-names>
            <surname>Hachtel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sangiovanni-vincentelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Somenzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Aziz</surname>
          </string-name>
          , S. tsung Cheng, and
          <string-name>
            <given-names>S.</given-names>
            <surname>Edwards</surname>
          </string-name>
          .
          <article-title>Vis : A system for verification and synthesis</article-title>
          . pages
          <fpage>428</fpage>
          -
          <lpage>432</lpage>
          . Springer-Verlag,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Kishinevsky</surname>
          </string-name>
          .
          <article-title>Automatic generation of inductive invariants from high-level microarchitectural models of communication fabrics</article-title>
          .
          <source>In CAV</source>
          , pages
          <fpage>321</fpage>
          -
          <lpage>338</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kishinevsky</surname>
          </string-name>
          , and
          <string-name>
            <given-names>U.</given-names>
            <surname>Ogras</surname>
          </string-name>
          .
          <article-title>Modeling communication micro-architectures (with one hand tied behind your back)</article-title>
          .
          <source>Intel Technical Report</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12] S.-T. Cheng and
          <string-name>
            <given-names>R. K.</given-names>
            <surname>Brayton</surname>
          </string-name>
          .
          <source>Compiling verilog into automata</source>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>E.</given-names>
            <surname>Clarke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Grumburg</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Peled</surname>
          </string-name>
          . Model checking.
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>B.</given-names>
            <surname>Cook</surname>
          </string-name>
          , J. Fisher, E. Krepska, and
          <string-name>
            <given-names>N.</given-names>
            <surname>Piterman</surname>
          </string-name>
          .
          <article-title>Proving stabilization of biological systems</article-title>
          .
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>E. A.</given-names>
            <surname>Emerson</surname>
          </string-name>
          .
          <article-title>Handbook of theoretical computer science</article-title>
          (vol. b).
          <source>chapter Temporal and modal logic</source>
          , pages
          <fpage>995</fpage>
          -
          <lpage>1072</lpage>
          . MIT Press, Cambridge, MA, USA,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>E. A.</given-names>
            <surname>Emerson</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.-L.</given-names>
            <surname>Lei</surname>
          </string-name>
          .
          <article-title>Modalities for model checking: branching time logic strikes back</article-title>
          .
          <source>Sci. Comput. Program.</source>
          ,
          <volume>8</volume>
          :
          <fpage>275</fpage>
          -
          <lpage>306</lpage>
          ,
          <year>June 1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>N.</given-names>
            <surname>Francez</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Kozen</surname>
          </string-name>
          .
          <article-title>Generalized fair termination</article-title>
          .
          <source>In Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, POPL '84</source>
          , pages
          <fpage>46</fpage>
          -
          <lpage>53</lpage>
          , New York, NY, USA,
          <year>1984</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>A.</given-names>
            <surname>Gotmanov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Kishinevsky</surname>
          </string-name>
          .
          <article-title>Verifying deadlockfreedom of communication fabrics</article-title>
          .
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>R.</given-names>
            <surname>Hojati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. K.</given-names>
            <surname>Brayton</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R. P.</given-names>
            <surname>Kurshan</surname>
          </string-name>
          .
          <article-title>Bdd-based debugging of design using language containment and fair ctl</article-title>
          .
          <source>In Proceedings of the 5th International Conference on Computer Aided Verification, CAV '93</source>
          , pages
          <fpage>41</fpage>
          -
          <lpage>58</lpage>
          , London, UK,
          <year>1993</year>
          . Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>L.</given-names>
            <surname>Lamport</surname>
          </string-name>
          .
          <article-title>”sometime” is sometimes ”not never”: on the temporal logic of programs</article-title>
          .
          <source>In Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, POPL '80</source>
          , pages
          <fpage>174</fpage>
          -
          <lpage>185</lpage>
          , New York, NY, USA,
          <year>1980</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>D. J.</given-names>
            <surname>Lehmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pnueli</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Stavi</surname>
          </string-name>
          .
          <article-title>Impartiality, justice and fairness: The ethics of concurrent termination</article-title>
          .
          <source>In Proceedings of the 8th Colloquium on Automata, Languages and Programming</source>
          , pages
          <fpage>264</fpage>
          -
          <lpage>277</lpage>
          , London, UK,
          <year>1981</year>
          . Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>A.</given-names>
            <surname>Pnueli</surname>
          </string-name>
          .
          <article-title>On the extremely fair treatment of probabilistic algorithms</article-title>
          .
          <source>In Proceedings of the fifteenth annual ACM symposium on Theory of computing, STOC '83</source>
          , pages
          <fpage>278</fpage>
          -
          <lpage>290</lpage>
          , New York, NY, USA,
          <year>1983</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>J. P.</given-names>
            <surname>Queille</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Sifakis</surname>
          </string-name>
          .
          <article-title>Fairness and related properties in transition systems a temporal logic to deal with fairness</article-title>
          .
          <source>In Acta Informat</source>
          , pages
          <fpage>195</fpage>
          -
          <lpage>220</lpage>
          ,
          <year>1983</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>V.</given-names>
            <surname>Schuppan</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          .
          <article-title>Efficient reduction of finite state model checking to reachability analysis</article-title>
          .
          <source>Int. J. Softw. Tools Technol. Transf.</source>
          ,
          <volume>5</volume>
          (
          <issue>2</issue>
          ):
          <fpage>185</fpage>
          -
          <lpage>204</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>