Introduction to Hardware/Software Codesign

  • Soonhoi Ha
  • Jürgen Teich
  • Christian Haubelt
  • Michael Glaß
  • Tulika Mitra
  • Rainer Dömer
  • Petru Eles
  • Aviral Shrivastava
  • Andreas Gerstlauer
  • Shuvra S. Bhattacharyya
Reference work entry


Hardware/Software Codesign (HSCD) is an integral part of modern Electronic System Level (ESL) design flows. This chapter will review important aspects of hardware/software codesign flows, summarize the historical evolution of codesign techniques, and subsequently summarize each of its major branches of research and achievements that later will be presented in detail by different parts of this Handbook of Hardware/Software Codesign.



Application-Specific Integrated Circuit


Discrete Event Simulation


Design Space Exploration


Evolutionary Algorithm


Electronic Design Automation


Electronic System Level


Formal System Design


Finite-State Machine


Genetic Algorithm


Hardware/Software Codesign




Integer Linear Program


Intellectual Property


Instruction-Set Architecture


Kahn Process Network


Modeling and Analysis of Real-Time Embedded Systems


Model of Computation


Multi-Processor System-on-Chip


Out-of-Order Parallel Discrete Event Simulation


Operating System




Parallel Discrete Event Simulation


Process Network


Synchronous Data Flow


Single Instruction, Multiple Data


System-Level Description Language






SystemC Models of Computation


Transaction-Level Model


Unified Modeling Language


Very Long Instruction Word


Virtual Prototype


Worst-Case Execution Time


  1. 1.
    Aho AV, Lam MS, Sethi R, Ullman JD (2006) Compilers: principles, techniques, and tools, 2nd edn. Addison-Wesley Longman Publishing Co., Inc., BostonzbMATHGoogle Scholar
  2. 2.
    Alur R, Dill DL (1994) A theory of timed automata. Theor Comput Sci 126(2):183–235MathSciNetCrossRefzbMATHGoogle Scholar
  3. 3.
    Antoniazzi S, Balboni A, Fornaciari W, Sciuto D (1994) A methodology for control-dominated systems codesign. In: Proceedings of the international workshop on hardware/software codesign, pp 2–9Google Scholar
  4. 4.
    Balarin F, Chiodo M, Giusto P, Hsieh H, Jurecska A, Lavagno L, Passerone C, Sangiovanni-Vincentelli A, Sentovich E, Suzuki K, Tabbara B (1997) Hardware-Software co-design of embedded systems: the POLIS approach. Kluwer Academic Publishers, BostonCrossRefzbMATHGoogle Scholar
  5. 5.
    Banakar R, Steinke S, Lee BS, Balakrishnan M, Marwedel P (2002) Scratchpad memory: a design alternative for cache on-chip memory in embedded systems. In: Proceedings of CODESCrossRefGoogle Scholar
  6. 6.
    Bengtsson J, Larsen K, Larsson F, Pettersson P, Yi W (1996) UPPAAL—a tool suite for automatic verification of real-time systems. Springer, Berlin, pp 232–243. doi: 10.1007/BFb0020949 Google Scholar
  7. 7.
    Benveniste A, Caspi P, Edwards S, Halbwachs N, Le Guernic P, de Simone R (2003) The synchronous languages twelve years later. Proc IEEE 91(1):64–83CrossRefGoogle Scholar
  8. 8.
    Buttazzo GC (2011) Hard real-time computing systems: predictable scheduling algorithms and applications, vol 24. Springer, New YorkzbMATHGoogle Scholar
  9. 9.
    Cassandras C, Lafortune S (2008) Introduction to discrete event systems, 2nd edn. Springer, New YorkCrossRefzbMATHGoogle Scholar
  10. 10.
    Chattopadhyay S, Roychoudhury A, Rosén J, Eles P, Peng Z (2014) Time-predictable embedded software on multi-core platforms: analysis and optimization. Found TrendsⓇElectron Des Autom 8(3–4):199–356. doi: 10.1561/1000000037 CrossRefGoogle Scholar
  11. 11.
    Clarke EM, Emerson EA, Sistla AP (1986) Automatic verification of finite-state concurrent systems using temporal logic specifications. ACM Trans Program Lang Syst 8(2):244–263CrossRefzbMATHGoogle Scholar
  12. 12.
    Clarke EM, Grumberg O, Peled DA (1999) Model checking. MIT Press, CambridgeGoogle Scholar
  13. 13.
    Coussy P, Morawiec A (2008) High-level synthesis: from algorithm to digital circuit, 1st edn. Springer, DordrechtCrossRefGoogle Scholar
  14. 14.
    Densmore D, Passerone R, Sangiovanni-Vincentelli A (2006) A platform-based taxonomy for ESL design. IEEE Des Test Comput 23:359–374CrossRefGoogle Scholar
  15. 15.
    Edwards S, Lavagno L, Lee EA, Sangiovanni-Vincentelli A (1997) Design of embedded systems: formal models, validation, and synthesis. Proc IEEE 85(3):366–390CrossRefGoogle Scholar
  16. 16.
    Eichenberger AE, O’Brien JK, O’Brien KM, Wu P, Chen T, Oden PH, Prener DA, Shepherd JC, So B, Sura Z, Wang A, Zhang T, Zhao P, Gschwind MK, Archambault R, Gao Y, Koo R (2006) Using advanced compiler technology to exploit the performance of the cell broadband engineTM architecture. IBM Syst J 45:59–84CrossRefGoogle Scholar
  17. 17.
    Gajski DD, Dutt N, Wu A, Lin S (1992) High level synthesis: introduction to chip and system design. Springer, New YorkCrossRefGoogle Scholar
  18. 18.
    Gerstlauer A, Haubelt C, Pimentel A, Stefanov T, Gajski D, Teich J (2009) Electronic system-level synthesis methodologies. IEEE Trans Comput Aided Des Integr Circuits Syst 28(10):1517–1530CrossRefGoogle Scholar
  19. 19.
    Girault A, Lee B, Lee EA (1999) Hierarchical finite state machines with multiple concurrency models. IEEE Trans Comput Aided Des Integr Circuits Syst 18(6):742–760CrossRefGoogle Scholar
  20. 20.
    Harel D (1987) Statecharts: a visual formalism for complex systems. Sci Comput Program 8(3):231–274MathSciNetCrossRefzbMATHGoogle Scholar
  21. 21.
    Hoare C (1985) Communicating sequential processes. Prentice Hall, Englewood CliffszbMATHGoogle Scholar
  22. 22.
    Kahn G (1974) The semantics of a simple language for parallel programming. In: Proceedings of IFIP congress 74. North-Holland Publishing CoGoogle Scholar
  23. 23.
    Kalavade A, Lee, EA (1993) A hardware/software codesign methodology for DSP applications. IEEE Des Test Comput 10(3):16–28CrossRefGoogle Scholar
  24. 24.
    Lattner C, Adve V (2004) LLVM: a compilation framework for lifelong program analysis & transformation. In: Proceedings of the 2004 international symposium on code generation and optimization (CGO’04), Palo AltoGoogle Scholar
  25. 25.
    Lee EA, Parks TM (1995) Dataflow process networks. Proc IEEE 83:773–799CrossRefGoogle Scholar
  26. 26.
    Lee EA, Sangiovanni-Vincentelli A (1998) A framework for comparing models of computation. IEEE Trans Comput Aided Des Integr Circuits Syst 17(12):1217–1229CrossRefGoogle Scholar
  27. 27.
    Prakash S, Parker AC (1992) SOS: synthesis of application-specific heterogeneous multiprocessor systems. J Parallel Distrib Comput 16(4):338–351CrossRefzbMATHGoogle Scholar
  28. 28.
    Redd B, Kellis S, Gaskin N, Brown R (2014) The impact of process scaling on scratchpad memory energy savings. J Low Power Electron Appl 4(3):231.
  29. 29.
    Saleh R, Wilton S, Mirabbasi S, Hu A, Greenstreet M, Lemieux G, Pande PP, Grecu C, Ivanov A (2006) System-on-chip: reuse and integration. Proc IEEE 94(6):1050–1069. doi: 10.1109/JPROC.2006.873611 CrossRefGoogle Scholar
  30. 30.
    Stallman RM, DeveloperCommunity G (2009) Using the GNU compiler collection: a GNU manual for GCC version 4.3.3. CreateSpace, ParamountGoogle Scholar
  31. 31.
    Teich J (2012) Hardware/Software codesign: the past, the present, and predicting the future. Proc IEEE 100(Special Centennial Issue):1411–1430. doi: 10.1109/JPROC.2011.2182009
  32. 32.
    Teich J, Blickle T, Thiele L (1997) An evolutionary approach to system-level synthesis. In: Proceedings of the international workshop on hardware/software codesign (CODES/CASHE), pp 167–171Google Scholar
  33. 33.
    Wilhelm R, Engblom J, Ermedahl A, Holsti N, Thesing S, Whalley D, Bernat G, Ferdinand C, Heckmann R, Mitra T, Mueller F, Puaut I, Puschner P, Staschulat J, Stenstrom P (2008) The worst-case execution time problem–overview of methods and survey of tools. ACM Trans Embed Comput Syst 7(3):Art. 36Google Scholar

