Practical Generalizations of Asynchronous State ... - Semantic Scholar

2 downloads 247 Views 106KB Size Report
burst-mode specifications, a class of asynchronous finite-state ma- ..... transfer is complete when the receiver negates Req, AckLine and. Done and the sender, in turn, .... + fires, the output x changes to 0, and the machine goes to S3. (we defer ...
Practical Generalizations of Asynchronous State Machines  Kenneth Y. Yun

David L. Dill

Steven M. Nowick

Computer Systems Laboratory Departments of Electrical Engineering and Computer Science Stanford University Stanford, CA 94305 Abstract Based on a study of systems requirements, we propose to extend burst-mode specifications, a class of asynchronous finite-state machine specifications that allows multiple-input changes. The proposed extensions allow concurrent transitions of inputs and outputs and input choices based on “level” conditional signals. We present an example that features the proposed extensions and point out the deficiencies of existing specification styles, in particular, STG and original burst-mode. We analyze the impact of these extensions on the hazard-free implementation of the 3D machine and its synthesis procedure. We present the results of experiments using the modified 3D synthesis tool and show that the performance numbers are consistent with examples of comparable complexity not requiring the extensions.

1

Introduction

Recently, many well-known advantages of asynchronous designs have been reaffirmed partly due to the advancement of VLSI technology and partly due to the recognition of the possibility that the CAD tools can be used to to alleviate the designers from being overwhelmed by complex tasks, such as hazard-free implementation and critical-race-free state assignment. As a result, a flurry of new asynchronous design styles and automatic synthesis tools [1, 4, 5, 6, 9, 12, 13, 14, 17, 21, 22] have been introduced to exploit these advantages in system design. There are roughly three distinct categories of asynchronous synthesis methods available today: Transformations from HDL descriptions [1, 4, 12, 15], STG (Signal Transition Graph) / SG (State Graph) synthesis [2, 5, 9, 13, 14, 21], and multiple-input change AFSM synthesis [6, 17, 23]. Although asynchronous designs have been applied both to data path and control circuits, we believe that the highest payoff will come from applications to interface circuits and controllers. There are two questions we must consider: “What is required in a class of specifications to describe the signalling and timing constraints of most interfaces and controllers?” and “What specifications can be implemented efficiently and correctly by automatic synthesis tools?” In answering these questions, we have examined a number of interfaces and controllers — in particular, the examples from the HP Post Office [7] and industry-standard backplane and local bus controllers. We have determined that mechanisms to handle a moderate degree of concurrency and to select alternative responses based on conditional signal levels as well as signal transitions (events) are essential, and that I/O-mode operation [2, 5, 6, 9, 12, 13] is not necessary in most applications. Then we examined existing specification styles, in particular, STG and burst-mode. The currently accepted form of STG is an interpreted free-choice Petri net [5, 9, 13, 14, 21]. The strong suit of the STG is its ability to express concurrency. Its main weakness is the awkwardness in specifying choices. In a free-choice STG specification, the environment can steer the future behavior of the machine only by selecting an input transition among a number of conflicting choices. It cannot  This work was supported by the Semiconductor Research Corporation, Contract no. 92-DJ-205, and by the Stanford Center for Integrated Systems, Research Thrust in Synthesis and Verification of Multi-Module Systems.

handle choices based on a sequence of events or choices based on signal levels. A burst-mode specification is a variation of a Mealy machine that allows multiple-input changes in a burst fashion — in a given state, when all of a specified set of input transitions arrive, the machine generates a set of output changes and moves to a new state. The specified input transitions can arrive in arbitrary order (thus allowing input concurrency), and the outputs are generated concurrently. The advantages of a burst-mode specification over STG specifications are that it is similar to the synchronous Mealy machine designers are familiar with, that the input choice is more flexible than that of the STG, and that the state encoding is more flexible in the implementations. Burst-mode specifications have been very useful in specifying large, practical controllers, such as a SCSI data transfer protocol controller [19] and an asynchronous high performance cache controller [16]. The main practical disadvantage is that it does not allow input transitions to be concurrent with output transitions. The input choice mechanism, albeit more flexible than the STG, is still primitive. For example, it cannot handle choices between two sets of concurrent events if one set is a subset of the other — the subset restriction. Therefore, we propose to extend the burst-mode specification (much of the formalism used both in the original burst-mode and in the proposed extensions is derived from the asynchronous state machine specification style and the examples from the Post Office by Davis et al. currently with HP Labs) in two ways: to allow concurrent transitions of inputs and outputs and to allow input choices based on “level” conditional signals. The results are a design style that better supports “real-life” systems design requirements and incorporation of these generalizations in a hazard-free implementation (called the 3D asynchronous state machine).

2

Extending Burst-mode Specifications

A burst-mode asynchronous finite state machine is specified by a state diagram [17, 23, 22], which consists of a finite number of states, a set of labelled arcs connecting pairs of states, and a start state. Each arc is labelled with a set of possible signal transitions. Each transition consists of an input burst (a non-empty set of input transitions) and an output burst (a set of output transitions). In a given state, when all the inputs in the specified input burst have changed value, the machine generates the corresponding output burst and moves to a new state. Only specified input changes may occur, and input transitions may arrive in arbitrary order. We propose two extensions to burst-mode specifications:

 

“Directed-don’t-care” transitions of inputs in input bursts are allowed provided that at least one input transition in the input burst is guaranteed to fire. Input choices based on “level” conditional signals as well as events (transitions) are allowed.

2.1 Allowing Directed-don’t-care in Input Burst Definition 1 Signal transitions:



s+ denotes that s changes monotonically from 0 to 1 (if s initially 0) or remains 1 (if s initially 1); s? denotes that s changes monotonically from 1 to 0 (if s initially 1) or remains 0 (if s initially 0). A signal transition s+ or s? is said to be

burst defined in the previous section) to make input choices more flexible. A conditional input burst consists of a conditional clause, which restricts the validity of the input burst, and an input burst (as defined previously). Conditional clauses s+ and s? denote “if input signal s = 1” and “if input signal s = 0” respectively. Thus,

