ANML Documentation

STE Automata Networks

Single Input Automaton

The following example shows two similarly constructed single input automata networks: one with the all-input attribute and the other with the start-of-data attribute.

The first STE in the first automaton receives all input symbols. If, at the start of data the input sequences baba is seen, the automaton will generate an output signal from STE 3 on the last symbol.

The second automaton will not generate an output signal if the input sequence baba is seen because STE 4 remains deactivated after failing to match the first symbol b.

<state-transition-element id="1" symbol-set="a" start="all-input">
    <activate-on-match element="2"/>
</state-transition-element>

<state-transition-element id="2" symbol-set="b">
    <activate-on-match element="3"/>
</state-transition-element>

<state-transition-element id="3" symbol-set="a">
    <report-on-match/>
</state-transition-element>

<state-transition-element id="4" symbol-set="a" start="start-of-data">
    <activate-on-match element="5"/>
</state-transition-element>

<state-transition-element id="5" symbol-set="b">
    <activate-on-match element="6"/>
</state-transition-element>

<state-transition-element id="6" symbol-set="a">
    <report-on-match/>
</state-transition-element>
Figure 1. Single Input Automaton (AP Workbench)
Ste largerautomata

Multiple Input Automaton

Any STE may be designated to respond to input, whether continuously (all-input) or on the first input symbol (start-of-data). This may be a substantial design convenience compared to formal finite automata, which only permits a single state to be designated as the start state.

In the following example, STE 1 examines all input and STE 2 is activated on the first input symbol; STE 2 can also be activated by STE 1 when it recognizes a symbol. Any input stream containing 123 will generate an output signal from STE 3 and the sequence 23, where the 2 seen at start-of-data will also generate an output report from STE 3.

<state-transition-element id="1" symbol-set="1" start="all-input">
    <activate-on-match element="2"/>
</state-transition-element>

<state-transition-element id="2" symbol-set="2" start="start-of-data">
    <activate-on-match element="3"/>
</state-transition-element>

<state-transition-element id="3" symbol-set="3">
    <report-on-match/>
</state-transition-element>
Figure 2. Multiple Input Automaton (AP Workbench)
Ste multinput

Single Reporting Automaton

In the following example, STE a is automatically activated at start-of-data, and if an a followed by a b is seen, an output report will be generated by STE b.

In this automaton, STE b not only reports, but it also activates STE eat. STE eat will match any character (wildcard) as long as there is still data in the input stream, and will activate STE a.

This automaton reports match output when it sees an ab after start-of-data and will continue to report match output as long as it continues to see ab starting at every third input symbol.

<state-transition-element id="a" symbol-set="a" start="start-of-data">
    <activate-on-match element="b"/>
</state-transition-element>

<state-transition-element id="b" symbol-set="b">
    <report-on-match/>
<activate-on-match element="eat"/>
</state-transition-element>

<state-transition-element id="eat" symbol-set="*">
    <activate-on-match element="a"/>
</state-transition-element>
Figure 3. Single Reporting Automaton (AP Workbench)
Ste middlefinal

Multiple Reporting Automaton

The following automaton recognizes a sequence containing an a followed by either a 1, 2, or 3 followed by an a, generating reports on both the second and final matching symbol of the sequence. A typical use for this kind of configuration is to provide path information.

In the example, there are three possible paths to arrive at STE q4. A straightforward path is to generate a report within each possible path segment. STEs q1, q2, and q3 all generate a report on the same symbol/input cycle, so when a match at STE q4 occurs, the preceding input cycle will have produced a match from one and only of q1, q2 or q3.

<state-transition-element id="q0" symbol-set="a" start="all-input">
    <activate-on-match automaton="q1"/>
    <activate-on-match automaton="q2"/>
    <activate-on-match automaton="q3"/></state-transition-element>

<state-transition-element id="q1" symbol-set="1">
    <report-on-match/>
    <activate-on-match element="q4"/>
</state-transition-element>

<state-transition-element id="q2" symbol-set="2">
    <report-on-match/>
    <activate-on-match element="q4"/>
</state-transition-element>

<state-transition-element id="q3" symbol-set="3">
    <report-on-match/>
    <activate-on-match element="q4"/>
</state-transition-element>

<state-transition-element id="q4" symbol-set="a">
    <report-on-match/>
</state-transition-element>
Figure 4. Multiple Reporting Automaton (AP Workbench)
Ste multout

Any STE may generate an output report, and any number of STEs in an automaton can be enabled for reporting. A semiconductor device implementing ANML may have restrictions either in the total number of or distribution of report-enabled STEs, but these potential restrictions are not an intrinsic part of ANML.

Latched Automaton

A latched STE, after it matches a symbol set, continues to assert external signals—output or activate—until it is reset. Three practical scenarios are:

  • Latched report output
  • Latched activate-on-match
  • Latched report output and activate-on-match

Latched Report Output

In the following example, STE q1 reports on each symbol cycle after a 1 is seen in the input stream.

<state-transition-element id="q1" symbol-set="1" start="all-input" latch="true">
    <report-on-match/>
</state-transition-element>
Figure 5. Latched Report Output (AP Workbench)
Ste latchedautomaton

Latched-report-output STEs continue to assert the report signal that causes a match report after they match a symbol set until reset. By contrast, an unlatched-report-output STE asserts the report signal only on the symbol cycle on which the symbol set is matched.

Latched report output STEs may be useful in automata that need to simultaneously assert—at the end of a processing run—that some set of conditions has been satisfied at some point in the course of processing. A potential disadvantage of the latched STE is that report output information, after the reporting of output is latched, is generated at each symbol cycle, increasing the quantity of data that goes to match processing.

Latched with Activate-on-Match

In the following example, STE q1 activates STE q2 after a 1 is seen in the input stream and STE q2 will report if a 2 subsequently appears in the input stream. In effect, there is a "Don’t Care" condition for the input stream between an appearance of a 1 and subsequent appearance of a 2.

<state-transition-element id="q1" symbol-set="1" start="all-input" latch="true">
    <activate-on-match element="q2"/>
</state-transition-element>

<state-transition-element id="q2" symbol-set="2">
    <report-on-match/>
</state-transition-element>
Figure 6. Latched STE with Activate-on-Match (AP Workbench)
Ste latchedactivateautomaton

Latched STEs with activate-on match continue to assert the activation signal after they match a symbol set until reset. By contrast, an unlatched STE with activate-on-match only activates connected STEs on the symbol cycle on which the symbol set is matched.

Latched STEs with activate-on-match may be convenient to use in automata networks with "Don’t Care" conditions between STEs.

Latched Report Output and Activate-on-Match

In the following example, a report is generated if STE q2 activates STE q1, but not if q2 is activated through other paths such as that from q3.

Latched-report-output STEs with activate-on-match continue to assert the report signal and activate connected STEs after they match a symbol set until reset. By contrast, a report-output STE with activate-on-match asserts the report signal and activates connected STEs only on the symbol cycle on which the symbol set is matched.

An STE with both an activate-on-match and reporting latched may be useful in some complex automata networks.

<state-transition-element id="q1" symbol-set="1" start="all-input" latch="true">
    <report-on-match/>
    <activate-on-match element="q2"/>
</state-transition-element>

<state-transition-element id="q2" symbol-set="2">
    <report-on-match/>
</state-transition-element>

<state-transition-element id="q3" symbol-set="3" start="all-input">
    <activate-on-match-element="q2"/>
</state-transition-element>
Figure 7. Latched-Report-Output STE with Activate-on-Match (AP Workbench)
Ste latchedoutputactivate