Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!lll-tis!ames!amdahl!oliveb!sun!wings!bobc From: bobc%wings@Sun.COM (Bob Clark) Newsgroups: comp.arch Subject: Re: Cycle stretching Message-ID: <42976@sun.uucp> Date: 24 Feb 88 03:01:22 GMT References: <844@daisy.UUCP> <28200107@ccvaxa> Sender: news@sun.uucp Reply-To: bobc@sun.UUCP (Bob Clark) Organization: Sun Microsystems, Mountain View Lines: 43 In article <28200107@ccvaxa> aglew@ccvaxa.UUCP writes: > > Am I correct in saying that a trivial way of obtaining a self timed > circuit is to take a "normal" circuit, say an adder, and put a timing > circuit beside it that will produce a pulse when the adder is finished? > And that there are "transformations" that will more closely intertwine > the timing circuit with the function, so that they share gates? > Doesn't this require extremely accurate parametrization of the device's > performance, more than is required for non-self-timed systems? You have defined two approaches: 1) Take a functional module, characterize the worst case delay, and add a delay line in parallel with the function. Use the output of the delay line to determine that the function is complete. This is the trivial approach, and buys you nothing over standard synchronous design. It is a way of modifying a synchronous circuit to work withing an otherwise self-timed system. 2) Design an entirely new ciruit to implement the function, whose state changes are controlled in such a way that the final state change indicates completion of the function. This is the truly self-timed approach, and requires careful definition of the state changes. One approach is to design an asynchronous state machine, whose states are carefully designed so that only a single bit of the state code can change at a time. This requires no characterization of the circuit speed, and is referred to in the literature as the "one-hot" approach. An alternative is to assemble your macro self-timed circuit out of micro-self-timed modules, such as C-elements. As others have mentioned, Ivan Sutherland and others have been working in this area recently, and I would guess that some work has gone on sporadically since the early days of computing. It is possible to design circuits whose functional completion does not require parametrization of the device's perfromance. Bob Clark Sun Microsystems