Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
asic:timing:graph [2024/03/21 14:22]
rajit [Control logic and tick placement]
asic:timing:graph [2024/03/29 06:19] (current)
rajit [How does one tick edges?]
Line 11: Line 11:
 {{ :asic:timing:invring2.png?200 | inverter ring}} {{ :asic:timing:invring2.png?200 | inverter ring}}
  
-What happens if we make one of the ring oscillators slower? The C-element will wait for the //slower// of the two oscillators before changing its output. Hence, the cycle period of this particular circuit will be determined by the slowest cycle of gates in the circuit. This simple example and intuition can be translated into a [[https://csl.yale.edu/~rajit/abstracts/exactmulti.html|rigorous mathematical framework]], where we can show that an asynchronous circuit will exhibit periodic behavior.((S.M. Burns and A.J. Martin. Performance Analysis and Optimization of Asynchronous Circuits. Proc. ARVLSI, 1991.))((Wenmian Hua and Rajit Manohar. Exact Timing Analysis for Asynchronous Systems. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 37(1):203-216 (TCAD), January 2018.))+What happens if we make one of the ring oscillators slower? The C-element will wait for the //slower// of the two oscillators before changing its output. Hence, the cycle period of this particular circuit will be determined by the slowest cycle of gates in the circuit. This simple example and intuition can be translated into a [[https://csl.yale.edu/~rajit/abstracts/exactmulti.html|rigorous mathematical framework]], where we can show that an asynchronous circuit will exhibit periodic behavior((S.M. Burns and A.J. Martin. Performance Analysis and Optimization of Asynchronous Circuits. Proc. ARVLSI, 1991.))((Wenmian Hua and Rajit Manohar. Exact Timing Analysis for Asynchronous Systems. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 37(1):203-216 (TCAD), January 2018.)) and that the period is determined by the //slowest// cycle of gates that oscillate.
  
 ===== From gates to events ===== ===== From gates to events =====
Line 38: Line 38:
 {{ :asic:timing:invrer.png?150 |rer system}} {{ :asic:timing:invrer.png?150 |rer system}}
  
-This is sometimes called a //repetitive event-rule system//, and corresponds to the //timing graph// for the ring oscillator where the first transition is ''a+''+This is sometimes called a //repetitive event-rule system//, and corresponds to the //timing graph// for the ring oscillator where the first transition is ''a+''.  We say that the timing arc from ''c-'' to ''a+'' is a ticked edge in the timing graph.
  
 ===== Delays ===== ===== Delays =====
Line 46: Line 46:
 To determine delays, we need to know the slew rate (equivalently, transition time) of all the signals in the circuit during steady-state execution. Cyclone can compute this in two ways: (i) by using interval analysis to compute a narrow delay interval that corresponds to the steady-state transiltion time based on the topology of the circuit; or (ii) by using the reset release transition to compute the the steady-state transition times. Given the steady-state transition times, all signal delays can be computed using the Liberty file. To determine delays, we need to know the slew rate (equivalently, transition time) of all the signals in the circuit during steady-state execution. Cyclone can compute this in two ways: (i) by using interval analysis to compute a narrow delay interval that corresponds to the steady-state transiltion time based on the topology of the circuit; or (ii) by using the reset release transition to compute the the steady-state transition times. Given the steady-state transition times, all signal delays can be computed using the Liberty file.
  
-===== The cycle period and delay reporting =====+====== The cycle period and delay reporting ======
  
 A particular cycle of transitions in the timing graph imposes a constraint on the cycle period: namely, the cycle period must be at least the sum of the delays around the specific cycle divided by the number of ticked edges on the cycle. In our simple examples above, all simple cycles had only one ticked edge; in general, this need not be the case. The overall cycle period of the entire circuit is the maximum value of the cycle period constraints for every simple cycle in the graph. The cycle in the timing graph corresponding to the cycle period of the overall system is called the critical cycle. A particular cycle of transitions in the timing graph imposes a constraint on the cycle period: namely, the cycle period must be at least the sum of the delays around the specific cycle divided by the number of ticked edges on the cycle. In our simple examples above, all simple cycles had only one ticked edge; in general, this need not be the case. The overall cycle period of the entire circuit is the maximum value of the cycle period constraints for every simple cycle in the graph. The cycle in the timing graph corresponding to the cycle period of the overall system is called the critical cycle.
