As outlined in Wolf's article in the Proceedings of the IEEE , co-design is the simultaneous design of a software architecture , consisting of multiple processes, and a hardware engine on which the software is executed. We are especially interested in the co-synthesis of distributed multiprocessor systems.
Multiprocessors are often necessary to performance goals.
The inherent complexity of heterogeneous multiprocessors is another prime reason for developing co-design tools which help the system designer explore the design space.