Abstract-The most creative step in synthesizing data paths executing software descriptions is the hardware allocation process. New algorithms for the simultaneous costlresource constrained allocation of registers, arithmetic units, and interconnect in a data path have been developed. The entire allocation process can be formulated as a twodimensional placement problem of microinstructions in space and time. This formulation readily lends itself to the use of a variety of heuristics for solving the allocation problem. We present simulated-annealingbased algorithms which provide excellent solutions to this formulation of the allocation problem. These algorithms operate under a variety of user-specifable constraints on hardware resources and costs. They also incorporate conditional resource sharing and simultaneously address all aspects of the allocation problem, namely register, arithmetic unit and interconnect allocation, while effectively exploring the existing tradeoffs in the design space.