Low power design can be performed at multiple levels of abstraction to significantly reduce power consumption. At the system level, opportunities exist through hardware-software partitioning, dynamic voltage scaling, and bus encoding. At the architecture level, supply voltage reduction, reducing switching activity through operand sharing, and scheduling and binding techniques can lower power. At the RTL level, clock gating, operand isolation, and pre-computation are effective. At lower levels, transistor sizing, interconnect optimization, and de-glitching reduce power. Real-time scheduling on variable speed processors allows exploiting idle times to leverage power-down modes.