# Domino logic

Domino logic is a CMOS-based evolution of dynamic logic techniques consisting of a dynamic logic gate cascaded into a static CMOS inverter. The term derives from the fact that in domino logic, each stage ripples the next stage for evaluation, similar to dominoes falling one after the other. Domino logic contrasts with other solutions to the cascade problem where cascading is interrupted by clocks or other means.
Domino logic was developed to speed up circuits, solving the premature cascade problem, typically by inserting static CMOS inverters between domino stages to avoid premature discharge of further cascaded dynamic logic gates. Domino logic allows a rail-to-rail logic swing, with the output being able to switch from the power supply voltage to the ground voltage.

## Dynamic logic

Dynamic logic differs from static logic by including a clock signal to speed up performance. In CMOS dynamic logic gates, the gate output is precharged to the power supply voltage while the clock is off (the "precharge" phase), and then is evaluated to the correct logic state while the clock is on (the "evaluation" phase) by draining the relevant NMOS transistors in the pull-down network.
When cascading dynamic logic gates, however, a problem arises: the precharge "1" state of the first gate may cause the second gate to discharge prematurely, before the first gate has reached its correct state. This uses up the precharge of the second gate, which cannot be restored until the next clock cycle, so there is no recovery from this error.

## Domino logic operation

In order to cascade dynamic logic gates, one solution is domino logic, which inserts an ordinary static inverter between stages. In a multistage domino logic cascade structure, the evaluation of each stage ripples the next stage for evaluation, similar to dominoes falling one after the other. Once evaluated, the node states cannot return to "1" until the next precharge phase begins.
While the insertion of the inverter might seem to defeat the point of dynamic logic, since the inverter has a pFET (one of the main goals of dynamic logic is to avoid pFETs where possible, due to speed), there are two reasons it works well. First, there is no fan-out to multiple pFETs; the dynamic gate connects to exactly one inverter, so the gate is still very fast. Furthermore, since the inverter connects to only nFETs in dynamic logic gates, it too is very fast. Second, the pFET in an inverter can be made smaller than in some types of logic gates.

## Modifications to domino logic

Charge sharing can cause difficulties for domino logic signal integrity; during the evaluation phase, NMOS transistors next to the output which are on may cause undesired discharging from the output node. To fix this, a keeper transistor can be used. This keeper transistor is a PMOS transistor with its gate connected to the inverter output, its source connected to the power supply, and its drain connected to the inverter input. The keeper transistor thus connects the dynamic node to the power supply whenever it is supposed to be in the "1" state, allowing the output to be correctly restored despite the charge sharing.
Another issue in domino logic is its noninverting property; that is, it can only implement gates that do not have inversions at their outputs (such as AND gates and OR gates, as opposed to NAND gates and NOR gates). To rectify this property, some variants of domino logic are differential or dual-rail in nature, using inverted as well as non-inverted inputs to implement the logic function as well as its inverse. These varieties also include cross-coupled pFETs to attenuate noise.
Traditional domino logic circuits are "footed", that is, they have an NMOS transistor controlled by the clock which is connected to the ground rail. Some domino logic circuits, however, are "footless": they lack this transistor, resulting in higher speed at the cost of greater power leakage.