h i

terminating. 1, or remains 1 if the next terminating transition of s is s , and that s remains 1, monotonically changes from 1 to 0, or remains 0 if the next terminating transition of s is s? . A signal transition s is said to be a directed-don’t-care.



A terminating transition is compulsory if there is no directeddon’t-care transition of the same signal in the states immediately preceding the current state.

Informally, the terminating transition of a signal means that the signal changes to the specified level, if it is not already at the specified level, and the directed-don’t-care transition of a signal means that the signal eventually changes to the level specified by the next terminating transition. Note that the directed-don’t-care does not mean that the signal can oscillate freely between 1 and 0 (as in a true don’t care). In an extended-burst-mode specification, the polarities of terminating transitions of a signal must alternate. For example, the firing sequences, a+ a? , a+ a a? and a? a a a+ , are valid, but a+ a+ is not. In extended-burst-mode specifications, an input burst is a nonempty set of input transitions (terminating or directed-don’t-care), at least one of which must be a compulsory transition. In the original burst-mode specifications, the output burst must not be generated until all the specified inputs in the input burst have changed value. In extended-burst-mode specifications, the output burst must not be generated until all the terminating transitions in the input burst have fired. In the original burst-mode specifications, every state has a unique entry point described by input and output values. In extended-burst-mode specifications, certain states may have multiple valid entry points due to the directed-don’t-cares in the predecessor states’ input bursts. We require that the set of possible entry points into a state from every predecessor state be identical — the common-entry-set requirement. For example, the set of valid entry points to S1 from S0 in figure 1a is 01011; 01111 , but from S2 to S1 it is 01011 . Thus this specification is illegal. A legal specification illustrating a common-entry-set is shown in figure 1b.

f

g

f

g

abcxy = 00001

abcxy = 00001

0

0 b+c* / x+

b+c* / x+ 1 a−c− / x+y+

1 a+c+ / x−y−

2 11100 (a) no common−entry−set

a−c* / x+y+

a+c+ / y− 2

c− / x−

3

11110 11000 (b) common−entry−set

