This document discusses hardware/software codesign. It introduces codesign concepts and benefits over traditional design processes. Codesign allows concurrent development of hardware and software to optimize design tradeoffs. The document outlines topics on codesign fundamentals, tradeoffs, past approaches, and future directions like multiprocessor system-on-chip applications. Codesign moves parts between software and hardware to improve performance while meeting design constraints like cost, power, and time-to-market.