Prabhat Jain, Prabhakar Kudva, and Ganesh Gopalakrishnan

advertisement
Towards A Veri cation Technique for Large
Synchronous Circuits
Prabhat Jain, Prabhakar Kudva, and Ganesh Gopalakrishnan
Department of Computer Science,
University of Utah,
Salt Lake City, UT 84112
Abstract. We present a symbolic simulation based verication approach
which can be applied to large synchronous circuits. A new technique to
encode the state and input constraints as parametric Boolean expressions
over the state and input variables is used to make our symbolic simulation
based verication approach ecient. The constraints which are encoded
through parametric Boolean expressions can involve the Boolean connectives ( + :), the relational operators (< > 6= =), and logical
connectives (^ _). This technique of using parametric Boolean expressions vastly reduces the number of symbolic simulation vectors and the
time for verication. Our verication approach can also be applied for
ecient modular verication of large designs the technique used is to
verify each constituent sub-module separately, however in the context of
the overall design. Since regular arrays are part of many large designs, we
have developed an approach for the verication of regular arrays which
combines formal verication at the high level and symbolic simulation
at the low level(e.g., switch-level). We show the verication of a circuit
called Minmax, a pipelined cache memory system, and an LRU array
implementation of the least recently used block replacement policy, to illustrate our verication approach. The experimental results are obtained
using the COSMOS symbolic simulator.
1 Introduction
Most digital VLSI circuits are checked for correct operation through scalar valued
simulation. In this approach, scalar bit vectors|vectors over 0 and 1|are used
as inputs to the circuit being simulated. As most real-world circuits require an
impracticably large number of scalar vectors to check for all possible execution
paths, scalar simulation alone is insucient to verify a digital VLSI circuit.
Several formal verication approaches have been suggested for the verication
of digital VLSI circuits. But, current formal hardware verication approaches
cannot accurately model low-level circuit details (e.g., charge sharing). On the
other hand, formal verication at the high level can provide useful information
(e.g., circuit state invariants) for ecient symbolic simulation at the low level,
in addition to its other advantages. Since the simulators (e.g., switch-level) can
model low-level circuit details accurately, an approach combining the capabilities
of formal verication at the high level and symbolic simulation at the low-level
can derive the advantages of both the approaches.
2
Bryant has proposed symbolic switch-level simulation for formal hardware
verication 4]. In 4, 1], it is shown that a symbolic simulator can be used to
verify (check for all possible execution paths) many non-trivial circuits. His verication approach has been applied to verify a static RAM, data paths, and
pipelined circuits 5, 6, 7]. Our verication approach for datapath and control
circuits is based on a simple hardware specication formalism called HOP 9],
a parallel composition algorithm called PARCOMP, and a switch-level simulator(COSMOS). In the past, we have studied the problem of generating minimally instantiated symbolic simulation vectors for non-regular designs, and also
developed techniques to integrate the formal verication phase with the symbolic simulation phase. The combination of formal verication at the high-level
and symbolic simulation based verication at the low-level has been proposed
in 11, 14]. We have obtained encouraging results in this regard 11, 13, 12].
In order to reduce the symbolic simulation eort, a new technique to encode
the state and input constraints as parametric Boolean expressions on the state
and input variables is incorporated in our verication approach. This technique
of using parametric Boolean expressions vastly reduces the number of symbolic
simulation vectors and the time for verication, and thus makes our verication
approach applicable to large synchronous circuits. Parametric forms have also
been used in 2, 8] for the verication of nite state machines.
Our verication approach can be applied for ecient modular verication
of large designs. Parametric Boolean expressions can be used to encode the
input and state constraints of the sub-modules of the design. Each sub-module is
individually veried. When verifying a sub-module, it is assumed that its context
operates correctly, and so the inputs expected by the sub-module are derived
directly from the input constraints of the sub-module. (The input constraints of
each sub-module are typically known to the designer (e.g. a certain internal bus
carries only unary values), and can be proved to be a consequence of the design,
during high level verication.) The outputs of the sub-module being veried are
not isolated from its context, and so the sub-module being veried is subject to
the true electrical loadings.
Since regular arrays are part of many large designs, we have developed an
approach for the verication of regular arrays which combines formal verication at the high level and symbolic simulation at the low level(e.g., switch-level).
The verication approach is based on a simple hardware specication formalism
called HOP, a parallel composition algorithm for regular arrays called PCA, and
a switch-level symbolic simulator(COSMOS). We illustrate our verication approach on the Least Recently Used(LRU) page replacement policy implemented
as a two-dimensional array of LRU cells in VLSI.
1.1 Outline of the Paper
In the following section, we present the basic idea of parametric Boolean expressions and the encoding of the state and input constraints as parametric Boolean
expressions. In Section 3, 4, and 5 we present our symbolic simulation based
verication approach and the use of parametric Boolean expressions through
3
examples. In Section 3, we show the verication of a circuit called Minmax. In
Section 4, we show the verication of a pipelined cache memory system. In Section 5, we present our verication approach for regular arrays using an LRU
array as an example. In Section 6, we summarize the results, report the ongoing
eort, and outline the future work.
2 Parametric Boolean Expressions
We explain the idea of parametric Boolean expressions with the help of an example. Suppose a circuit with four inputs in1, in2, in3, and in4 has to obey the
constraint that exactly one of these inputs be a 1. This constraint is captured
by the sum of products formula:
(in1 ^ :in2 ^ :in3 ^ :in4) _ (:in1 ^ in2 ^ :in3 ^ :in4) _
(:in1 ^ :in2 ^ in3 ^ :in4) _ (:in1 ^ :in2 ^ :in3 ^ in4)
(1)
Alternatively, this constraint is also captured by the formula:
= 9b1 b2 : ((in1 = b1 ^ b2) ^ (in2 = b1 ^ :b2) ^
(in3 = :b1 ^ b2) ^ (in4 = :b1 ^ :b2))
(2)
Formula 2 is logically equivalent to formula 1. However, formula 2 has the following advantage: the inputs in1 through in4 are expressed directly in terms
of parametric expressions over parametric variables b1 and b2. These parametric
expressions cover all possible values of in1 through in4 which satisfy the required
constraint. Each permissible combination of in1 through in4 is obtained by every value assignment to the parametric variables. By applying the parametric
expressions directly through input ports in1 through in4 during symbolic simulation, one symbolic simulation vector is tantamount to simulating the desired
combinations of in1 through in4 separately. Thus, the parametric form of input
constraints can be seen to eect a trade-o between the number of symbolic
simulation vectors (which goes down exponentially) and the number of extra
variables in symbolic input vectors (which goes up only by a logarithmic value,
at worst). We nd that this trade-o can reduce the symbolic simulation time
signicantly.
Many automatic ways to obtain the parametric form are well known, e.g.,
Boole's and Loewenheim's procedures 3]. We have improved these standard procedures in a number of ways. Some details are provided in section 6. In the rest
of the paper, we focus on the applications of the parametric form, and not on
procedures for obtaining them per se.
Constraints on the State and Input Vectors
In many situations, it is convenient to express the constraints of a circuit as a
Boolean expression on the state and/or input bit-vectors. For example, a setassociative cache would require all the tags (bit-vectors) in a set to be dierent
4
(6=) for its correct operation. Here we consider the constraints which may involve
relational operators (< > 6= =) and logical connectives (^ _). These constraints on the bit-vectors can also be expressed as Boolean expressions containing individual bit-variables of the bit-vectors, and parametric Boolean expressions can be obtained for these individual bit-variables. However, the direct
generation of parametric Boolean expressions for bit-vectors, taking advantage
of the recursive nature of the relations on the bit-vectors (e.g. 6= on an N bit
vector can be expressed using the xor function and 6= on an N ; 1 bit vector)
would be computationally more ecient. Moreover, symbolic simulation is more
ecient using the vectors generated by taking advantage of the recursive nature
of the relations on the bit-vectors.
a3 = xab
a2 = xab
a1 = xab
a0 = xab
yab + p3
yab + p2
yab + p1
yab + p0
b3 = (xab + yab) p3
b2 = xab yab q2 + xab p2
b1 = xab q1 + xab yab p1
b0 = (xab + yab) q0
Fig. 1. Parametric Boolean Expressions for A : a3 a2 a1 a0 ] > B : b3 b2 b1 b0 ]
To illustrate the generation of parametric Boolean expressions for the constraints involving bit-vectors, consider two 4-bit vectors A : a3 a2 a1 a0] and
B : b3 b2 b1 b0] and the constraint A > B . The parametric Boolean expressions
for the bit-variables of these two vectors are shown in Figure 1. The instantiations of these variables result in minimally instantiated symbolic A and B vectors
which satisfy the constraint A > B . For example, with xab = 0 and yab = 1,
we obtain A : p3 p2 1 p0] and B : p3 p2 0 q0]. We call xab and yab control
parametric variables and pi(0 i 3) and qj (0 j 2) parametric Boolean
variables.
Boolean expressions on bit-vectors containing the logical connectives ^ and _
can be rst simplied into a disjunction of conjunctive-forms (or \cubes"). Then,
the parametric Boolean expressions for each conjunctive-form can be obtained
and combined to get the parametric Boolean expression for the given Boolean
expression. The parametric Boolean expressions can be obtained using a Boolean
equation solving procedure 3, 8], but we are working on automating the generation of the parametric Boolean expressions for bit-vectors, taking advantage of
the recursive nature of the relations on the bit-vectors.
3 Verication of Minmax
In this section, we take a simple example that was also studied in 11]. Minmax
(Figure 2) 15] has three registers, MAXI, MINI, and LASTIN. It implements ve
operations, Iclr_en, Iclr_dis, Idis, Ireset, and Ien. Here, we consider Ien
5
IN
....
.
.....
....
.
MINI ....... mini-ld
MAXI .......
LASTI .......
maxi-ld
lasti-ld
....
i
....
.....
comparator
h
.. .
.....
... .
..
........... MUX ...
in-gt-maxi. . . .
..
....
comparator
.. .
....
... .
..
............ MUX ...
in-lt-mini . . .
..
ALU + SHIFTER
........
.......
.......
C
O
N
T
R
O
L
L
E
R
....... Ireset
....... Iclr-en
....... Iclr-dis
....... Idis
....... Ien
alu-sel
.. .
....
. .
... ..
... MUX .......... Osel
...
..
.....
MS ....... ms-ld
.... !OUT
Fig.2. Schematic of Minmax
operation which reads the current input, updates MAXI and MINI, with the (running) maximum value so far and the minimum value so far respectively. It also
causes an output equal to the average of the max-so-far and min-so-far to be
produced on the output port !OUT. A formal verication of Minmax was carried
out using algebraic/equational reasoning techniques 10].
3.1 Verication with Minimally Instantiated Symbolic Vectors
Since every circuit requires some state and/or input constraints to be obeyed for
its correct operation, one needs to instantiate the symbolic state and input vectors to the right degree so that the state and/or input constraints of the circuit
6
are satised in the symbolic simulation based verication of that circuit. We refer
to these vectors as minimally instantiated symbolic simulation vectors. In 11], we
approached the verication of Minmax by enumerating minimally instantiated
symbolic simulation vectors we used Prolog to generate the minimally instantiated symbolic vectors for Minmax. We generated symbolic simulation vectors
for each condition of a data dependent conditional branch, augmented with the
circuit invariant MINI MAXI. Some of the sixteen vectors generated, for the
case IN > MAXI (also taking the circuit invariant MINI MAXI into account) are
now listed:
MINI_0 = 0,0,MINI1,MINI0], IN_0 = 1,IN2,IN1,IN0], MAXI_0 = 0,1,MAXI1,MAXI0]
MINI_1 = 0,MINI2,0,MINI0], IN_1 = 1,IN2,IN1,IN0], MAXI_1 = 0,MINI2,1,MAXI0]
MINI_2 = 0,MINI2,MINI1,0], IN_2 = 1,IN2,IN1,IN0], MAXI_2 = 0,MINI2,MINI1,1]
...
MINI_15 = IN3,IN2,IN1,0], IN_15 = IN3,IN2,IN1,1], MAXI_15 = IN3,IN2,IN1,0]
Here, MINI i represents the ith vector to be loaded into the register MINI, and
so on for the other vectors. Verication time using this approach, for the cases
(IN > MAXI) and (MINI IN MAXI), are listed in Figure 5 under the circuit
name Minmax4 and the column \minimal instantiation"(this does not include
the time required to generate the minimally instantiated symbolic vectors).
3.2 Verication with Parametric Boolean Expressions
Verication of the Minmax circuit for the Ien operation required the verication
of three transitions whose state and input constraints were: IN < MINI MAXI,
MINI IN MAXI, and MINI MAXI < IN. We generated parametric Boolean
expressions for the state and input vectors satisfying these three constraints to
verify the three transitions for Ien operation of the Minmax circuit, using the
technique outlined in Section 2. The use of parametric Boolean expressions for
the verication of Minmax reduced the number of symbolic simulation vectors to
1 for each of the three constraints mentioned above and it also reduced the verication time signicantly. The verication time for Minmax using this approach
is listed in Figure 5 under the column \Parametric Expressions"(this does not
include the time required to generate the parametric Boolean expressions).
4 Verication of A Pipelined Cache Memory System
In this section we consider the verication of a pipelined cache memory system
to illustrate our technique to verify large designs.
4.1 A Pipelined Cache Memory System
The pipelined cache memory considered here has a 2-way set-associative cache
with 4 sets in the cache. The size of a block in each set is one byte and the tag
associated with each block is 3 bits. A set is selected by the two higher-order
bits of the Read/Write address.
7
Lruout
least
reset
LRU
CACHE
hit/miss1
match1
hit/miss2
match2
read
write
use
read
write
search
CAM
CONTROLLER
enter
reset
Cachebusy
readhc
Address Bus
read
write
decode add
RDRAM
dataavail/unavail
Odataunavail
busy/free
Data Bus
Fig.3. The Pipelined Cache Memory System
The least recently used(LRU) block replacement policy is used for the cache
miss on a Read or Write operation. Since each set has only two blocks, the
LRU policy is implemented by one ip-op for each set output of the ip-op
indicates the least recently used block in the corresponding set. For higher set
sizes, an LRU array would be used to implement the LRU block replacement
policy. Verication of regular arrays, with LRU array as an example, is discussed
in Section 5.1.
The main memory is updated using the write-through policy (i.e., for a Write
operation, the data is written into the main memory and the cache at the same
time). Since it takes more time to write the data into the main memory than
into the cache for a Write operation, pipelining can be achieved by allowing more
operations on the cache, while the data is being written into the main memory.
In our pipelined cache system design, pipelining is achieved by allowing one or
two Read operations (two Read operations, if the rst Read operation following
the Write operation results in a hit in the cache), while the data is being written
into the main memory for a Write operation.
The block diagram of the pipelined cache memory system is shown in Figure 3. The pipelined cache system design consists of four main modules, as shown
8
in Figure 3. The CACHE module stores the data part of all the blocks in the
cache. The LRU module contains the data storage and the logic necessary to
implement the LRU block replacement policy. The CAM module stores the tag
part of the addresses currently in the cache. It also contains the logic necessary
to implement set selection and parallel search for the tag part of the address of
a Read/Write operation. The CONTROLLER module controls the operation of
the pipelined cache memory system. This pipelined cache memory system was
implemented on a Tiny Chip (about 5,700 transistors) and the simulation les
necessary for switch-level symbolic simulation in COSMOS were derived from
the NET description of the design.
4.2 Verication Using Parametric Boolean Expressions
Symbolic simulation cannot be naively applied to verify the entire cache memory
system. For example, if symbolic vectors are applied as the address inputs and
the memory is asked to Read, all the locations covered by the symbolic address
are \simultaneously read" this can cause conicting drives of values on the data
output. Therefore, we resort to the technique of separately verifying the submodules of the cache memory. Specically, the following sub-modules have to
be separately veried: (a) the CACHE (b) the DRAM and (c) all remaining
units treated as the third submodule. Notice that the DRAM and the CACHE
modules of the pipelined cache memory system can be separately veried using
the switch-level verication techniques outlined in 5].
To verify the pipelined cache memory system, we wrote the behavioral and
structural description for the design in HOP. The inferred behavior of the design from the structural description by PARCOMP was used to determine the
Read/Write operation sequences necessary to verify the pipelined cache memory
system. Since our example cache memory system is pipelined, it is necessary to
verify its operation over the sequences of Reads and Writes listed in the middle
of Figure 5. Verication is separately carried out for each of these Read/Write
sequences. For a particular sequence, the tags in the CAM are initialized to symbolic expressions that satisfy the CAM invariant (i.e., no two tags in a set have
the same value). The Read/Write addresses are then set to symbolic expressions
that cause the particular scenario (e.g. \Write Miss ! Read Hit ! Read Miss")
to manifest.
In our rst attempt, we used Prolog to encode the constraint among the tags
of the CAM (captured by the CAM invariant) and the constraints on Read/Write
addresses required to make each scenario manifest, and ran the Prolog description to generate minimally instantiated symbolic values that satised the constraints. An impracticably large number of symbolic vectors were obtained (e.g.,
the operation sequence Write Miss ! Read Hit ! Read Hit resulted in 191232
symbolic vectors).
We then explored the idea of using parametric Boolean expressions by generating the tags in the CAM and the Read/Write addresses satisfying the constraints as described above. The constraints involved the 6= relation and the logical connective ^. The use of parametric Boolean expressions reduced the number
9
of symbolic vectors required for verication to one for all the Read/Write operation sequences beginning with a Write Hit operation and to eight for rest
of the Read/Write operation sequences beginning with a Write Miss operation.
The reason why eight symbolic vectors were required for each Read/Write operation sequence beginning with a Write Miss operation is the following: since
a Write Miss operation would write the address tag in the CAM and the data
in the CACHE, the set part of the Write address and the LRU value for the
corresponding set were required to be instantiated to scalar values there are
four possible sets, and for each set, there are two possible LRU values. The symbolic simulation and verication times required for all the Read/Write operation
sequences are shown in Figure 5.
We veried the pipelined cache memory system by supplying (using the
freeze command in COSMOS symbolic simulator) the expected inputs from
the DRAM and the CACHE module during the symbolic simulation of the
Read/Write operation sequences, assuming that the DRAM and CACHE operate correctly.
4.3 Verication of Large Cache Sizes
We believe that the technique of using parametric Boolean expressions can be
applied for the verication of large cache sizes. If the number of symbolic variables which can be used in the COSMOS symbolic simulator is a limitation for
the verication of large cache sizes, the technique of using parametric Boolean
expressions can be applied in the following way. The set part of the Write operation's address in an operation sequence can be instantiated to the scalar value
and the tags of CAM for the sets in which addresses of the Read/Write operation sequence map to can be initialized to contain the parametric Boolean
expressions satisfying the required constraints the tags in all the other sets can
be kept to the unknown value X. This would reduce the number of symbolic variables required in the verication of an operation sequence, but would increase
the number of symbolic vectors required in the verication of the operation sequence. The number of symbolic vectors required would be proportional to the
number of sets in the cache.
5 Verication of Regular Arrays
Regular arrays form an important class of VLSI circuit designs, and with
regular array designs being employed in numerous applications, the verication
of regular arrays becomes an important step in their design and implementation
as VLSI circuits. Also, it is important to develop ecient ways to handle state
and input constraints for the verication of regular arrays, because many regular
arrays are designed to operate under input constraints (e.g., \inputs must be
unary"). In this section, we show our verication approach for regular arrays
and show the application of parametric Boolean expressions in the verication
of regular arrays. The hardware implementation of LRU page replacement policy
10
COL
.................. .......
............. D
ROW
...................
........................
Q
...........................
....................
........
IN
.......
.....
.......
OUT
COL
........
.......
ROW
IN
.......
.......
.......
.......
........
.......
.......
.......
.......
.......
........
.......
.......
........
........
.....
.......
.....
.......
.....
........
....
.......
.......
OUT (LRU)
.......
.......
Algorithm: Set row reset col find row with all zeros
Fig. 4. LRU Cell and its HOP state diagram LRU Array
which we consider here maintains an array of n n bits, initially all zeros, for a
machine with n page frames. Whenever page k is referenced, the hardware sets
all the bits of the row k to 1 and sets all the bits of the column k to 0. At any
instant, the row with all bits set to 0 indicates the least recently used row, hence
the least recently used page frame.
5.1 The LRU Array
The LRU array is realized as a two-dimensional regular array of LRU cells. Each
LRU cell of the regular array consists of a state bit which can be set to 1 by
11
keeping the ROW input to 1 and COL input to 0 the state bit can be set to 0 by
keeping the COL input to 1. On rising edge of the clock, the state bit of the LRU
cell is set to 0 or 1 depending upon ROW and COL inputs. On falling edge of the
clock, the output OUT is computed as logical OR of IN input of the cell (which
is OUT output of the previous cell) and the state bit of the LRU cell. The output
of each row is logical OR of the state bits of the LRU cells in the row.
The functionality of an LRU cell is shown in Figure 4(a). A 4 4 LRU array
is shown in Figure 4(c). The operation of the LRU array relies on the input
constraint that only the ith (0 i 3) ROW bit and the ith COL bit are 1, when
page i is referenced.
The LRU array implementation of the LRU policy is veried at two levels.
At the rst level, the LRU regular array behavior determined by PCA (a parallel composition algorithm for regular arrays) is veried against the abstract
specication of the LRU array algorithm. The formal verication at this level
is based on the homomorphism relation between states of the inferred behavior
and the states of the abstract specication. We are skipping the details of this
proof in this paper.
At the second level, the transistor level implementation of the LRU array
corresponding to the structural description in HOP is veried against the behavior inferred by PCA. However, the PCA-inferred behavior cannot directly be
used as the reference specication because PCA does not take into account the
input constraints. Therefore, we rst obtain the PCA-inferred behavior and then
substitute into it the input and initial state values applied during the transistor
level symbolic simulation this forms the reference specication.
5.2 Verication with Parametric Boolean Expressions at the Inputs
The LRU array was veried for all combinations of row and column input values,
which satised the input constraint for the LRU array. Each cell in the LRU
array was initialized to a distinct symbolic variable, to verify the LRU array
for all possible state values. (this is possible as the LRU array does not have
any non-trivial circuit invariants.) We illustrate our technique to handle the
input constraint on the 4 4 LRU array, and report the results for higher sizes.
We rst used scalar values on the row and column inputs, satisfying the input
constraint, and veried the resulting new state and output values against the
expected values. It required four symbolic simulation vectors to verify the 4 4
LRU array.
Then, we encoded the input constraint as parametric Boolean expressions
on the row and column inputs, with two parameter Boolean variables b1 and
b2 as described in in Section 2. With the use of this technique, the number
of symbolic simulation vectors reduced from four to one. In general, log2 n
parametric Boolean variables are required to encode the input constraint of an
n n LRU array. In the LRU array verication, this technique reduces the
number of symbolic simulation vectors to one, independent of the size n of the
LRU array. Symbolic simulation and verication times for various sizes of the
LRU array are shown in Figure 5 under \parametric expressions as inputs".
12
No. of
IN > MAXI
MINI IN MAXI
Circuit Transistors Minimal
Parametric
Minimal
Parametric
Name
Instantiation Expressions Instantiation Expressions
No. of Total No. of Total No. of Total No. of Total
Vectors time Vectors time Vectors time Vectors time
Minmax4 1232
16 4.83
1 2.42 21 6.13
1 3.07
Operation Sequence
No. of Vectors Total time
Write Hit ! Read Miss
1
12.40
Write Hit ! Read Hit
1
9.58
Write Hit ! Read Hit ! Read Hit
1
15.0
Write Hit ! Read Hit ! Read Miss
1
17.90
Write Miss ! Read Miss
8
70.65
Write Miss ! Read Hit
8
70.0
Write Miss ! Read Hit ! Read Hit
8
185.75
Write Miss ! Read Hit ! Read Miss
8
222.03
No. of Scalar Input Parametric Expressions
Transistors Values
as Inputs
Circuit Name
No. of Total No. of
Total
Vectors time Vectors
time
LRU 4 4
448
4
0.63
1
0.27
LRU 8 8
1792
8
6.93
1
2.29
LRU 16 16 7168
16 134.63 1
34.68
Fig. 5. Experimental Results1 for Minmax, LRU array, and Pipelined Cache Memory
System
The improvement in the symbolic simulation and verication time, with the use
of parametric Boolean expressions, is signicant for the large LRU array sizes.
We nd that the use of parametric Boolean expressions can lead to signicant
reduction in the number of symbolic vectors and the verication time in the
symbolic simulation based verication of regular arrays.
6 Conclusions and Future Work
Symbolic simulation based verication is a powerful approach for the verication
of hardware designs, which can complement formal verication using theorem
provers. There is considerable incentive to make symbolic simulation based verication scale up to large circuits, as this would provide digital system designers
with a familiar tool (a simulator) to verify the designs almost automatically.
Results reported in this paper indicate that the symbolic simulation based verication approach can scale up to large circuit sizes in many cases. The main
1
Total user time is shown in seconds.
13
motivation of our work has been to discover techniques that would help expand
the class of circuits, and the circuit sizes that can be veried by the symbolic
simulation based verication approach. One of the main observations is that the
parametric Boolean expressions can be used in variety of ways for ecient symbolic simulation based verication of large synchronous circuits. Even though
the generation of the parametric Boolean expressions can involve some computational eort, the parametric Boolean expressions, once generated, can be
re-used during the debugging of the circuit being veried. In all the circuits we
have veried, the use of parametric Boolean expressions enhanced the speed of
the symbolic simulation process, mainly through a favorable tradeo between
the the number of simulation vectors (which is very much reduced) and the average number of symbolic variables per vector (which goes up only by a small
amount).
We have automated our method for the generation of parametric Boolean
expressions for the state and input constraints. We have also implemented two
known methods, namely, Boole's and Lowenheim's method, to generate parametric Boolean expressions for comparison with our method. The comparison of
our method with these methods shows that our method generates smaller parametric Boolean expressions which result in more ecient symbolic simulation.
By studying more examples, we hope to get further insight into the technique(s)
that would work best for a given example.
References
1. Derek L. Beatty, Randal E. Bryant, and Carl-Johan H.Seger. Synchronous circuit
verication by symbolic simulation: An illustration. In Sixth MIT Conference on
Advanced Research in VLSI, 1990. MIT Press, 1990.
2. Christian Berthet, Olivier Coudert, and Jean-Christophe Madre. New ideas on
symbolic manipulations of nite state machines. In Proceedings of the ICCD,
1990, pages 224{227, 1990.
3. F. M. Brown. Boolean Reasoning. Kluwer Academic Publishers, 1990.
4. Randal E. Bryant. A methodology for hardware verication based on logic simulation. Technical Report CMU-CS-90-122, Computer Science, Carnegie Mellon
University, March 1990. Accepted for publication in the JACM.
5. Randal E. Bryant. Formal verication of memory circuits by switch-level simulation. IEEE Transactions on Computer-Aided Design, 10(1):94{102, January 1991.
6. Randal E. Bryant, Derek L. Beatty, and Carl-Johan H. Seger. Formal hardware
verication by symbolic ternary trajectory evaluation. In Proc. ACM/IEEE 28th
Design Automation Conference, pages 397{402, June 1991.
7. Randal E. Bryant and Carl-Johan H. Seger. Formal verication of digital circuits
using ternary system models. Technical Report CMU-CS-90-131, School of Computer Science, Carnegie Mellon University, May 1990. Also in the Proceedings of
the Workshop on Computer-Aided Verication, Rutgers University, June, 1990.
8. Olivier Coudert, Christian Berthet, and Jean-Christophe Madre. Verication of
sequential machines using boolean functional vectors. In Proceedings of the IMECIFIP Workshop on Applied Formal Methods for Correct VLSI Design, Leuven,
Belgium, pages 179{196, November 1989.
14
9. Ganesh Gopalakrishnan. Hop: A formal model for synchronous circuits using communicating fundamental mode symbolic automata. Technical Report UUCS-TR92-006, Dept. of Computer Science, University of Utah, Salt Lake City, UT 84112,
1992. Submitted to "Formal Methods in System Design".
10. Ganesh Gopalakrishnan and Prabhat Jain. A practical approach to synchronous
hardware verication. In Proc. VLSI Design '91: The Fourth CSI/IEEE International Symposium on VLSI Design, New Delhi, India, January 1991.
11. Ganesh Gopalakrishnan, Prabhat Jain, Venkatesh Akella, Luli Josephson, and
Wen-Yan Kuo. Combining verication and simulation. In Carlo Sequin, editor, Advanced Research in VLSI : Proceedings of the 1991 University of California Santa
Cruz Conference. The MIT Press, 1991. ISBN 0-262-19308-6.
12. Prabhat Jain and Ganesh Gopalakrishnan. Some techniques for ecient symbolic
simulation based verication. Technical Report UUCS-TR-91-023, University of
Utah, Department of Computer Science, October 1991.
13. Prabhat Jain, Ganesh Gopalakrishnan, and Prabhakar Kudva. Verication of regular arrays by symbolic simulation. Technical Report UUCS-TR-91-022, University
of Utah, Department of Computer Science, October 1991.
14. Carl-Johan H. Seger and Jerey Joyce. A two-level formal verication methodology using HOL and COSMOS. Technical Report 91-10, Dept. of Computer Science,
University of British Columbia, Vancouver, B.C., June 1991.
15. D. Verkest and L. Claesen. The minmax system benchmark, November 1989.
Download