Algorithmic Level Techniques for Low Power Design