This book has been developed with the purpose of providing an updated key reference for graduate students in functional refinement in system level modeling using SystemC. The book demonstrates the practical methodology by implementing a tool that automates synthesis and programming of systems such as a ASIP from given C++ programs. A system-level co-simulation paradigm is also developed that models the generated hardware (the ASIP) in SystemC and the generated software (software of the ASIP) in C++, and hence, allows early validation at system-level.