The language I use for NCL has changed since its early years and even since LDD. The early language surrounding NCL related to the terms and concepts emerging from the developing field of asynchronous design. Terms such as handshake, register, combinational logic, clockless and the word asynchronous itself. One problem with these words is that they all either negatively or non discriminatingly relate to clocked Boolean design. A handshake is a replacement for the clock. The register and the combinational logic are the same registers and combinational logics as occur in clocked Boolean design. Clockless means without a clock. If there is no clock then what is there? Asynchronous means not synchronized; so how does it actually work? This non-characterizing terminology is, itself, a major impediment to understanding and acceptance.
The positive aspect of NCL is that it is a complete, coherent and sufficient logic that can express an entire system in terms of NCL logical relationships. Hence,
NCL is “logically determined” in contrast to just “not synchronized”.
While a designer can individually express combinational logic, handshakes and registers in terms of NCL confusing NCL with other asynchronous design methods and even RTL, the fact that they are all expressed in the same logic means that they can all be optimized together forming an integrated logical structure in which such elements can no longer be individually identified. “Registers” and “handshakes” get mixed up with the “combinational logic” and NCL backward “handshake” path can become complex combinational logic structures in themselves. These terms do not satisfactorily characterize NCL.
The component structure that remains evident through all configurations of NCL is that of ring oscillations linked through logical completeness relations. Every NCL circuit fulfills the completeness criterion and is cyclic. The cycle is closed with a completeness signal with a single inversion forming a ring oscillation. Hence, NCL in its most general characterization is
a structure of ring oscillations linked with logical completeness relations.
Linked ring oscillations each individually striving to oscillate, shepherding the spontaneous flow of data waves from oscillation to oscillation, coordinated by completeness relations forms a model of computation that is at once both abstract and real. The structure of linked oscillations forms a computation flow structure and the NCL logical completeness relations coordinate the flow of computation: a live algebraic equation, not sequenced, not clocked, just a spontaneously behaving equation – spontaneously interacting symbols.
To ramble on a bit, the NCL model of computation relates to much more than manipulating abstract symbols. Oscillations spontaneously arise in nature and spontaneously link. The chemical cycles of biology are one example. An NCL multi-rail variable might have a thousand or more mutually exclusive rails. The rails of a multitude of variables might interconnect through a massive network of threshold operators forming a complex structure of linked oscillations. An observable characteristic of such a structure might be a background alpha hum or beta hum. NCL engenders an abstract model of computation which directly relates to natural forms of computation and which can assume a structure very much like the structure of a biological brain.
So thinking of NCL in terms of combinational circuits between registers coordinated by handshakes just limits appreciation of the expressivity of NCL and of its conceptual possibilities.
This site elaborates the notion of linked ring oscillations as the fundamental computational structure of NCL and as a fundamental model of computation both abstract and real. There is no mention of registers or handshakes. No use of the words asynchronous or clockless.