Adaptive Delay Sequential Elements: An Adaptive Approach to Timing Optimization of VLSI Circuits