This article outlines a concurrent and cooperative design approach called hardware/software codesign. This approach tries to unify the software and hardware domains by using an integrated hardware/software model and includes as a fundamental component the capability to explore hardware/software trade-offs. Codesign consists of iteratively performing decomposition, hardware/software partitioning, and alternative evaluation for each system function. The authors present an integrated hardware/software model that supports different levels of detail. This approach supports model continuity and maintains consistency between the software and hardware descriptions. As hardware/software refinement proceeds, hardware/software trade-offs can be explored at various stages of the design process. The quantitative evaluation model described here uses metrics to evaluate individual alternatives and to determine an alternative's impact on overall system bahavior. This capability leads to more efficient implementations and improves overall system performance, reliability, and cost-effectiveness. The methodology is illustrated with examples that range from a simple sort function to a distributed system that supports parallel discrete-event simulation.