Transcendental perspectivism: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Helpful Pixie Bot
m ISBNs (Build KE)
 
en>John of Reading
m Typo/general fixing, replaced: vice-versa → vice versa using AWB
 
Line 1: Line 1:
{{Refimprove|date=November 2010}}
The author is known by the name of Figures Wunder. My working day job is a meter reader. It's not a typical factor but what she likes doing is foundation leaping and now she is attempting to earn money with it. California is our birth location.<br><br>Here is my homepage ... std home test ([http://xn--299ay03byycca57h.kr/zbxe/?document_srl=319947 click over here now])
'''Retiming''' is the technique of moving the structural location of [[Latch (electronic)|latches]] or registers in a [[digital circuit]] to improve its performance, area, and/or [[power optimization (EDA)|power]] characteristics in such a way that preserves its functional behavior at its outputs.  Retiming was first described by [[Charles E. Leiserson]] and [[James B. Saxe]] in 1983.<ref>http://citeseer.ist.psu.edu/context/96547/0</ref>
 
The technique uses a [[directed graph]] where the vertices represent asynchronous combinational blocks and the directed edges represent a series of registers or latches (the number of registers or latches can be zero). Each vertex has a value corresponding to the delay through the combinational circuit it represents. After doing this, one can attempt to optimize the circuit by pushing registers from output to input and vice versa - much like [[bubble pushing]].  Two operations can be used - deleting a register from each input of a vertex while adding a register to all outputs, and conversely adding a register to each input of vertex and deleting a register from all outputs. In all cases, if the rules are followed, the circuit will have the same functional behavior as it did before retiming.
 
==Formal description==
 
The initial formulation of the retiming problem as described by Leiserson and Saxe is as follows. Given a [[directed graph]] <math>G:=(V,E)</math> whose vertices represent [[logic gates]] or combinational delay elements in a circuit, assume there is a directed edge <math>e:=(u,v)</math> between two elements that are connected directly or through one or more registers. Let the ''weight'' of each edge <math>w(e)</math> be the number of registers present along edge <math>e</math> in the initial circuit.  Let <math>d(v)</math> be the [[propagation delay]] through vertex <math>v</math>.  The goal in retiming is to compute an integer ''lag'' value <math>r(v)</math> for each vertex such that the retimed weight <math>w_r(e):=w(e)+r(v)-r(u)</math> of every edge is non-negative. There is a proof that this preserves the output functionality.<ref name="one">C. E. Leiserson, J. B. Saxe, "Retiming Synchronous Circuitry," Algorithmica, Vol. 6, No. 1, pp. 5-35, 1991.</ref>
 
===Minimizing the clock period with network flow===
 
The most common use of retiming is to minimize the [[clock period]].  A simple technique to optimize the clock period is to search for the minimum feasible period (e.g. using [[binary search]]).
 
The feasibility of a clock period <math>T</math> can be checked in one of several ways.  The [[linear program]] below is feasible if and only if <math>T</math> is a feasible clock period. Let <math>W(u,v)</math> be the minimum number of registers along any path from <math>u</math> to <math>v</math> (if such a path exists), and <math>D(u,v)</math> is the maximum delay along any path from <math>u</math> to <math>v</math> with W(u,v) registers. The dual of this program is a [[minimum cost circulation problem]], which can be solved efficiently as a network problem. The limitations of this approach arise from the enumeration and size of the <math>W</math> and <math>D</math> matrices.  
 
{|
| Given
| colspan="2" | <math>w(e), W(u,v), D(u,v)</math> and a target clock period <math>T</math>
|-
| Find
| colspan="2" | <math>r(v):V \to \mathbb{Z}</math>
|-
| Such that
|-
|
| <math>r(u) - r(v)</math>
| <math>\le w(e)</math>
|-
|
| <math>r(u) - r(v)</math>
| <math>\le W(u,v) - 1</math> if <math>D(u,v) > c</math>
|}
 
===Minimizing the clock period with MILP===
 
Alternatively, feasibility of a clock period <math>T</math> can be expressed as a mixed-integer [[linear program]] (MILP).  A solution will exist and a valid lag function <math>r(v)</math> will be returned if and only if the period is feasible.
 
{|
| Given
| colspan="2" | <math>w(e), d(v)</math> and a target clock period <math>T</math>
|-
| Find
| colspan="2" | <math>r(v):V \to \mathbb{Z}</math> and <math>R(v):V \to \mathcal{R}</math>
|-
| Such that
|-
|
| <math>r(v) - R(V)</math>
| <math>\le -d(v)/T</math>
|-
|
| <math>R(v) - r(v)</math>
| <math>\le 1</math>
|-
|
| <math>r(u) - r(v)</math>
| <math>\le w(e)</math>
|-
|
| <math>R(u) - R(v)</math>
| <math>\le w(e) - d(v)/T</math>
|}
 
===Other formulations and extensions===
 
Alternate formulations allow the minimization of the register count and the minimization of the register count under a delay constraint.  The initial paper includes extensions that allow the consideration of fan-out sharing and a more general delay model.  Subsequent work has addressed the inclusion of register delays,<ref name="two">K. N. Lalgudi, M. C. Papaefthymiou, {{doi-inline|10.1109/43.664222|Retiming edge-triggered circuits under general delay models}}, [[IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems]], vol.16, no.12, pp.1393-1408, Dec. 1997.</ref> load-dependent delay models,<ref name="two"/> and hold constraints.<ref name="three>M. C. Papaefthymiou, {{doi-inline|10.1145/288548.289060|Asymptotically efficient retiming under setup and hold constraints}}, IEEE/ACM International Conference on Computer-Aided Design, 1998.</ref>
 
==Problems==
 
Retiming has found industrial use, albeit sporadic.  Its primary drawback is that the state encoding of the circuit is destroyed, making debugging, testing, and verification substantially more difficult.  Some retimings may also require complicated initialization logic to have the circuit start in an identical initial state.  Finally, the changes in the circuit's topology have consequences in other logical and physical synthesis steps that make [[design closure]] difficult.
 
==Alternatives==
 
Clock skew scheduling is a related technique for optimizing sequential circuits.  Whereas retiming relocates the structural position of the registers, clock skew scheduling moves their temporal position by scheduling the arrival time of the clock signals.  The lower bound of the achievable minimum clock period of both techniques is the maximum mean cycle time (i.e. the total combinational delay along any path divided by the number of registers along it).
 
==See also==
* [[Logic Synthesis]]
* [[Electronic Design Automation]]
 
==Notes==
<references/>
 
==References==
*{{cite journal|last1=Leiserson|first=1C. E. |first2=J. B. |last2=Saxe|year=1983|title=Optimizing Synchronous Systems|journal=Journal of VLSI and Computer Systems|volume=1|issue=1|pages=41–67}}
 
==External links==
* [http://people.csail.mit.edu/devadas/6.373/lectures/l10/ Presentation on retiming from MIT]
 
[http://sites.google.com/site/mhutton1/2003_IWLS_BA_retime.pdf A Safe and Complete Gate-Level Register Retiming Algorithm]
[[Category:Timing in electronic circuits]]
[[Category:Formal methods]]

Latest revision as of 11:44, 8 January 2015

The author is known by the name of Figures Wunder. My working day job is a meter reader. It's not a typical factor but what she likes doing is foundation leaping and now she is attempting to earn money with it. California is our birth location.

Here is my homepage ... std home test (click over here now)