This book provides a systematic introduction to the topic of Hardware-Software Codesign. The material emphasizes the basic ideas, and the practical aspects of Hardware-Software Codesign. The book developed from a course on the topic of Hardware-Software Codesign, organized by the author at Virginia Tech. It is separated into four differenct sections; Basic Concepts, Custom Architectures, Hardware/Software Interfaces, and Applications. The author covers many concepts including the various forms of expressing computations, sequential and parallel implementations, control-flow and data-flow, control dependency and data dependency, latency and throughput as well as the architecture design space of hardware data paths, finite state machines, micro-programmed machines, instruction-set processors, system-on-chip, and on-chip buses. The material also includes the different forms of hardware/software interfaces, their impact on performance, hardware cost, and software complexity.
The book contains information on hardware/software integration of components on top of hardware/software interfaces as well as design methodology and design flows for hardware-software codesign including performance evaluation, verification and synthesis of hardware and software implementations. Problems are included at the end of each chapter and a solutions manual will be available for instructors.
Patrick Schaumont is Assistant Professor in Computer Engineering at Virginia Tech. He received the PhD degree in Electrical Engineering from UCLA (2004), and the MS degree in Computer Science from Rijksuniversiteit Ghent, Belgium (1990). He has been a researcher at the Inter-university Micro- Electronics Center (IMEC) in Belgium from 1992 to 2001. He has served on the program committee of international conferences in this field such as CHES, DATE, DAC, IEEE HOST and IEEE MEMOCODE.
The Nature of Hardware and Software.- Data Flow Modeling and Implementation.- Analysis of Control Flow and Data Flow.- Finite State Machine with Datapath.- Microprogrammed Architectures.- General-purpose Embedded Cores.- System On Chip.- On-chip Busses.- Hardware/Software Interfaces.- Coprocessor Control Shell Design.- Trivium Crypto-Coprocessor.- CORDIC Co-processor.