Line 55: Line 55:
  
 The Cyclone static timing analysis engine reports the delay //offset// relative to ''M*p''. So, for a particular signal transition like ''a+'', there will be ''M'' offsets reported. The Cyclone static timing analysis engine reports the delay //offset// relative to ''M*p''. So, for a particular signal transition like ''a+'', there will be ''M'' offsets reported.
-===== How does one tick edges? =====+====== How does one tick edges? ======
  
 In the examples above, it was clear where the ticks in the timing graph should be placed. However, in a general asynchronous circuit, determining the placement of ticks after-the-fact is a non-trivial problem. In the examples above, it was clear where the ticks in the timing graph should be placed. However, in a general asynchronous circuit, determining the placement of ticks after-the-fact is a non-trivial problem.
-In fact, techniques for doing this that are known (e.g. described in the Cyclone paper)  have a computational complexity that is comparable to logic synthesis. Also, they use information that is in fact computed during logic synthesis of asynchronous circuits! Hence, the ACT flow assumes that tick placement is computed and generated during the logic synthesis process. These tick specifiers are included in the [[language:langs:spec|''spec'' sub-language]].+In fact, techniques for doing this that are known (e.g. described in the Cyclone paper)  have a computational complexity that is comparable to state-space exploration. Also, they use information that is in fact computed during logic synthesis of asynchronous circuits! Hence, the ACT flow assumes that tick placement is computed and generated during the logic synthesis process. These tick specifiers are included in the [[language:langs:spec|''spec'' sub-language]].
  
 Placing ticks in the right location is probably the most confusing aspect of building a correct timing graph for asynchronous circuits. What follows are some rules of thumb that should help you with this process. Note that if you are using our logic synthesis tools, they automatically tick the appropriate edges in the timing graph, so this section need not concern you. However, if you are generating your own asynchronous design via some alternate approach, then you will need to develop a strategy for ticking the appropriate edges in the timing graph. Placing ticks in the right location is probably the most confusing aspect of building a correct timing graph for asynchronous circuits. What follows are some rules of thumb that should help you with this process. Note that if you are using our logic synthesis tools, they automatically tick the appropriate edges in the timing graph, so this section need not concern you. However, if you are generating your own asynchronous design via some alternate approach, then you will need to develop a strategy for ticking the appropriate edges in the timing graph.
  
-==== Control logic and tick placement ====+===== Control logic and tick placement =====
  
 Let's consider a simple example of a handshake protocol between two processes shown below. Let's consider a simple example of a handshake protocol between two processes shown below.
Line 87: Line 87:
  
 Ticks are fungible; if all the inbound edges to a vertex in the timing graph are ticked, that is equivalent (from a timing analysis perspective) to adding a tick to all the outbound edges from the vertex (and eliminating the inbound ticks). While in general an edge could have multiple ticks, Cyclone restricts its attention to timing graphs where each edge has at most one tick. (This can be worked around easily if needed.) Ticks are fungible; if all the inbound edges to a vertex in the timing graph are ticked, that is equivalent (from a timing analysis perspective) to adding a tick to all the outbound edges from the vertex (and eliminating the inbound ticks). While in general an edge could have multiple ticks, Cyclone restricts its attention to timing graphs where each edge has at most one tick. (This can be worked around easily if needed.)
-==== Datapath logic ====+===== Datapath logic =====
  
-==== Some unintuitive examples ====+In the simple linear pipeline example above, none of the datapath logic would have ticked edges since the ''i''th datapath input change for the storage elements propagates to to the ''i''th output change, and through the combinational logic.
  
 +However, if instead we have a token ring, that token ring would have some datapath element (and the control handshake) that initializes with a token on its output and valid data in the datapath. For that particular datapath storage element, we would tick the data input to the storage element. 
  
 +===== Why tick edges at all? =====
  
- +If a timing graph has a cycle of arcs with no ticks, this corresponds to an asynchronous circuit that is deadlocked--i.e. that does not oscillate. If this is detected, Cyclone will report an unticked cycle and display the cyclic path in the timing that is problematic and then stop. 
- +===== When all else fails... =====
-==== When all else fails... ====+
  
 We also provide a "catch-all" tick placement approach that ensures that every cycle in the timing graph has at least one tick. To turn this option on, set the integer configuration option ''timer.fixticks'' to 1. This can be done via a run-time configuration file, or using the ''interact'' command We also provide a "catch-all" tick placement approach that ensures that every cycle in the timing graph has at least one tick. To turn this option on, set the integer configuration option ''timer.fixticks'' to 1. This can be done via a run-time configuration file, or using the ''interact'' command