A hardware-software system design optimization tool is described. The tool
allows a designer to optimize the system performance by allowing him to
select software components of the system and move them to a hardware
representation. The software components are selected by using a
performance profile of the system, which comprises time data related to
execution of the software components, memory and bus transactions. In
another aspect, the tool automatically collects the performance data and
generates the performance profile. In another aspect, performance data is
collected by modeling the execution of the hardware-software system. In
another aspect, hardware-software system is modeled again after selected
software components are moved to a hardware representation to inquire
whether the move improved overall system performance.