Introduction to asynchronous circuit design: specification and synthesis Jordi Cortadella, Universitat Politècnica de Catalunya, Spain Michael Kishinevsky, Intel Corporation, USA Alex Kondratyev, Theseus Logic, USA Luciano Lavagno, Università di Udine, Italy Outline • I: Introduction to basic concepts on asynchronous design • II: Synthesis of control circuits from STGs • III: Advanced topics on synthesis of control circuits from STGs • IV: Synthesis from HDL and other synthesis paradigms Note: no references in the tutorial Outline • • • • • • • What is an asynchronous circuit ? Asynchronous communication Asynchronous logic blocks Micropipelines Control specification and implementation Delay models Why asynchronous circuits ? Synchronous circuit R CL R CL CLK Implicit synchronization R CL R Asynchronous circuit Ack R CL R CL R CL Req Explicit synchronization: Req/Ack handshakes R Synchronous communication 1 1 0 0 1 0 • Clock edges determine the time instants where data must be sampled • Data wires may glitch between clock edges (set-up/hold times must be satisfied) • Data are transmitted at a fixed rate (clock frequency) Dual rail 1 1 1 0 0 0 • Two wires per bit – “00” = spacer, “01” = 0, “10” = 1 • n-bit data communication requires 2n wires • Each bit is self-timed • Other delay-insensitive codes exist Bundled data 1 1 0 0 1 0 • Validity signal – Similar to an aperiodic local clock • n-bit data communication requires n+1 wires • Data wires may glitch when no valid • Signaling protocols – level sensitive (latch) – transition sensitive (register): 2-phase / 4-phase Example: memory read cycle Valid address Address A A Valid data Data D • Transition signaling, 4-phase D Example: memory read cycle Valid address Address A A Valid data Data D • Transition signaling, 2-phase D Outline • • • • • • • What is an asynchronous circuit ? Asynchronous communication Asynchronous logic blocks Micropipelines Control specification and implementation Delay models Why asynchronous circuits ? Asynchronous modules DATA PATH Data IN start Data OUT done req in ack in req out CONTROL ack out • Signaling protocol: reqin+ start+ [computation] done+ reqout+ ackout+ ackin+ reqin- start[reset] done- reqout- ackout- ackin(more concurrency is also possible, e.g. by overlapping the return-tozero phase of step i-1 with the evaluation phase of step i) Completion detection C • • • done • • • Completion detection tree Asynchronous latches: C element Vdd A A C B Z B B Z A Z A 0 0 1 1 B 0 1 0 1 Z+ 0 Z Z 1 B A Z A B Gnd Bundled-data logic blocks logic • • • • • • start delay done Conventional logic + matched delay Outline • • • • • • • What is an asynchronous circuit ? Asynchronous communication Asynchronous logic blocks Micropipelines Control specification and implementation Delay models Why asynchronous circuits ? Control specification A+ A B+ A- B- B A input B output Control specification A+ B+ A A- B- B Control specification A+ B+ A C+ C A- B- C- B C Control specification Ri Ro FIFO cntrl Ao Ai Ri+ Ro+ Ao+ Ai+ Ri- Ro- Ao- Ai- Ri Ao C C Ro Ai A simple filter: specification Ain Rin y := 0; loop x := READ (IN); WRITE (OUT, (x+y)/2); y := x; end loop IN filter Aout Rout OUT A simple filter: block diagram + x IN Rin Ain Rx OUT y Ax Ry Ay control Ra Aa Rout Aout • x and y are level-sensitive latches (transparent when R=1) • + is a bundled-data adder (matched delay between Ra and Aa) • Rin indicates the validity of IN • After Ain+ the environment is allowed to change IN • (Rout,Aout) control a level-sensitive latch at the output A simple filter: control spec. + x IN Rin Ain Rx OUT y Ax Ry Ay Ra Aa control Rout Aout Rin+ Rx+ Ry+ Ra+ Rout+ Ain+ Ax+ Ay+ Aa+ Aout+ Rin- Rx- Ry- Ra- Rout- Ain- Ax- Ay- Aa- Aout- A simple filter: control impl. Rx Ax Ay Ry Ra Aa Aout C Ain Rout Rin Rin+ Rx+ Ry+ Ra+ Rout+ Ain+ Ax+ Ay+ Aa+ Aout+ Rin- Rx- Ry- Ra- Rout- Ain- Ax- Ay- Aa- Aout- Outline • • • • • • • What is an asynchronous circuit ? Asynchronous communication Asynchronous logic blocks Micropipelines Control specification and implementation Delay models Why asynchronous circuits ? Taking delays into account z+ x+ xy+ x z z- x’ z’ y yDelay assumptions: • Environment: 3 times units • Gates: 1 time unit events: x+ x’- y+ z+ z’- x- x’+ z- z’+ y- time: 3 4 5 6 7 9 10 12 13 14 Taking delays into account z+ x+ xy+ x z z- y- x’ z’ y very slow Delay assumptions: unbounded delays events: x+ x’- y+ z+ x- x’+ ytime: 3 4 5 6 9 10 11 failure ! Gate vs wire delay models • Gate delay model: delays in gates, no delays in wires • Wire delay model: delays in gates and wires Delay models for async. circuits • Bounded delays (BD): realistic for gates and wires. – Technology mapping is easy, verification is difficult • Speed independent (SI): Unbounded (pessimistic) delays for gates and “negligible” (optimistic) delays for wires. – Technology mapping is more difficult, verification is easy • Delay insensitive (DI): Unbounded (pessimistic) delays for gates and wires. – DI class (built out of basic gates) is almost empty • Quasi-delay insensitive (QDI): Delay insensitive except for critical wire forks (isochronic forks). – Formally, it is the same as speed independent – In practice, different synthesis strategies are used BD DI SI QDI Motivation (designer’s view) • Modularity – Plug-and-play interconnectivity • Reusability – IPs with abstract timing behaviors • High-performance – Average-case performance (no worst-case delay synchronization) – No clock skew (local timing assumptions instead) • Many interfaces are asynchronous – Buses, networks, ... Motivation (technology aspects) • Low power – Automatic clock gating • Electromagnetic compatibility – No peak currents around clock edges • Robustness – High immunity to technology and environment variations (in-die variations, temperature, power supply, ...) Problems • Concurrent models for specification – CSP, Petri nets, ... • Difficult to design – Hazards, synchronization • Complex timing analysis – Difficult to estimate performance • Difficult to test – No way to stop the clock But we have some success stories... • • • • • • Philips AMULET microprocessors Sharp Intel (RAPPID) IBM (interlocked pipeline) Start-up companies: – Theseus Logic, Cogency, ADD • ... Introduction to asynchronous circuit design: specification and synthesis Part II: Synthesis of control circuits from STGs Outline • • • • • • Overview of the synthesis flow Specification State graph and next-state functions State encoding Implementability conditions Speed-independent circuit – Complex gates – C-element architecture Specification (STG) Reachability analysis State Graph State encoding Design flow SG with CSC Boolean minimization Next-state functions Logic decomposition Decomposed functions Technology mapping Gate netlist x y x z y z z+ x+ x- y+ z- y- Signal Transition Graph (STG) xyz 000 x+ z+ x+ z+ xy+ y- z- y- x- 100 y+ 101 110 y+ z+ 001 111 y+ x- 011 z- 010 xyz 000 Next-state functions x+ x z (x y) y zx z x y z z+ y- x- 100 y+ 101 110 y+ z+ 001 111 y+ x- 011 z- 010 Next-state functions x z (x y) y zx z x y z x y z Outline • • • • • • Overview of the synthesis flow Specification State graph and next-state functions State encoding Implementability conditions Speed-independent circuit – Complex gates – C-element architecture Specification (STG) Reachability analysis State Graph State encoding Design flow SG with CSC Boolean minimization Next-state functions Logic decomposition Decomposed functions Technology mapping Gate netlist VME bus Bus DSr Data Transceiver LDS LDTACK Device D DSr DSw LDS VME Bus Controller LDTACK D DTACK DTACK Read Cycle STG for the READ cycle DSr+ LDS+ LDTACK+ DTACK- D+ DTACK+ LDTACK- LDS- D DSr DTACK VME Bus Controller LDS LDTACK DSr- D- Choice: Read and Write cycles LDTACK- LDS- DSr+ DSw+ LDS+ D+ LDTACK+ LDS+ D+ DTACK- DTACK- LDTACK+ DTACK+ D- DSr- DTACK+ D- DSw- LDTACK- LDS- Choice: Read and Write cycles LDTACK- LDS- DSr+ DSw+ LDS+ D+ LDTACK+ LDS+ D+ DTACK- DTACK- LDTACK+ DTACK+ D- DSr- DTACK+ D- DSw- LDTACK- LDS- Circuit synthesis • Goal: – Derive a hazard-free circuit under a given delay model and mode of operation Outline • • • • • • Overview of the synthesis flow Specification State graph and next-state functions State encoding Implementability conditions Speed-independent circuit – Complex gates – C-element architecture Specification (STG) Reachability analysis State Graph State encoding Design flow SG with CSC Boolean minimization Next-state functions Logic decomposition Decomposed functions Technology mapping Gate netlist STG for the READ cycle DSr+ LDS+ LDTACK+ DTACK- D+ DTACK+ LDTACK- LDS- D DSr DTACK VME Bus Controller LDS LDTACK DSr- D- Binary encoding of signals DSr+ LDS+ LDTACKDSr+ LDS- LDTACK+ DSr+ D+ DTACK- LDTACKDTACK- LDS- LDS- DTACK- DDTACK+ DSr- LDTACK- Binary encoding of signals DSr+ 10000 LDS+ LDTACK- LDTACK- DSr+ 10010 LDS- LDTACK+ DTACK- LDS- DSr+ 10110 D+ DTACK- 10110 LDTACK- 01100 LDS- DTACK- 01110 00110 D- DTACK+ DSr- (DSr , DTACK , LDTACK , LDS , D) Excitation / Quiescent Regions ER (LDS+) LDS+ QR (LDS-) LDS- QR (LDS+) LDS- LDS- ER (LDS-) Next-state function 01 LDS+ 11 00 LDS- LDS- LDS- 10 10110 10110 Karnaugh map for LDS LDS = 1 LDS = 0 D LDTACK DTACK DSr 00 01 11 10 D LDTACK DTACK DSr 00 01 11 10 00 0 0 - 1 00 - - - 1 01 - - - - 01 - - - - 11 - - - - 11 - 1 1 1 10 0 0 - 0 10 0 0 - 0/1? Outline • • • • • • Overview of the synthesis flow Specification State graph and next-state functions State encoding Implementability conditions Speed-independent circuit – Complex gates – C-element architecture Specification (STG) Reachability analysis State Graph State encoding Design flow SG with CSC Boolean minimization Next-state functions Logic decomposition Decomposed functions Technology mapping Gate netlist Concurrency reduction DSr+ LDS+ DSr+ LDSDSr+ 10110 10110 LDS- LDS- Concurrency reduction DSr+ LDS+ LDTACK+ D+ LDTACK- DTACK- DTACK+ LDS- DSr- D- State encoding conflicts LDS+ LDTACK+ LDTACK- LDS- 10110 10110 Signal Insertion CSC+ LDS+ LDTACK+ LDTACK- LDS- 101101 101100 D- DSr- CSC- Outline • • • • • • Overview of the synthesis flow Specification State graph and next-state functions State encoding Implementability conditions Speed-independent circuit – Complex gates – C-element architecture Specification (STG) Reachability analysis State Graph State encoding Design flow SG with CSC Boolean minimization Next-state functions Logic decomposition Decomposed functions Technology mapping Gate netlist Complex-gate implementation LDS D csc DTACK D D LDTACKcsc csc DSr (csc LDTACK ) • Under what conditions does a hazard-free implementation exist? Implementability conditions • Consistency – Rising and falling transitions of each signal alternate in any trace • Complete state coding (CSC) – Next-state functions correctly defined • Persistency – No event can be disabled by another event (unless they are both inputs) Implementability conditions • Consistency + CSC + persistency • There exists a speed-independent circuit that implements the behavior of the STG (under the assumption that any Boolean function can be implemented with one complex gate) Persistency 100 a- 000 c+ 001 b+ b+ a c b a c b is this a pulse ? Speed independence glitch-free output behavior under any delay Speed-independent implementations • How can the implementability conditions – Consistency – Complete state coding – Persistency be satisfied? • Standard circuit architectures: – Complex (hazard-free) gates – C elements with monotonic covers – “Standard” gates and latches a+ 0000 a+ b+ 1000 b+ 1100 a- a- 0100 c+ c+ 0110 d+ d+ 0111 a+ a+ 1111 b- b- 1011 a- a- cd- 0011 c- 1001 c- a- 0001 d- ab cd 00 00 0 01 0 11 0 0000 10 a+ 1000 0 b+ 1100 01 11 1 0 1 1 1 1 a- 0100 c+ ER(d+) 0110 d+ 10 0111 1 a+ 1111 b- 1011 a- 0011 ER(d-) c- 1001 c- a- 0001 d- ab cd 00 00 01 0 0 11 0 10 0 0000 a+ 1000 b+ 1100 01 11 1 0 1 1 1 1 a- 0100 c+ 0110 d+ 10 1 0111 a+ 1111 d ad a c b- 1011 a- 0011 Complex gate c- 1001 c- a- 0001 d- Implementation with C elements S R C z • • • S+ z+ S- R+ z- R- • • • • S (set) and R (reset) must be mutually exclusive • S must cover ER(z+) and must not intersect ER(z-) QR(z-) • R must cover ER(z-) and must not intersect ER(z+) QR(z+) ab cd 00 00 0 01 0 11 0000 10 0 a+ 1000 0 b+ 1100 01 11 1 0 1 1 a- 0100 c+ 1 1 0110 d+ 10 0111 1 a+ 1111 b- c ac 1011 S R C d a- 0011 c- 1001 c- a- 0001 d- 0000 a+ 1000 b+ 1100 a- but ... 0100 c+ 0110 d+ 0111 a+ 1111 b- c ac 1011 S R C d a- 0011 c- 1001 c- a- 0001 d- Assume that R=ac has an unbounded delay Starting from state 0000 (R=1 and S=0): 0000 a+ 1000 b+ 1100 a+ ; R- ; b+ ; a- ; c+ ; S+ ; d+ ; a- 0100 c+ R+ disabled (potential glitch) 0110 d+ 0111 a+ 1111 b- c ac 1011 S R C d a- 0011 c- 1001 c- a- 0001 d- ab cd 00 00 0 01 11 0 0000 10 0 a+ 1000 0 b+ 1100 01 11 1 0 1 1 a- 0100 c+ 1 1 0110 d+ 10 0111 1 a+ 1111 b- c S ab c R 1011 C d Monotonic covers a- 0011 c- 1001 c- a- 0001 d- C-based implementations c S ab c R c c d C b a weak d a b generalized C element (gC) C d Introduction to asynchronous circuit design: specification and synthesis Part III: Advanced topics on synthesis of control circuits from STGs Outline • Logic decomposition – Hazard-free decomposition – Signal insertion – Technology mapping • Optimization based on timing information – Relative timing – Timing assumptions and constraints – Automatic generation of timing assumptions Specification (STG) Reachability analysis State Graph State encoding Design flow SG with CSC Boolean minimization Next-state functions Logic decomposition Decomposed functions Technology mapping Gate netlist No Hazards abcx 1000 b+ 1100 a0100 c+ 0110 11 0 0 01 1 1 00 0 1 a b c x 0 Decomposition May Lead to Hazards abcx 1000 b+ 1100 a0100 0100 c+ 0110 111000 011111 001110 a z b 000011 c x 000010 Decomposition • Acknowledgement • Generating candidates • Hazard-free signal insertion – Event insertion – Signal insertion Global acknowledgement d- b+ d+ y+ a- y- c+ d- c- d+ z- b- z+ c+ a+ c- c b a z a b d y How about 2-input gates ? d- b+ d+ y+ a- y- c+ d- c- d+ z- b- z+ c+ a+ c- c b a z a b d y How about 2-input gates ? d- b+ d+ y+ a- y- c+ d- c- d+ z- b- z+ c+ a+ c- c z b a a b d y How about 2-input gates ? d- b+ d+ y+ a- y- c+ d- c- d+ z- b- z+ c+ a+ c- c 0 b 0 z a a b d y How about 2-input gates ? d- b+ d+ y+ a- y- c+ d- c- d+ z- b- z+ c+ a+ c- c z a b y d Strategy for logic decomposition • Each decomposition defines a new internal signal • Method: Insert new internal signals such that – After resynthesis, some large gates are decomposed – The new specification is hazard-free • Generate candidates for decomposition using standard logic factorization techniques: – Algebraic factorization – Boolean factorization (boolean relations) Decomposition example 1001 zy+ 1010 yw- 1000 0001 w- z- w- y+ 0010 0000 0110 1011 w+ x+ 0101 x+ z- 0011 0100 x- x+ y+ y- z+ 0111 wxyz z- w- w+ y+ x+ x- z+ 1001 z- y+ 1010 yw- 1000 0001 w- z- w- y+ 0010 0000 0110 yz=0 1011 x+ 0011 0100 x- z+ 0111 yz=1 w y z w+ 0101 x+ z- x+ y+ x y z x w w z x y z y C y C z s=1 z- y+ 1010 1000 s- y+ 1001 s- z1000 y- y1011 s1001 w- 0001 w- zx+ 1010 0000 0101 w- y+ x+ z- 0010 x+ y+ s=0 0110 s- w+ 0100 z+ 0011 z- w- w+ y+ x+ x- x0111 s+ 0111 z+ s+ s=1 z- y+ 1010 1000 s- y+ 1001 s- z1000 x y1011 s1001 w+ 0001 w- zx+ x+ y+ s=0 0110 s y z w- 1010 0000 0101 w- y+ x+ z- 0010 w 0100 z+ w 0011 x- x w z 0111 s+ x 0111 y z y C y C z z- y+ 1010 1001 1001 yw- 1000 0001 w- z- w- y+ 0010 0000 0110 yz=0 1011 x+ 0100 z+ w y z w+ 0101 x+ z- x+ y+ x y z x w 0011 w z x0111 yz=1 x y z y C y C z s=1 1001 s- zy+ 1000 1001 y- w- 0001 w- zx+ x+ y+ s=0 0110 s- w+ 1010 0000 0101 w- y+ x+ z0010 y- 1011 0100 z+ 0011 z- w- w+ y+ x+ x- x0111 s+ 0111 z+ z- is delayed by the new transition s- ! s+ s=1 1001 s- zy+ 1000 1001 w+ w- 0001 w- zx+ x+ y+ s=0 0110 w 1011 1010 0000 0101 w- y+ x+ z0010 x y- 0100 z+ y z 0011 x0111 s+ 0111 x w w z y x y z C y C z Decomposition (Algebraic, Boolean relations) F Sr C D C C D Sr Sr C NO D Hazard-free ? (Event insertion) C YES Decomposition (Algebraic, Boolean relations) F Sr C D until no more progress Sr C NO D Hazard-free ? (Event insertion) C YES Boolean decomposition x1 F xn f = F (x1,…,xn) f x1 xn h1 H G hm f = G(H(x1,…,xn)) Our problem: Given F and G, find H f h1 h2 state s1 s2 s3 s4 dc C f f 0 0 1 1 - next(f) 0 1 0 1 - (h1,h2) (0,-) (-,0) (1,1) (0,0) (-,1) (1,-) (-,-) This is a Boolean Relation ya+ c- a c d d- ac+ F acd y(c d ) y a+ S y+ Rs cad+ c+ R y ya+ c- a c d d- a- acd y(c d ) y c+ a+ y+ cad+ c+ a c d c d Rs y ya+ c- a c d d- a- acd y(c d ) y c+ a+ a y+ cad+ c+ cd yc Rs y ya+ c- a c d d- a- acd y(c d ) y c+ a+ a y+ cad+ c+ d c D Rs y Technology mapping • Merging small gates into larger gates introduces no new hazards • Standard synchronous technique can be applied, e.g. BDD-based boolean matching • Handles sequential gates and combinational feedbacks • Due to hazards there is no guarantee to find correct mapping (some gates cannot be decomposed) • Timing-aware decomposition can be applied in these rare cases Specification (STG) Reachability analysis State Graph State encoding Design flow SG with CSC Boolean minimization Next-state functions Logic decomposition Decomposed functions Technology mapping Gate netlist Timing assumptions in design flow • Speed-independent: wire delays after a fork smaller than fan-out gate delays • Burst-mode: circuit stabilizes between two changes at the inputs • Timed circuits: Absolute bounds on gate / environment delays are known a priori (before physical design) Relative Timing Circuits • Assumptions: “a before b” – for concurrent events: reduces reachable state space – for ordered events: permits early enabling – both increase don’t care space for logic synthesis => simplify logic (better area and timing) • “Assume - if useful - guarantee” approach: assumptions are used by the tool to derive a circuit and required timing constraints that must be met in physical design flow • Applied to design of the Rotating Asynchronous Pentium Processor(TM) Instruction Decoder (K.Stevens, S.Rotem et al. Intel Corporation) Relative Timing Asynchronous Circuits Speed-independent C-element b a Timing assumption (on environment): b a c a- before bc RT C-element: faster,smaller; correct only under timing constraint: a- before b- State Graph (Read cycle) DSr+ LDS+ LDTACKDSr+ LDS- LDTACK+ DSr+ D+ DTACK- LDTACKDTACK- LDS- LDS- DTACK- DDTACK+ DSr- LDTACK- Lazy Transition Systems ER (LDS+) LDS+ LDS- LDSDTACK- LDS- FR (LDS-) ER (LDS-) Event LDS- is lazy: firing = subset of enabling Timing assumptions • (a before b) for concurrent events: concurrency reduction for firing and enabling • (a before b) for ordered events: early enabling • (a simultaneous to b wrt c) for triples of events: combination of the above Speed-independent Netlist DSr+ LDS+ LDTACK+ D+ DTACKDTACK+ LDTACK- D- LDSD DTACK LDS map DSr DSr- csc LDTACK Adding timing assumptions (I) DSr+ LDS+ LDTACK+ D+ DTACKDTACK+ LDTACK- D- LDSD DTACK SLOW LDTACK- before DSr+ LDS map DSr DSr- csc FAST LDTACK Adding timing assumptions (I) DSr+ LDS+ LDTACK+ D+ DTACKDTACK+ LDTACK- D- LDSD DTACK LDTACK- before DSr+ LDS map DSr DSr- csc LDTACK State space domain DSr+ LDTACK- before DSr+ LDTACK- State space domain DSr+ LDTACK- before DSr+ LDTACK- State space domain DSr+ LDTACK- before DSr+ LDTACK- Two more unreachable states Boolean domain LDS = 1 LDS = 0 D LDTACK DTACK DSr 00 01 11 10 D LDTACK DTACK DSr 00 01 11 10 00 0 0 - 1 00 - - - 1 01 - - - - 01 - - - - 11 - - - - 11 - 1 1 1 10 0 0 - 0 10 0 0 - 0/1? Boolean domain LDS = 1 LDS = 0 D LDTACK DTACK DSr 00 01 11 10 D LDTACK DTACK DSr 00 01 11 10 00 0 0 - 1 00 - - - 1 01 - - - - 01 - - - - 11 - - - - 11 - 1 1 1 10 0 0 - - 10 0 0 - 1 One more DC vector for all signals One state conflict is removed Netlist with one constraint DSr+ LDS+ LDTACK+ D+ DTACKDTACK+ LDTACK- D- LDSD DTACK LDS map DSr DSr- csc LDTACK Netlist with one constraint DSr+ LDS+ LDTACK+ D+ LDTACK- DTACK DTACKDTACK+ DSr- D- LDSD TIMING CONSTRAINT LDTACK- before DSr+ DSr LDS LDTACK Timing assumptions • (a before b) for concurrent events: concurrency reduction for firing and enabling • (a before b) for ordered events: early enabling • (a simultaneous to b wrt c) for triples of events: combination of the above Ordered events: early enabling b a F b a c G a a b b c c Logic for gate c may change c Adding timing assumptions (II) DSr+ LDS+ LDTACK+ D+ LDTACK- DTACK DSr DTACKDTACK+ DSr- D- LDSD D- before LDS- LDS LDTACK Boolean domain LDS = 1 LDS = 0 D LDTACK DTACK DSr 00 01 11 10 D LDTACK DTACK DSr 00 01 11 10 00 0 0 - 1 00 - - - 1 01 - - - - 01 - - - - 11 - - - - 11 - 1 1 1 10 0 0 - - 10 0 0 - 1 Boolean domain LDS = 1 LDS = 0 D LDTACK DTACK DSr 00 01 11 10 D LDTACK DTACK DSr 00 01 11 10 00 0 0 - 1 00 - - - 1 01 - - - - 01 - - - - 11 - - - - 11 - - 1 1 10 0 0 - - 10 0 0 - 1 One more DC vector for one signal: LDS If used: LDS = DSr, otherwise: LDS = DSr + D Before early enabling DSr+ LDS+ LDTACK+ D+ LDTACK- DTACK DSr DTACKDTACK+ DSr- D- LDSD LDS LDTACK Netlist with two constraints DSr+ LDS+ LDTACK+ D+ LDTACK- DTACK DSr DTACKDTACK+ DSr- D- LDSD TIMING CONSTRAINTS LDTACK- before DSr+ and D- before LDS- LDS LDTACK Both timing assumptions are used for optimization and become constraints Backannotation of Timing Constraints • Timed circuits require post-verification • Can synthesis tools help ? – Report the least stringent set of timing constraints required for the correctness of the circuit – Not all initial timing assumptions may be required • Petrify reports a set of constraints for order of firing that guarantee the circuit correctness Design Flow with Timing Specification (STG + user assumptions) Reachability analysis Lazy State Graph Timing-aware state encoding Automatic Timing Assumptions Lazy SG with CSC Boolean minimization Next-state functions Logic decomposition Decomposed functions Technology mapping Required Timing Constraints Gate netlist VME bus spec after transforms ldtack+ p2+ ldtack+ p1- p8- d+ lds+ p11- p3+ lds+ D+ dtack+ p1+ dsr+ p2- p7- dsr- p9+ ldtack- p9- p4+ p10- dsr+ ldtack- p8+ dtack+ lds- dtack- Reductions Transforms d- p3p11+ p5+ p9- p6- lds- dtack- p10+ p7+ dsr- p4- p6+ p9+ D- p5-