Figure 1: Example (Common-entry-set). 2.2 Conditional Input Burst In the original burst-mode specifications, the input choices are limited to the distinguishable set of events (signal transitions) — the selection based on the input signal level is not supported. We propose to eliminate this restriction incorporating conditional input bursts described below as well as the unconditional ones (the input

 hs+ ia+ =x+ denotes “if s

=

1 when a+ fires, then x+ is

 hs? ia+ =y? denotes “if s

=

0 when a+ fires, then y? is

enabled to fire.”

 s denotes that s remains 0, monotonically changes from 0 +to

h i

enabled to fire.”

The signals specified in the conditional clause (called conditional signals) must be set up (environmental constraint) before any compulsory transition in the input burst fires in the same spirit as the data must be set up before the rising transition of the clock in the rising edge triggered D flip-flop. The setup time depends on the implementation. The hold time is satisfied by the fundamental mode environmental constraint. Unlike data signals in synchronous systems, conditional signals in the extended-burst-mode specifications must be set up monotonically. The conditional signals are treated as event signals elsewhere in the specification. We require that if an input burst in a state is conditional, all other input bursts in the same state are also conditional. Furthermore, we restrict the number of conditional signals per conditional clause to one. Recall that in the previous section we required that the polarities of the terminating transitions of a signal alternate. This alternating sequence is reset by a conditional clause containing the signal; thus the sequence starts anew following the conditional clause. A conditional signal may be specified as a directed-don’t-care in the states immediately preceding the conditional clause (the Done signal in figure 3 is an example of a directed-don’t-care terminated by a conditional clause). In the original burst-mode specifications, we disallowed any input burst in a state from being a subset of another input burst in the same state to avoid ambiguity — the subset restriction. A similar restriction called the distinguishability constraint exists for the extended-burst-mode. Let Ti min be the set of compulsory transitions in the input burst Ti and Ti max be the set of all possible transitions in Ti . The distinguishability constraint for the extendedburst-mode is: for every pair of input bursts i and j from the same state, either the conditional clauses are mutually exclusive, or Ti min Tj max . For instance, the input bursts from S0 in figure 2a are legal because s+ and s? are mutually exclusive. However, the input bursts from S0 in figure 2c are illegal because the conditional clauses a+ ; b+ . Likewise, the are not mutually exclusive and b+ input bursts from S0 in figure 2b are illegal because the set of all possible transitions for the unconditional input burst a+ b is a+ ; b+ and b+ a + ; b+ .

6

f gf

f

g

f gf

abxy = 0000 0 a+b+ / x+ 1

b+ / y+ 2

(a)

g

g

abxy = 0000 0 a+b* / x+

b+ / y+

1

2

abxy = 0000 0 a+b+ / x+ 1

(b)

b+ / y+ 2

(c)

Figure 2: Distinguishability Constraints. 2.3 Example We demonstrate the usefulness of the conditional input burst coupled with the directed-don’t-cares, using the core of a controller

from the HP Post Office benchmark suite [7], sbuf-send-pkt2, that manages the packet send protocol (see figure 3). First, we describe the protocol. Initially, the receiver requests the packet transfer by asserting Req. The sender then places a line of data on the bus and asserts SendLine. When the receiver receives the line, it acknowledges the sender by asserting AckLine; the sender, in turn, negates SendLine. The receiver normally negates AckLine, terminating a line transfer cycle. This four-phase handshaking protocol continues until the receiver decides to terminate the packet transfer by asserting Done and negating AckLine concurrently after the sender negates SendLine. When the sender detects AckLine being negated, it places a line on the bus and asserts SendLine. After the receiver acknowledges the final line transfer by asserting AckLine, the sender, having detected Done signal asserted (stable by this time), acknowledges the completion of packet transfer by asserting Ack and negating SendLine. The packet transfer is complete when the receiver negates Req, AckLine and Done and the sender, in turn, negates Ack.

0 Req− AckLine− Done− / Ack−

Req+ Done* / SendLine+

AckLine+ / SendLine−

1

AckLine+ / SendLine− Ack+

3 AckLine− Done* / SendLine+

2 Req Ack SendLine AckLine

3

3D Implementation

A 3D asynchronous finite state machine [23, 22] is a 4-tuple (X; Y; Z;  ) where X is a set of primary input symbols, Y a set of primary output symbols, Z a (possibly empty) set of internal state variable symbols, and  : X Y Z Y Z a next-state function. The hardware implementation of the 3D state machine is a twolevel AND-OR network where outputs (and additional state variables when necessary) are fed back as inputs to the network. There are no explicit storage elements such as latches, flip-flops or Celements in a 3D machine; only static feedback is used to maintain memory. The 3D implementation of the burst-mode specification is obtained from the 3-dimensional function map called the next-state table, a 3-dimensional tabular representation of the next-state function . The next-state of every reachable state must be specified; the remaining entries of the next-state table are considered don’t-cares. The operation of the 3D state machine is similar to a Mealymode synchronous state machine. A machine cycle consists of 3 phases: input burst followed by output burst followed by state burst. During the idle state, the machine waits for an input burst to occur. The input burst may be conditional or unconditional. The conditional signal must be set up by some implementation — dependent mininum delay before the first compulsory transition arrives. When the last terminating transition of the input burst arrives, an output burst takes place. The state burst, if required, immediately follows the output burst, completing the 3-phase machine cycle. The next set of compulsory transitions may not arrive until the machine is stabilized (fundamental-mode environmental assumption). 3.1 Next-state Table Generation We build the next-state table by assigning a next-state to each reachable state. If the (extended) burst-mode specification does not have a unique next-state code for each reachable state, new “layers” of the next-state table are added so that the final construction has the unique next-state codes.

  ! 

Done

abc

setup time

xy

Figure 3: Example (sbuf-send-pkt2-core). It is impossible or awkward at best to specify the controller managing this protocol using existing specifications that can be automatically synthesized: burst-mode and free-choice STG. The difficulty stems from having to distinguish the concurrent transitions Done+ AckLine? from AckLine? alone (note that AckLine? Done+ ; AckLine? ). This controller cannot be specified in burst-mode without violating the subset restriction. The free-choice STG cannot model this behavior for the same reason. Although it is possible to specify this type of behavior using variations of currently accepted form of STG (free-choice STG), the resulting specification is difficult to understand and not always synthesizable. Chu suggested in chapter 8 of his thesis [5] the possibility of a structural extension of the free-choice STG called a controlled-choice STG. So far, there is no known synthesis tool that handles controlled-choice STGs. Moon et al. [14] proposed to allow a “null” or “dummy” transition to enhance the syntactic power of free-choice STGs. Here again, the existing synthesis tools have difficulty coping with a certain class of specifications with “null” transitions. SIS, for example, cannot handle the state encoding (for the specifications without the complete state coding property such as this controller) if the fanout of a “null” transition is a subset of the fanout of another “null” transition from the same place [8, 10]. The extended-burst-mode specification handles this by treating Done as a conditional signal to be sampled by AckLine+ . Since Done+ may fire at any time (or not at all) after SendLine? fires, Done is specified as a directed-don’t-care in S3 .

f

g

f

g

000 001 011 010 110 111 101 100

00

000 00

01

00

01

01

01

00

01

10

10

01

012 01

01

01

11 00

10

01

10 1 10 10

10

q=0

10

11

q=1

01 003 00

00

10

10

abc = Req AckLine Done xy = SendLine Ack

Figure 4: Next-state Table (sbuf-send-pkt2-core). Example (sbuf-send-pkt2-core)

In S0 , the machine is idle waiting for the input burst a+ c; once a becomes 1 (regardless of c), the output x changes monotonically to 1. Thus the next xy entries for abcxy = 00x00 and 10xx0 are specified to be 00 and 10 respectively. When x stabilizes to 1, the machine is in S1 , where it awaits the conditional input burst c? b+ or c+ b+ . If c remains 0 until b+ fires, the output x changes to 0, and the machine goes to S3 (we defer discussing this path until later). On the other hand, if c goes to 1 some setup time before b+ fires, the outputs xy change to 01 after b becomes 1, and the machine goes to S2 . The next xy for abcxy = 10110 is specified 10 so that the outputs remain unchanged while the conditional signal is being set up; the next xy

h i

h i

!

1

In a sequential network, feedback variables as well as primary inputs must be considered as inputs to the network. 2 In some cases, due to the input burst if the trailing output burst is an empty set. 3 In 3D machines, we minimize the feedback delays with a simple set of one-sided timing constraints [23].

the state variables — the state variables remain unchanged until the last output transition of the output burst (note that every output and state variable transition is compulsory). The set of states (defined by input, output and state bit vectors) before and after the final terminating transition are called the initial-region and final-region. The outputs remain at the levels before the burst in the initial-region and change to the levels specified by the output burst in the finalregion. The on-set and off-set of an output are then unions of some initial-regions and final-regions. To avoid static logic hazards during multiple-input changes in the two-level AND-OR network implementing an output function [23, 18, 3], we require that:

 

If the output is specified to be 1 in both the initial- and finalregion, a single cube must contain both the initial- and finalregion. If the output is specified to be 1 only in the initial-region or only in the final-region, the on-set region must be covered by a set of maximal cubes, which in effect forces a single input change going from the initial-region to the final-region.

In order to discuss eliminating dynamic logic hazards, we need to define some terminology. Definition 2 Stable-states:

 

The initial-stable-state of a burst is the state of the machine before the burst with each input, output and state variable at the level following the last terminating transition before the current burst (directed-don’t-cares are assumed not changed). The final-stable-state of a burst is the state of the machine after all the terminating transitions in the burst have fired, with every directed-don’t-care input at the level following the ensuing terminating transition.

Definition 3 Transient-states:

 

The initial-transient-states of a burst are the states traversed during the burst preceding the last terminating transition of the burst (excluding the initial-stable-state). The final-transient-states of a burst are the states traversed during the burst following the last terminating transition of the burst (excluding the final-stable-state). a+b* / x+y+ Final transient state a+ b+ 00

Initial stable state

01

10

Initial stable state 00

00

11 x+ 01

01

y+

b+ a+ Initial Final 10 transient stable y+ state state 11 Input Burst

b+

Initial transient states

10 x+ 11

Final stable state

Output Burst

for abcxy = 111xx are specified 01 so that the outputs xy change monotonically to 01 once enabled. The machine, in S2 , awaits the input burst a? b? c? . When all the inputs change to 0, the output y changes to 0, and the machine is back in S0 . The next xy for abcxy = 1xx01, x1x01 and xx101 are specified to be 01 because the outputs must remain unchanged until the final terminating transition of the input burst fires. The next xy for abcxy = 00001 is 00. Alternatively, suppose c remains at 0 when b+ fires (the machine in S1 ). Once b goes to 1, x changes to 0, and the machine goes to S3 , and wait for the input burst b? c. The outputs xy must remain 00 until the compulsory transition b? occurs. Attempting to specify the next xy for abcxy = 11100 to be 00, we run into a conflict because the next xy for abcxy = 11100 had already been S2 ). In this case, we back up to the state specified 01 (during S1 following the last output burst (abcxy = 11000) and change the internal state (state burst q+ ) as shown in figure 4. When the state variable q stabilizes to 1, the machine is in state S3 . In S3 , the machine waits for the input burst b? c . When b becomes 0 (regardless of the state of c), x goes to 1. Once x becomes 1, state variable q goes to 0, and the machine returns to S1 . The next xy for abcxy = 11x00 (in layer q = 1) are specified 00 so that the outputs xy remain unchanged until the compulsory transition b? fires. The next xy for abcxy = 10xx0 are specified 10 so that x changes monotonically to 1 once enabled. Note that c+ may fire at any time before b+ fires in S1 or may not fire at all. 3.2 Eliminating Hazards 3.2.1 Eliminating Sequential Hazards If a transition between layers (state burst) requires multiple state bit changes, the machine traverses intermediate layers before it settles down at the final layer. In 3D machines, a critical race is present if the transient states during a layer transition have different nextstates from the final-stable-state. We insure that the machine is free of critical races by encoding layers so that no input or output burst intersects the transient states of layer transitions and by forcing all transient states during a layer transition to have the same next-states as the final-stable-state. 3.2.2 Eliminating Combinational Hazards We can classify all hazards in combinational circuits into two categories: function hazards and logic hazards. Function hazards are due to an incorrectly specified function during multiple-input changes.1 Logic hazards arise due to delay variations of the physical gates and wires [23, 17, 18, 20] despite the correct function. In 3D machines, we preclude the presence of function hazards by correctly specifying the next-state of every reachable state [23]. The requirements to insure hazard-free combinational logic are presented in [23, 18]. Initially, we assume that all input bursts are unconditional. In 3D machines, the outputs change in response to the input bursts and remain constant while the fed-back outputs and state variables change. Likewise, the state variables change due to the output bursts2 and remain constant while the fed-back state variables change. Assuming sufficient delays in the feedback paths for outputs and state variables, we can disregard the interactions between inputs and feedback variables (i.e., there are no essential hazards [23]).3 We can then view each burst (input, output or state) as a multiple-input change to the output combinational logic. The outputs are assumed to be stable before and after each burst. The (extended) burst-mode specifications mandate that outputs remain unchanged until the last (terminating) input transitions of the input burst. The 3D implementation enforces the same rule on

Final transient state

Figure 5: Stable / Transient States. Consider an input burst a+ b in figure 5. The last terminating transition of b preceding this input burst and the next terminating transition of b following this input burst are assumed to be b? and b+ respectively. In this example, the initial-stable-state and final-stable-state of the input burst are ab = 00 and ab = 11; the

initial-transient-state and final-transient-state of the input burst are ab = 01 and ab = 10. Even if the requirements to avoid static logic hazards were met, the output logic may still exhibit glitches during dynamic transitions, in particular, if a “stray” on-set cube intersects an initialtransient-state during the 1 0 transition of an output. This is because the stray cube may glitch (0 1 0) and the glitch may propagate to the output (1 0 1 0 dynamic hazard) [23, 17]. Likewise, if a “stray” on-set cube intersects a final-transient-state during the 0 1 transition of an output, the stray cube may glitch (0 1 0) and the glitch may propagate to the output (0 1 0 1 dynamic hazard) [18]. The following is a summary of the on-set covering requirements for output logic during the unconditional input bursts.

??

? ? ? ? ? ?

?

???

?

1. For a 1 1 transition of output: The input burst must be covered by a single cube; the output burst must be covered by a single cube.

?

2. For a 0 1 transition of output: The output burst must be covered by a single cube. Any on-set cube that intersects any final-transient-state of an input burst must also include the final-stable-state of the input burst if the input burst enables a 0 1 transition of the output.

?

?

3. For a 1 0 transition of output: The input burst containing nc terminating transitions must be covered by nc cubes each of which contains exactly one literal corresponding to a unique terminating input in the input burst and does not contain any literal corresponding to a directeddon’t-care. Any on-set cube that intersects the initial-transient-states of an input burst must also include the initial-stable-state of the input burst if the input burst enables a 1 0 transition of an output.

?

The on-set covering requirements for output logic during the output and state bursts is the same as the requirement 1 above. A similar set of on-set covering requirements exist for state logic. The covering requirements for the example (sbuf-send-pkt2-core) is shown in figure 6. abc = Req AckLine Done xy = SendLine Ack abc abc xy 000 001 011 010 110 111 101 100 xy 000 001 011 010 110 111 101 100 0 0 1 1 00 0 0 00 0 0 0 1 0 0 01 0 1 1 1 1 1 1 1 q = 0 01 0 0 0 0 0 0 0 0 0 11 11 1 0 0 1 1 10 10 0 1 0 0 10 q = 1 11 01 00

1

1

0 0 1 Next x = a b’ y’

1

10 11 01 00

0

0

0

0

0

0

Next y = a y + b y + c y + q’ b c

Figure 6: Covering Requirements (sbuf-send-pkt2-core). Now let us consider conditional input bursts, s+ T1 and Recall that the conditional signal s must be set up before every compulsory transition of both T1 and T2 . For the path in which the conditional signal requires no transition, say s? T2 with no loss of generality, the covering requirement is the same as that of the unconditional one. For the path s+ T1 , we can divide the burst into two parts (or bursts): (1) the set of all non-compulsory transitions (including s+ ) and (2) the unconditional part of the burst, T1 in this case. In the first burst,

hs? iT2 , emanating from a state. h i

h i

h i

?

?

the outputs remain constant (0 0 or 1 1 transition). In the second burst, the outputs change to the specified values after the last terminating transition of T1 . Since the first burst always includes the transition of a conditional signal and the conditional signal is set up before the compulsory transitions of T1 and T2 , the product terms that cover the second burst always turn on before the first burst cover turns off for a 1 1 transition of an output — no 1 0 1 static hazard. Figure 7 shows the covering requirements. The smallest on-set cubes used to satisfy the hazard-free covering requirements discussed above are called required cubes [18]. An on-set cover for a logic function is a set of cubes such that every cube covers a minterm but not off-set vertex and every minterm is covered by at least one cube in the cover. A logic hazard is present in an implementation if there exists a required cube not contained in any cube in the cover. The required cover for a logic function is a set of required cubes.

?

??

3.3 3D Automatic Synthesis 3.3.1 Definitions A 3D next-state table is said to have the unique next-state code (UNC) property iff every entry in the table has a unique next-state. A next-state table with the UNC property has the proper unique next-state code (PUNC) property iff every required cube for every output or state variable logic, that intersects an initial-transientstate of a burst enabling a 1 0 transition of an output or a state variable, also contains the initial-stable-state of the burst. Note the asymmetry between the 0 1 and 1 0 transition of outputs. It is impossible for a required cube to intersect a finaltransient-state of an input burst enabling a 0 1 transition of an output without actually being a subset of the required cube covering the output burst. However, it is entirely possible for a required cube to intersect an initial-transient-state of an input burst. This is because the next-states of final-transient-states (for the 0 1 transition of output) are different from the current states, but the next-states of initial-transient-states are the same as the current states.

?

?

?

?

?

3.3.2 Procedure The synthesis procedure is described in [22]. We build a nextstate table from a specification so that the final 3D construction satisfies the PUNC property and assign codes to the layers of the next-state table in a critical-race-free manner. We then generate an unminimized hazard-free cover for each output and state variable function by ORing required on-set cover of every burst. Logic minimization is performed using exact algorithms for hazard-free logic, implemented in an automated logic minimizer [18].

4

Experimental Results

The synthesis procedure is completely automated (coded in C). We have conducted numerous experiments for both the original burstmode and the extended-burst-mode specifications. The synthesis tool produces efficient results in terms of both the area and the latency. The latency is a delay from the last input transition of an input burst to the last transition of the resultant output burst. The cycle time is the minimum delay (environmental constraint) from the last input transition of an input burst to the first input transition of the next input burst. Experimental results for some extendedburst-mode specifications are shown in table 1. The latencies and the cycle times are evaluated using a 0.8m CMOS standard cell library, developed for the Verilog simulator by the Torch group at Stanford University [11]. The library cells were characterized using the SPICE simulator under military worst-case conditions (4.5V power supply, 125C) and derated for the nominal case (5V, 25 C).

5

Conclusions

We described two extensions to the burst-mode specifications to allow more concurrency and to make input choices more flexible. The notions of directed-don’t-care and conditional input burst were introduced. We analyzed the impacts of these extensions on the hazard-free implementation of the 3D machine and its synthesis

abx = 001 0 a+b+ / a+ / x− 1

2

1

s=1 s=0 ab x 00 01 11 10 10 11 01 00 0 0 1

1

1

0 1 1 S 0−S 1

1

1

1

1

0

0 1

abx = 001 0 a+b* / a*b+ / x−

1

0

0 1 1 S 0−S 2

2

1

s=0 s=1 ab x 00 01 11 10 10 11 01 00 0 0 0 1

1

1

0

0

0

0

0

0

abx = 0−1 0 a+b+ / a+b+ / x−

1 1 1 S 0−S 1

1

1

1 1 1 S 0−S 2

1

1

s=0 s=1 ab x 00 01 11 10 10 11 01 00 0 0 1

1

1

1

1

1

0

1 1 1 S 0−S 1

1

1

1 1 1 S 0−S 2 (c)

1

1

0

0

(a)

2

0

(b)

Figure 7: Covering Requirements (Conditional Input Bursts).

D-FF pe-rcv-ifc ram-read-sbuf sbuf-ram-write sbuf-send-pkt2

Specification States / Primary Transitions In Out 4 6 2 1 12 15 4 4 8 8 5 5 6 6 5 5 7 10 4 2

State Vars 1 2 0 1 2

Implementation Product Terms Literals Output Total Output Total 4 8 9 21 14 26 37 72 13 13 22 22 14 18 33 41 6 11 17 30

Latency 1.8ns 2.1ns 1.7ns 1.9ns 2.2ns

Cycle Time 2.3ns 3.8ns 1.7ns 3.2ns 3.5ns

Table 1: Experimental Results. procedure. Finally, we performed experiments on 5 new examples (4 from HP Post Office suite), all of which feature one or both of the extensions, using the modified 3D synthesis tool. The performance numbers are consistent with the examples of comparable complexity (not requiring the extensions). In the future, we plan to develop major examples featuring these extensions. Acknowledgement The authors would like to thank Bill Coates of HP Labs and Luciano Lavagno of UC Berkeley for many stimulating discussions.

[12] A. J. Martin. Programming in VLSI: From communicating processes to delayinsensitive VLSI circuits. In C. A. R. Hoare, editor, UT Year of Programming Institute on Concurrent Programming, Addison-Wesley, 1990.

References

[16] S. Nowick, M. Dean, D. Dill, and M. Horowitz.The design of a high-performance cache controller: a case study in asynchronous synthesis. In 1993 Hawaii International Conference on Systems Science.

[1] V. Akella and G. Gopalakrishnan. SHILPA: A high-level synthesis system for self-timed circuits. In ICCAD-92. [2] P. Beerel and T. Meng. Automatic gate-level synthesis of speed-independent circuits. In ICCAD-92. [3] Jon G. Bredeson and Paul T. Hulina. Elimination of static and dynamic hazards for multiple input changes in combinational switching circuits. Information and Control, 20:114–224, 1972. [4] E. Brunvand and R. F. Sproull. Translating concurrent programs into delayinsensitive circuits. In ICCAD-89. [5] T.-A. Chu. Synthesis of self-timed VLSI circuits from graph-theoretic specifications. Technical Report MIT-LCS-TR-393, 1987. [6] T.-A. Chu. Automatic synthesis and verification of hazard-free control circuits from asynchronous finite state machines. In ICCD-92. [7] A. Davis, W. Coates, and K. Stevens. The Post Office experience: designing a large asynchronous chip. In 1993 Hawaii International Conference on Systems Science. [8] Luciano Lavagno, 1992. Private communication. [9] L. Lavagno, K. Keutzer, and A. Sangiovanni-Vincentelli. Algorithms for synthesis of hazard-free asynchronous circuits. In DAC-91. [10] L. Lavagno, C. Moon, R. Brayton, A. Sangiovanni-Vincentelli. Solving the state assignment problem for signal transition graphs. In DAC-92. [11] J. Maneatis and D. Ramsey, 1992. Private communication.

[13] Teresa H.-Y. Meng. Synchronization Design for Digital Systems. Kluwer Academic, 1990. [14] C. W. Moon, P. R. Stephan, and R. K. Brayton. Specification, synthesis, and verification of hazard-free asynchronous circuits. In ICCAD-91. [15] C. Myers and T. Meng. Synthesis of timed asynchronous circuits. In ICCD-92.

[17] S. M. Nowick and D. L. Dill. Synthesis of asynchronous state machines using a local clock. In ICCD-91. [18] S. M. Nowick and D. L. Dill. Exact two-level minimization of hazard-free logic with multiple-input changes. In ICCAD-92. [19] S. M. Nowick, K. Y. Yun, and D. L. Dill. Practical asynchronous controller design. In ICCD-92. [20] S. H. Unger. Asynchronous Sequential Switching Circuits. New York: WileyInterscience, 1969. [21] P. Vanbekbergen, F. Catthoor, G. Goossens and H. De Man. Optimized synthesis of asynchronous control circuits from graph-theoretic specifications. In ICCAD90. [22] Kenneth Y. Yun and David L. Dill. Automatic synthesis of 3D asynchronous state machines. In ICCAD-92. [23] K. Y. Yun, D. L. Dill, and S. M. Nowick. Synthesis of 3D asynchronous state machines. In ICCD-92.