I. Introduction
Technology scaling has enabled modern-day microprocessors to function at very high speeds. However, this advancement has come at the cost of increased power and energy dissipation. The power consumed by a digital circuit can be split into two components: 1) static and 2) dynamic power. Static or leakage power is consumed by a digital circuit as long as it is powered on even if the inputs do not toggle. On the other hand, the dynamic power is consumed when the inputs to the circuit toggle, causing a subset of logic gates to undergo transitions at their output. These transitions can be of two types: ones which are essential for circuit functionality known as functional transitions and others which are nonessential transients known as glitches.