Copyright information

© Springer Science+Business Media Dordrecht 2017

Authors and Affiliations

  • Soonhoi Ha
    • 1
  • Jürgen Teich
    • 2
  • Christian Haubelt
    • 3
  • Michael Glaß
    • 4
  • Tulika Mitra
    • 5
  • Rainer Dömer
    • 6
  • Petru Eles
    • 7
  • Aviral Shrivastava
    • 8
  • Andreas Gerstlauer
    • 9
  • Shuvra S. Bhattacharyya
    • 10
    • 11
  1. 1.Department of Computer Science and EngineeringSeoul National UniversitySeoulKorea
  2. 2.Department of Computer ScienceFriedrich-Alexander-Universität Erlangen-Nürnberg (FAU)ErlangenGermany
  3. 3.Department of Computer Science and Electrical Engineering, Institute of Applied Microelectronics and Computer EngineeringUniversity of RostockRostockGermany
  4. 4.Institute of Embedded Systems/Real-Time Systems at Ulm UniversityUlmGermany
  5. 5.Department of Computer ScienceSchool of Computing, National University of SingaporeSingaporeSingapore
  6. 6.Center for Embedded and Cyber-Physical Systems, Department of Electrical Engineering and Computer ScienceThe Henry Samueli School of Engineering, University of CaliforniaIrvineUSA
  7. 7.Department of Computer and Information ScienceLinköping UniversityLinköpingSweden
  8. 8.School of Computing, Informatics and Decision Systems EngineeringArizona State UniversityTempeUSA
  9. 9.Department of Electrical and Computer EngineeringThe University of Texas at AustinAustinUSA
  10. 10.Department of Electrical and Computer Engineering and Institute for Advanced Computer StudiesUniversity of MarylandCollege ParkUSA
  11. 11.Department of Pervasive ComputingTampere University of TechnologyTampereFinland

Personalised recommendations