Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
asic:timing:forks [2024/02/02 11:52] – [Point-of-divergence constraint] rajitasic:timing:forks [2024/09/03 14:06] (current) – [Relative timing] rajit
Line 26: Line 26:
  
 There are many closely related but slightly different notions that are used in the literature to  There are many closely related but slightly different notions that are used in the literature to 
-describe timing constraints in a variety of circuit contexts. +describe timing constraints in a variety of circuit contexts.  Here we try and provide a simplified view of the differences and similarities between some common notions and timing forks.
  
 ==== Setup and hold time ==== ==== Setup and hold time ====
Line 45: Line 45:
 However, note that an asynchronous circuit has cycles in the timing graph, so technically a point-of-divergence check would require checking an infinite number of paths.  So a point-of-divergence timing constraint makes much more sense when the timing graph is acyclic (as is the case in standard clocked circuits). Sometimes point-of-divergence constraints are used to check timing in an asynchronous circuit by explicitly cutting the cycles in the timing graph. However, note that an asynchronous circuit has cycles in the timing graph, so technically a point-of-divergence check would require checking an infinite number of paths.  So a point-of-divergence timing constraint makes much more sense when the timing graph is acyclic (as is the case in standard clocked circuits). Sometimes point-of-divergence constraints are used to check timing in an asynchronous circuit by explicitly cutting the cycles in the timing graph.
  
-Timing forks can work with the cycles in an asynchronous circuit because the nodes in the fork refer to specific occurrence indices of signal transitions. Hence, even though the timing graph is cyclic, the paths to be checked for a timing fork are bounded.+Timing forks can be applied even when there are cycles in the timing graph because the nodes in the fork refer to specific occurrence indices of signal transitions. Hence, even though the timing graph is cyclic, the paths to be checked for a timing fork are bounded.
  
  
 ==== Relative timing ==== ==== Relative timing ====
  
 +Relative timing is a methodology for designing asynchronous circuits where you can assume that
 +two signal transitions are ordered due to timing. When you assume that ''a+'' occurs before ''b-'' for example,
 +there is an implicit assumption that ''a+'' and ''b-'' occur, and the methodology is most commonly used to reason about control logic where this is a common scenario.
  
 +Timing fork theory states that if the two transitions are guaranteed to be ordered, then a timing fork/zig-zag that is the basis for the ordering must exist.  In other words, a design that uses relative timing constraints can only be correct if a timing fork/zig-zag exists that ensures that the constraint is satisfied. 
  
 +It is worth noting that a timing fork doesn't //require// that all the transitions occur. This is useful when we have data-dependent timing constraints, i.e., where a signal change occurs only in certain cases based data values being computed by the circuit.