110 likes | 260 Views
Zero Skew Clock Tree Implementation ─ The Delay Model. Outline. The Delay Model Linear Delay Model Elmore Delay Model The Delay Model under DME algorithm. Linear Delay Model. Delay is proportion to wirelength T LD (u, w)= ∑ |e v |. u. e v. e v ∈ path(u, w). …. e v. w.
E N D
Outline • The Delay Model • Linear Delay Model • Elmore Delay Model • The Delay Model under DME algorithm
Linear Delay Model • Delay is proportion to wirelength • TLD(u, w)= ∑ |ev| u ev ev ∈ path(u, w) … ev w
Elmore Delay Model • Delay=resistance * downstream capacitance • r’ = resistance per unit length c’= capacitance per unit length • For edge ev • rev= r’ × |ev| • cev= c’ × |ev| • Ted(u,w)= ∑ rev(1/2cev+Cv) • Delay grows as square of wire length u ev cev v Cv ev ∈ path(u, w)
Elmore Delay Model • Lumped circuit approximations for distributed RC lines • π–model(most popular) • T–model • L–model.
DME algorithm • Phase 1 : eb B Calculate_Edge_Length( |ea|, |eb| ) A ea msa.delay+ea= msb.delay+eb
DME algorithm • Phase 2 :
DME : Linear Delay Model • Calculate_Edge_Length( |ea|, |eb| ) Linear delay model : let k=d( msa , msb ) // shortest distance between two segments If | msa.delay - msb.delay | ≦ k msa.delay + |ea| = msb.delay + |eb| |ea| + |eb| = k ( |eb| = k - |eb| ) |ea| = ½ × ( k + msb.delay - msa.delay ) Else If msa.delay > msb.delay |ea| = 0 |eb| = msa.delay - msb.delay Else |ea| = msb.delay - msa.delay |eb| = 0 ea + eb = k ea eb msa.delay msb.delay msa.delay+ea= msb.delay+eb
DME : Elmore Delay Model ea + eb = k • Calculate_Edge_Length( |ea|, |eb| ) Elmore delay model : letr’ = resistance per unit length c’= capacitance per unit length rea= r’ × |ea| reb= r’ × |eb| cea= c’ × |ea| ceb= c’ × |eb| k = d( msa , msb ) // shortest distance between two segments rea(1/2 cea+C1) + msa.delay= reb(1/2 ceb+C2) + msb.delay => |ea| = ( msb.delay- msa.delay+r’k(C2+1/2c’k) ) / ( r’(C1+C2+c’k) ) If |ea| < 0, means msa.delay > msb.delay msa.delay = r’ k’ (1/2c’ k’ +C2)+ msb.delay => k’ = (((r’C2)2+2r’c’(msa.delay- msb.delay))1/2-r’C2)/r’c’ |ea| = 0 |eb| = k’ If |ea| > k k’ = (((r’C1)2+2r’c’(msb.delay- msa.delay))1/2-r’C1)/r’c’ |ea| = k’ |eb| = 0 ea eb msb.delay msa.delay C1 C2 rea(1/2 cea+C1) + msa.delay= reb(1/2 ceb+C2) + msb.delay