Table of Contents

Waveform Transition Graph

Wave Transition Graph (WTG) is a model used for the design of asynchronous controllers [1]. It can express a wide range of circuits and can be easily converted into STGs, which allows an easy access to all the verification and synthesis tools available for STG. In fact, the expressiveness for WTG is a subclass of STG in which concurrency and choice are mutually exclusive. Yet, the structured nature of Waveforms, one of the basic elements of WTGs, often makes them easier to understand, even for complex designs.

The following sections describe the structure of the WTG by introducing waveforms and nodal states. Guards are a particular type of sequencing that is supported by WTG and is described afterwards. Finally, some design restrictions are explained.

Waveforms

A waveform defines a partial behavior of the system between two states. They have similar semantics to Digital Timing Diagrams (DTD) and can describe concurrency between events. But, like in DTDs, no choice is allowed inside a waveform. Transitions in a waveform are defined by arrows, and they explicitly change the state for a signal. This state is represented graphically at any moment. Arcs between transitions define precedence. For example, an arc from transition t1 to transition t2 indicates that transition t2 cannot fire until transition t1 has done so. It is often possible to fire two or more transitions at a given moment, indicating concurrency.

A signal can be in four different states:

Only inputs may become unstable/stable, since output/internal signals must be exactly defined at any moment.

Matching all the possible states for a signal, there are also four types of transitions:

The next figure shows An example of a waveform with all types of transitions.

overview:wtg-waveform_transitions.svg

Transitions between stable/unstable states (i.e. stabilise, destabilise and high/low from unstable) do not represent actual changes in the logic value of a signal. These represent the fact that a signal value becomes known/unknown. Another way of reasoning about them is that an unstable state is when we do not care about its value or we want to explicitly ignore it. In this way, a signal is stable when, while we do not care about its value, we need to know that it is not changing anymore.

Waveforms must always have a preceding and succeeding nodal state (entry and exit state, respectively), which can potentially be the same. A waveform can be enabled when the preceding state has a token in it. (Note that the presence of guards might prevent a waveform from being enabled even if a token is present in the preceding state – this is discussed later.) After all the transitions in a waveform are fired, a token is set into the succeeding state.

Nodal states

The nodal states are used to represent the sequencing of waveforms in a WTG. A state is connected by arcs to any number of waveforms, but never to other states. One of the states must be defined as initial, which sets a token on it. A token in a state indicates that all its preceding waveforms are enabled, but only one of them can be fired. This allows choice of waveforms, but never concurrency. After all the transitions in a waveform have been fired, the token is passed to the exit state of the waveform.

A choice is represented when a state has two or more succeeding waveforms. There are two types of choices: common choices and guarded choices. Common choices are identical to the ones present in STGs and they are decided depending on which input signals are fired. Guarded choices, on the other hand, require a more in depth explanation.

The next figure shows the choice between two waveforms. After the waveforms are fired, the token will pass from the entry state s0 into the exit state for the waveform that is fired, s1 or s2. It can be a valid design if both waveforms had the same exit state instead of two different states.

overview:wtg-choice.svg

Guards

WTG supports the definition of guards for waveforms. They can be seen as an if condition and is decided according to the values of the signals that are guarded. For example, a waveform may have a guard for signal a and will only be enabled, in a choice, if a is set to high.

Conditions for more than one signal are also supported, but they must always be set as conjunction of literals. For example, the condition a,!b,!c would only allow a waveform to be enabled if a is set to high and b and c are set to low.

Guards can only be set in states with choices. Furthermore, the conditions for the guards in a given choice must be complete: there must be a guard for any of the possible options or values that the signals might take. This implies that if a choice has a guard for n signals, there must be exactly 2n waveforms, one for every possible value for every signal.

Finally, guards can only be set for signals that are at ‘stable’ state before the choice.

The next figure shows a complete WTG. Note how the waveforms w1-4 and w6-7 make use of guards.

overview:wtg-complete_example_guards.svg

Design restrictions

This section discusses some restrictions that arise when modeling WTGs for synthesis as asynchronous circuits. Some of them are necessary due to the structure of the model, while others are common to other models for asynchronous circuits.


[1] J. Cortadella, A. Moreno, D. Sokolov, A. Yakovlev, D. Lloyd: “Waveform transition graphs: A designer-friendly formalism for asynchronous behaviours”, Proc. IEEE International Symposium on Asynchronous Circuits and Systems (ASYNC), 2017.