Adapt: a knowledge-based synthesis tool for digital signal processing system design