1. An automated method of providing a plurality of alternative implementations for an integrated circuit (IC) design, the method comprising: receiving an abstract circuit representation of the IC design comprising a plurality of segments, each segment for implementing a particular function; defining a decision module for inclusion in the IC design during a plurality of stages of a multi-stage design process, said decision module comprising (i) a plurality of inputs, each input connected to an alternative implementation for a particular segment of the IC design, and (ii) an output for selecting a particular alternative implementation from the plurality of inputs to include as part of the IC design; and using said decision module to design and manufacture the IC.