ASYNCHRONOUS FINITE STATE MACHINE OUTPUT MASKING WITH CUSTOMIZABLE TOPOLOGY
20240176384 ยท 2024-05-30
Assignee
Inventors
Cpc classification
G06F1/08
PHYSICS
International classification
Abstract
An AFSM core includes a destination state-cell generating a destination state-signal, and a source state-cell generating a source state-signal and causing transition of the source state-signal in response to an acknowledgement indicating transition of the destination state-signal. The acknowledgment is communicated through a delay. A state-overlap occurs between transition of the destination state-signal and transition of the source state-signal. An output-net includes a balanced logic-tree receiving inputs, including the destination state-signal, from the core, and an additional logic-tree cascaded with the balanced logic-tree to form an unbalanced logic-tree so an input to the additional logic-tree is provided by output from the balanced logic-tree and another input receives the source state-signal. Tree propagation time occurs between receipt of a transition in the destination state-signal by the balanced logic-tree and a resulting transition of the output from the balanced logic-tree. The delay circuit causes the state-overlap to exceed the tree propagation time.
Claims
1. An asynchronous finite state machine, comprising: an input net; a core receiving inputs provided by the input net and comprising: a plurality of state cells including at least a source state cell configured to generate a source state signal and a destination state cell linked to the source state cell through an arc circuit, the destination state cell configured to generate a destination state signal; wherein the source state cell is configured to cause a transition in the source state signal in response to a transition in the destination state signal communicated to the source state cell through a feedback path; wherein a state overlap time is an elapsed time between transition of the destination state signal and transition of the state source signal in response thereto; and a delay circuit within the feedback path; and an output net receiving inputs from the core, the output net comprising: a balanced logic tree receiving inputs, including the destination state signal, from the core; and an additional logic tree cascaded with the balanced logic tree to form an unbalanced logic tree such that at least one input to the additional logic tree is provided by output from the balanced logic tree, another input to the additional logic tree receiving the source state signal from the core; wherein a tree propagation time is an elapsed time between receipt of a transition in the destination state signal by the balanced logic tree and a resulting transition of the output from the balanced logic tree provided to the additional logic tree; wherein the delay circuit inserts a delay to the feedback path that causes the state overlap time to be greater than the tree propagation time.
2. The asynchronous finite state machine of claim 1, wherein the delay circuit comprises a delay buffer.
3. The asynchronous finite state machine of claim 1, wherein the plurality of state cells including at least a source state cell configured to generate a source state signal and two destination state cells linked to the source state cell through respective arc circuits, the two destination state cells configured to generate first and second destination state signals; wherein the source state cell is configured to cause a transition in the source state signal in response to a transition in either of the first and second destination state signals communicated to the source state cell through respective first and second feedback paths; wherein the state overlap time is the elapsed time between transition of the first or second destination state signals and transition of the state source signal in response thereto; wherein the balanced logic tree receives the first and second destination state signals from the core; wherein the tree propagation time is the elapsed time between receipt of a transition in the first or second destination state signals by the balanced logic tree and a resulting transition of the output from the balanced logic tree provided to the additional logic tree; and wherein the delay circuit is within the first feedback path to cause the state overlap time to be greater than the tree overlap time for receipt of the transition in the first destination state signal by the balanced logic tree and the resulting transition of the output from the balanced logic tree provided to the additional logic tree.
4. The asynchronous finite state machine of claim 3, wherein the tree overlap time for receipt of the transition in the second destination state signal by the balanced logic tree and the resulting transition of the output from the balanced logic tree provided to the additional logic tree is less than the state overlap time between transition of the second destination state signal and transition of the state source signal.
5. The asynchronous finite state machine of claim 4, wherein the delay circuit within the first feedback path comprises a delay buffer; and wherein the second feedback path lacks a delay circuit therein.
6. The asynchronous finite state machine of claim 3, further comprising an OR gate configured to perform a logical OR operation on outputs of the first and second feedback paths; and wherein the source state cell causes the transition in the source state signal in response to assertion of output of the OR gate.
7. The asynchronous finite state machine of claim 1, wherein the balanced logic tree comprises an OR tree.
8. The asynchronous finite state machine of claim 1, wherein the additional logic tree comprises an OR gate.
9. An asynchronous finite state machine, comprising: a core comprising: a destination state cell that generates a destination state signal; and a source state cell that generates a source state signal, wherein the source state cell is configured to cause transition of the source state signal in response to an acknowledgement signal indicating transition of the destination state signal; wherein the acknowledgment signal is communicated to the source state cell through a delay circuit; and wherein a state overlap time is an elapsed time between transition of the destination state signal and transition of the state source signal in response to the acknowledgement signal indicating the transition of the destination state signal; and an output net receiving inputs from the core, the output net comprising: a balanced logic tree receiving inputs, including the destination state signal, from the core; and an additional logic tree cascaded with the balanced logic tree to form an unbalanced logic tree such that at least one input to the additional logic tree is provided by output from the balanced logic tree, another input to the additional logic tree receiving the source state signal from the core; wherein a tree propagation time is an elapsed time between receipt of a transition in the destination state signal by the balanced logic tree and a resulting transition of the output from the balanced logic tree provided to the additional logic tree; and wherein the delay circuit causes the state overlap time to exceed the tree propagation time.
10. The asynchronous finite state machine of claim 9, wherein the destination state cell is a first destination state cell and the destination state signal is a first destination state signal; further comprising a second destination state cell that generates a second destination state signal; wherein the source state cell causes transition of the source state signal in response to an acknowledgment signal indicating transition of the first destination state signal or the second destination state signal; wherein a second state overlap time is an elapsed time between transition of the second destination state signal and transition of the state source signal in response to the acknowledgement signal indicating the transition of the second destination state signal; wherein the balanced logic tree also receives the second destination state signal as input from the core; and wherein a second tree propagation time is an elapsed time between receipt of a transition in the second destination state signal by the balanced logic tree and a resulting transition of the output from the balanced logic tree provided to the additional logic tree.
11. The asynchronous finite state machine of claim 10, wherein the second state overlap time exceeds the second tree propagation time without introduction of delay.
12. The asynchronous finite state machine of claim 10, further comprising a logical OR gate receiving, as input, the first and second destination state signals and generating the acknowledgement signal as output.
13. The asynchronous finite state machine of claim 9, wherein the balanced logic tree comprises an OR tree.
14. The asynchronous finite state machine of claim 9, wherein the additional logic tree comprises an OR gate.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
DETAILED DESCRIPTION
[0056] The following disclosure enables a person skilled in the art to make and use the subject matter disclosed herein. The general principles described herein may be applied to embodiments and applications other than those detailed above without departing from the spirit and scope of this disclosure. This disclosure is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed or suggested herein.
[0057] Now described with initial reference to
[0058] Recall the above discussion regarding the OR tree 10 of
[0059] Shown in
[0060] Another embodiment of the output net 50 is shown in
[0061] In addition, in the OR tree 51 in the output net 50, the critical state signal Sc is instead labeled as S.sub.Source.
[0062] As can be appreciated, the addition of the OR tree 51 may introduce hazards into the output net 50 or 50. To address this, as will be explained in detail below, the hazards may be detected and in response a delay may be introduced in the internal feedback path within the core 40. The purpose for this delay is to ultimately cause the state overlap ?t.sub.StateOverlap between OUTINT and Sc or S.sub.Source to be greater than the tree propagation time ?t.sub.TreePropagation which, as will be explained, serves to mask the hazards and, in turn, prevent glitches in the output signal OUT.
[0063] The two hazards that may occur in the output net 50 or 50 are a static hazard and a functional hazard. Static hazards are not of concern, as will be explained, but functional hazards are of concern.
[0064] A static hazard takes place when a change in an input to a logic component causes the output of the logic component to change momentarily before stabilizing into its correct value. This occurs when a single input is utilized in multiple paths through a combinatorial logic circuit. However, in the OR tree 10 or logic tree 10, a single input is not repeated and therefore static hazards do not occur. Thus, static hazards need not be considered in the design of the AFSM 30.
[0065] Functional hazards result from two inputs changing at nearly the same time and are of concern in combinatorial logic. In fact, the hazard described above with reference to
[0066] In the balanced logic tree 10, 10 portion of the output net 50, 50 state overlap is not present due to the balanced nature. However, when considering the cascade of the balanced logic tree 10, 10 and the OR tree 51, state overlap is to be taken into account. Here, state overlapping time ?t.sub.StateOverlap is present between a destination state signal (one of the inputs to the balanced OR tree 10, here being S1-S8; in the case of the balanced logic tree 10, being S.sub.Dest) and a source state signal (the input to the OR tree 51 received directly from the core 40 that is considered a critical state, here being Sc or S.sub.Source, the source state and destination state being generated by immediately adjacent state cells within the core 40). This state overlapping time ?t.sub.StateOverlap can be defined as the interval of time from the transition of the destination state signal S.sub.Dest to the transition of the source state signal S.sub.Source. Contributors to the state overlap ?t.sub.StateOverlap are the state change time for the relevant state cells within the core circuit 40, and the point at the layout of the output net 50 in which the destination state signals are inserted.
[0067] The tree propagation time ?t.sub.TreePropagation can be defined as the duration of time that the destination state signal S.sub.Dest takes to reach the gate where the source state signal S.sub.Source is located. In reference to the output net 50, the tree propagation time ?t.sub.TreePropagation can therefore be defined as the time for one of the inputs S1-S8 to the balanced OR tree 10 to reach the OR gate 52 where the critical state signal Sc is located, or for example in the output 50 can be defined as the time for S.sub.Dest to reach OR gate 52. Contributors to the tree propagation time ?t.sub.TreePropagation include the number of gates between the insertion point of the source state signal S.sub.Source and the destination state signal S.sub.Dest and the physical layout of the output net 50, 50 itself.
[0068] Functional hazards in the output net 50, 50 can occur where the overall output tree (e.g., the OR tree 10 cascaded with the OR tree 51 in the context of the design of
[0069] Example functional hazards will now be described in detail with reference to the output net 50 of
[0070] It follows then that to address the potential functional hazards when using the above output net 50 (or any output net that utilized an unbalanced logic tree), the state overlapping time ?t.sub.StateOverlap between the destination state and source state is to be increased so as to be greater than the tree propagation time ?t.sub.TreePropagation. However, it is not desired to delay every state transition, because that would delay state transitions for state pairs (a destination state and an associated source state being a pair) for which state overlap is not a concern, leading to slower performance. In general, the state overlapping time ?t.sub.StateOverlap between a desired destination state signal and source state signal may be increased by modifying the core 40 itself via the insertion of an appropriate number of buffers in the feedback branch between the destination state cell and source state cell, which will be described below.
[0071] The core 40 and principles behind the core will now be explained with reference to
[0072] The physical structure of the core 40 is now described with reference to
[0073] The state cells 101(1), . . . , 101(n) may be thought of a SR latches or Mueller C elements in terms of function. As to inputs, the state cells 101(1), . . . , 101(n) each have: a request input RI, which operates as the set input of a SR latch; an acknowledgement input AO, which operates as the reset input of a SR latch; and a core reset input (used to reset the core 40 itself, and not to be confused with AO). The state cells 101(1), . . . , 101(n) also have a request output RO, which operates as the output of a SR latch.
[0074] The specific structure of the state cell 101(1), which is the initial state cell in the logic core 40, is shown in
[0075] The structure of the remaining state cells 101(2), . . . , 101(n) is shown in
[0076] The ARC cells 102(1), . . . , 102(n) each have: a function input F receiving a signal indicative of whether the ARC condition is true, an input condition IC output generating an output signal to be provided to the next state cell, and an arc activation A input which acts as an enable input.
[0077] The specific structure of the ARC cells 102(1), . . . , 102(n) is shown in
[0078] Returning to the core 40 as shown in
[0079] The second state cell 101(2) also has its acknowledgement input AO coupled to receive output from delay cell 107 or optional OR gate 108 and its request output RO coupled to the non-inverting input of AND gate 104(2). Note that here, the second state cell 101(2) is the source state cell, and therefore the source state signal S.sub.Source is generated at the request output RO of the second state cell 101(2).
[0080] The output of the AND gate 104(2) is provided to the arc activation input A of the second ARC cell 102(2). The second ARC cell 102(2) also has its function input F receiving input from the input net 31 and its input condition IC output coupled to OR gate 103(2) as well as to a first inverting input of AND gate 104(3). The OR gate 104(3) also receives input from other ARC cells, and provides its output to the request input RI of the third state cell 101(3). The input from the other ARCs is also provided to a second inverting input of AND gate 104(3).
[0081] The third state cell 101(3) also has its acknowledgement input AO coupled to receive output from the request output RO of the next state cell (not shown) and its request output RO coupled to the non-inverting input of AND gate 104(3). Note that here, the third state cell 101(3) is the destination state cell, and therefore the destination state signal S.sub.Dest is generated at the request output RO of the third state cell 101(3). The destination state signal S.sub.Dest is passed through the delay buffer 107 (which may be a series of delay buffers) to the Acknowledgement input AO of the second state cell 101(2), or is passed through the delay buffer 107 then provided as input to the optional OR gate 108, with the other inputs to the optional OR gate 108 being provided directly from the request outputs RO of remaining state cells 101(n) (this excludes state cells 101(1) and 101(2)). The signal S.sub.Dest is also passed to the non-inverting input of AND gate 104(3).
[0082] The output of the AND gate 104(3) is provided to the arc activation input A of the third ARC cell 102(3). The third ARC cell 102(3) also has its function input F receiving input from the input net 31 and its input condition IC output coupled to an OR gate 103(3) associated with the next state cell (not shown) as well as to an AND gate (not shown) associated with the next ARC cell (not shown).
[0083] Those of ordinary skill in the art will appreciate that the structure and layout of the state cells 101(2), 101(3) and ARC cells 102(2), 102(3) are replicated to produce a core 40 of any length n having n state cells and n ARC cells, with n being a non-zero integer.
[0084] Operation of the core 40 is now described for an instance where the optional OR gate 108 is not present and instead the output of the delay buffer 17 is directly provided to the acknowledgement input AO of the second state cell 101(2). Consider first the reset state in which the core reset signal RESET is asserted to a logic zero and the F0, . . . , Fn signals are deasserted by the input net 31 to logic zeroes. In the ARC cells 102(1), . . . , 102(n), assertion of the core reset signal RESET to a logic zero results in the input conditions IC each being output as a logic zero. This is so because, as can be observed in
[0085] Also, when the core reset signal RESET is asserted to a logic zero, the first state cell 101(1) asserts its request output RO to a logic one while the other state cells 101(2), . . . , 101(n) deassert their request outputs RO to logic zeroes. The first state cell 101(1) asserts its request output RO at this point because as can be observed in the block diagram of state cell 101(1) in
[0086] Therefore, in summation, in the reset state: the function inputs F of the ARC cells 102(1), . . . , 102(n) receive logic zeroes; the input condition IC outputs of the ARC cells 102(1), . . . , 102(n) are at logic zeroes; the arc activation input of the ARC cell 102(1) receives a logic one; the arc activation inputs A of the ARC cells 102(2), . . . , 102(n) receives logic zeroes; the request inputs RI of the state cells 101(1), . . . , 101(n) receive logic zeroes; the request output RO of state cell 101(1) is at a logic one; the request outputs RO of state cells 101(2), . . . , 101(n) are at logic zeroes; and the acknowledgement inputs AO of the state cells 101(1), . . . , 101(n) receive logic zeroes.
[0087] This reset state is represented as state S1 in
[0088] Now, a state change from state S1 to state S2 is described. Assume that RESET has been released and deasserted to a logic one and that the input net 31 asserts the F0 signal to a logic one. As a result of the arc activation input A of the ARC cell 102(1) receiving a logic one from the request output RO of the state cell 101(1), the ARC cell 102(1) is activated and therefore the logic one at the function input F of the ARC cell 102(1) is output as the input condition IC from the ARC cell 102(1). The input condition IC output from the ARC cell 102(1) as a logic one to an inverting input of the AND gate 104(2) results in the AND gate 104(2) maintaining its output at a logic zero, maintaining the ARC cell 102(2) as being deactivated at this point. The input condition IC output from the ARC cell 102(1) as a logic one results in the OR gate 103(1) outputting a logic one to the request input RI of the state cell 101(2), in turn resulting in the state cell 101(2) asserting its request output RO to a logic one. Therefore, notice that at this point, the request outputs RO of state cell 101(1) and state cell 101(2) are both at a logic onethis is a state overlap.
[0089] The request output RO of the state cell 101(2) being output as a logic one to the acknowledgement input AO of the state cell 101(1) resets the state cell 101(1) such that its request output RO is deasserted to a logic zero, ending the state overlap. Therefore here, the state overlap between the request outputs RO of state cells 101(2) and 101(1) is a function of the propagation delay of the request output RO of a logic one from the state cell 101(2) to the acknowledgement input AO of the state cell 101(1) and the propagation delay of the change in state through the state cell 101(1) such that the request output RO of the state cell 101(1) falls to a logic zero. However, the length of the state overlap time between S1 (RO of state cell 101(1)) and S.sub.Source (RO of state cell 101(2)) is not a concern and is therefore not taken into account in this design.
[0090] The request output RO of the state cell 101(1) as a logic zero is passed to the arc activation input of the ARC cell 102(1) to deactivate the ARC cell 102(1), so that the input condition IC output by the ARC cell 102(1) is deasserted to a logic zero. The logic one output as the request output RO from the state cell 101(2) is now permitted to pass through the AND gate 104(2) because the inverting inputs to the AND gate 104(2) are now at a logic zero. This completes the switch to a new static condition in which the source state signal S.sub.Source (RO of state cell 101(2)) is output as a logic one while the destination state signal S.sub.Dest (RO of state cell 101(3)) remains being output as a logic zero. This new static condition is state S2 in
[0091] Notice that in the state transition from state S1 to state S2, delay is not inserted in the feedback/acknowledge path from the request output RO of the state cell 101(2) to the acknowledgement input AO of the state cell 101(1). Keeping that in mind, the state transition from state S2 to state S3 is now described.
[0092] The input net 31 asserts the F1 signal to a logic one. As a result of the arc activation input A of the ARC cell 102(2) receiving a logic one from the request output RO of the state cell 101(2) after being passed through the AND gate 104(2), the ARC cell 102(2) is activated and therefore the logic one at the function input F of the ARC cell 102(2) is output as the input condition IC from the ARC cell 102(2). The input condition IC output from the ARC cell 102(2) as a logic one to an inverting input of the AND gate 104(3) results in the AND gate 104(3) maintaining its output at a logic zero, maintaining the ARC cell 102(3) as being deactivated at this point. The input condition IC output from the ARC cell 102(2) as a logic one results in the OR gate 103(2) outputting a logic one to the request input RI of the state cell 101(3), in turn resulting in the state cell 101(3) asserting its request output RO to a logic one. Note that the request output RO of the state cell 101(3) is the state source signal S.sub.Dest. The logic one from the request output RO of the state cell 101(3) is passed through the delay buffer 107 to the acknowledgement input AO of the state cell 101(2) to reset the state cell 101(2) such that its request output RO is deasserted to a logic zero.
[0093] This in turn is passed to the arc activation input of the ARC cell 102(2) to deactivate the ARC cell 102(2), so that the input condition IC output by the ARC cell 102(2) is deasserted to a logic zero. The logic one output as the request output RO from the state cell 101(3) is now permitted to pass through the AND gate 104(3) because the inverting inputs to the AND gate 104(3) are now at a logic zero. This completes the switch to a new static condition in which the source state signal S.sub.Source (RO of state cell 101(2)) is output as a logic zero while the destination state signal S.sub.Dest (RO of state cell 101(3)) remains is output as a logic one. This new static condition is state S3 in
[0094] Recall now the discussion above regarding the output net 50 or 50 and the desire for the state overlap time ?t.sub.StateOverlap to exceed the tree propagation time ?t.sub.TreePropagation for critical state transitions between a source state and a destination state. As can be appreciated from the immediately preceding discussion, the logic one (as the destination state signal S.sub.Dest) from the request output RO of the state cell 101(3) is what resets the state cell 101(2) such that its request output RO (providing the source state signal S.sub.Source) is deasserted to a logic zero. It follows therefore that the state overlap time ?t.sub.StateOverlap between the destination state and source state is a function of the propagation delay from the feedback path between the request output RO of the state cell 101(3) and the acknowledgement input AO of the state cell 101(2). Therefore, the delay provided by the delay buffer 107 increases the state overlap time ?t.sub.StateOverlap, and the delay buffer 107 (or multiple such delay buffers) is configured such that the state overlap time ?t.sub.StateOverlap exceeds the tree propagation time ?t.sub.TreePropagation by a suitable margin, thereby masking the potential hazard in the output net 50, 50 resulting from the use of the logic tree 51, as can be seen in the timing diagram of
[0095] The above operation was described with reference to the state diagram being that of
[0096] In the context of the core 40 of
[0097] Such an example is now described in greater detail with additional reference to
[0098] Here, state S1 (corresponding to state cell 101(1)) is the critical state, having outputs to be asserted as quickly as possible. In the output net 50, S1 will therefore be placed near the output of the logical tree 51 (e.g., S1 will be input to the OR gate 52 as the source signal S.sub.Source). Since S2 is placed at the beginning of the logical tree 51 (e.g., S2 will be input to OR gate 11 as the destination signal S.sub.Dest), the tree propagation time will be greater than the state overlap, and a delay will be inserted in the feedback of this transition as will be described below. If S3 is placed closer to S1 in the output net 50 and the tree propagation time is less than the state overlap, and the feedback of this transition may lack a delay.
[0099] The specific core 40 design of shown in
[0100] The first state cell 101(1) has its request input RI receiving input from the output of the OR gate 103(1), which performs a logical OR of the outputs from the other ARC cells that point to the initial state. The first state cell 101(1) has its acknowledgement input AO coupled to receive the output of OR gate 108. OR gate 108 performs a logical OR of the destination states S.sub.Dest output at the RO outputs of the second state cell 101(2) and third state cell 101(3), with the destination state S.sub.Dest output at the RO output of the second state cell 101(2) being passed through a delay buffer 107 prior to being input to the OR gate.
[0101] The request output RO of the first state cell 101(1) outputs the source state signal S.sub.Source and is coupled to a non-inverting input of AND gate 104(2). The AND gate 104(2) has inverting inputs coupled to the other ARC cells that point to the initial state, and provides its output to the arc activation input A of the first ARC cell 102(1). The first ARC cell 102(1) also has its function input F receiving input F0 from the input net 31 and its input condition IC output coupled to OR gate 103(1). The OR gate 103(1) also receives input from other ARC cells (if any) that lead from other states to this specific destination state, and provides its output to the request input RI of the second state cell 101(2). The second state cell 101(2) also has its acknowledgement input AO coupled to receive the destination state S.sub.Dest for S3 output by the third state cell 101(3), and has its request output RO outputting the destination state signal S.sub.Dest for S2, provided to the input of the delay buffer 107.
[0102] The inputs to the AND gate 104(2) are the same as for AND gate 104(1), and the output of the AND gate 104(2) is provided to the arc activation input A of the second ARC cell 102(2). The second ARC cell 102(2) also has its function input F receiving input F1 from the input net 31 and its input condition IC output coupled to OR gate 103(2) as well as to other state cells down the line.
[0103] The third state cell 101(3) has its acknowledgement input AO coupled to receive output from the request output RO of the next state cell (not shown) and its request output generating the destination signal S.sub.Dest for state S3. As stated, this destination state signal S.sub.Dest for state S3 is logically OR'd with the delayed destination state signal S.sub.Dest for state S2 by OR gate 108, as described above. Itis clear that modifications and variations may be made to what has been described and illustrated herein, without thereby departing from the scope of this disclosure, as defined in the annexed claims.
[0104] While the disclosure has been described with respect to a limited number of embodiments, those skilled in the art, having benefit of this disclosure, will appreciate that other embodiments can be envisioned that do not depart from the scope of the disclosure as disclosed herein. Accordingly, the scope of the disclosure shall be limited only by the attached claims.