Skip to main content


Log in

Applying SMT-based verification to hardware/software partitioning in embedded systems

  • Published:
Design Automation for Embedded Systems Aims and scope Submit manuscript


When performing hardware/software co-design for embedded systems, the problem of which functions of the system should be implemented in hardware (HW) or in software (SW) emerges. This problem is known as HW/SW partitioning. Over the last 10 years, a significant research effort has been carried out in this area. In this paper, we present two new approaches to solve the HW/SW partitioning problem by using verification techniques based on satisfiability modulo theories (SMT). We compare the results using the traditional technique of integer linear programming, specifically binary integer programming and a modern method of optimization by genetic algorithm. The experimental results show that SMT-based verification techniques can be effective in particular cases to solve the HW/SW partition problem optimally using a state-of-the-art model checker based on SMT solvers, when compared against traditional techniques.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
EUR 32.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or Ebook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1

Similar content being viewed by others


  1. Arató P, Juhász S, Mann ZA, Orbán A, Papp D (2003) Hardware/software partitioning in embedded system design. In Proceedings of the IEEE international symposium of intelligent signal processing, pp 192–202

  2. Mann Z, Orbán A, Arató P (2007) Finding optimal hardware/software partitions. In Formal Methods in System Design v. 31. Springer Science+Business Media, Berlin, pp 241–263

  3. Baier C, Katoen J-P (2008) Principles of model checking. The MIT Press, London

    MATH  Google Scholar 

  4. Clarke E, Emerson E, Sifakis J (2009) Model checking: algorithmic verification and debugging. Commun ACM 52(11):74–84

    Article  Google Scholar 

  5. Rao S (2009) Engineering optimization: theory and practice, 4th edn. Wiley, Hoboken

    Book  Google Scholar 

  6. Biere A (2009) Bounded model checking. In: Biere A, van Maare H (eds) Handbook of satisfiability. IOS Press, Amsterdam

    Google Scholar 

  7. Clarke E, Kroening D, Lerda F (2004) A tool for checking ANSI-C programs. Proc Tools Algorithms Constr Anal Syst LNCS 2988:168–176

    Article  Google Scholar 

  8. Armando A, Mantovani J, Platania L (2006) Bounded model checking of software using SMT solvers instead of SAT solvers. SPIN LNCS 3925:146–162

    Google Scholar 

  9. Armando A, Mantovani J, Platania L (2009) Bounded model checking of software using SMT solvers instead of SAT solvers. Int J Softw Tools Technol Transfer 11(1):69–83

    Article  Google Scholar 

  10. Ganai MK, Gupta A (2006) Accelerating high-level bounded model checking. In Proceedings of the IEEE/ACM International Conference on Computer-Aided Design, pp 794–801

  11. Cordeir L, Fischer B, Marques-Silva J (2012) SMT-based bounded model checking for embedded ANSI-C software. IEEE Trans Softw Eng 38(4):957–974

    Article  Google Scholar 

  12. Cordeiro L, Fischer B (2011) Verifying multi-threaded software using SMT-based context-bounded model checking. In Proceedings of the \(33^{\rm rd}\) International Conference on Software Engineering, pp 331–340

  13. Ramalho M, Lopes M, Rodrigues F, Marques H, Cordeiro L, Fischer B (2013) SMT-based bounded model checking of C++ programs. In Proceedings of the International Conference and Workshops on the Engineering of Computer-Based Systems, pp 147–156, IEEE

  14. Teich J (2012) Hardware/software codesign: the past, the present, and predicting the future. In Proceedings of the IEEE, vol. 100, pp 1411–1430, 13 May

  15. MathWorks The, Inc. (2013) MATLAB (version R2013a). Natick, MA

  16. Tranquillo J (2011) Matlab for engineering and the life sciences. Synthesis Lectures on Engineering. Morgan & Claypool

  17. Hong L, Cai J (2010) The application guide of mixed programming between MATLAB and other programming languages. In Proceedings of the 2nd International Conference on Computer and Automation Engineering (ICCAE), pp 185–189

  18. Daskalaki S, Bribas T, Housos E (2004) An integer programming formulation for a case study in university timetabling. Eur J Oper Res 153:117–135

    Article  MATH  Google Scholar 

  19. Belegundu A, Chandrupatla T (2011) Optimization concepts and applications in engineering, 2nd edn. Cambridge University Press, Cambridge

    MATH  Google Scholar 

  20. Haupt R, Haupt S (2004) Practical genetic algorithms, 2nd edn. John Wiley & Sons, Hoboken

    MATH  Google Scholar 

  21. Mitchell M (1999) An introduction to genetic algorithm, 5th edn. MIT Press, Boston

    Google Scholar 

  22. Guthaus M, Ringenberg J, Ernst D, Austin T, Mudge T, Brown R (2001) MiBench: a free, commercially representative embedded benchmark suite. In Proceedings of the IEEE 4th annual workshop on workload characterization, pp 3–14

  23. Arató P, Mann ZA, Orbán A (2005) Algorithmic aspects of hardware/software partitioning. ACM Trans Des Autom Electron Syst (TODAES) 10:136–156

    Article  Google Scholar 

  24. Wang H, Zhang H (2010) Improved HW/SW partitioning algorithm on efficient use of hardware resource. In Proceedings of the 2nd International Conference on Computer and Automation Engineering, pp 682–685

  25. Sapienza G, Seceleanu T, Crnknovic I (2013) Partitioning decision process for embedded hardware and software deployment. In IEEE 37th Annual Conference and Workshops on Computer Software and Applications, pp 674–680

  26. Bhattacharya A, Konar A, Das S, Grosan C, Abraham A (2008) Hardware software partitioning problem in embedded system design using particle swarm optimization algorithm. In Proceedings of the International Conference on Complex, Intelligent and Software Intensive Systems, pp 171–176

  27. Wang G, Gong W, Kastner R (2006) Application partitioning on programmable platforms using the ant colony optimization. J Embed Comput Embed Process Syst 2:119–136

    Google Scholar 

  28. Luo L, He H, Liao C, Dou Q (2010) Hardware/Ssoftware partitioning for heterogeneous multicore SOC using particle swarm optimization and immune clone (PSO-IC) algorithm. In Proceedings of the IEEE International Conference on Information and Automation, pp 490–494

  29. Jianliang Y, Manman P (2011) Hardware/software partitioning algorithm based on wavelet mutation binary particle swarm optimization. In Proceedings of the IEEE 3rd International Conference on Communication Software and Network, pp 347–350

  30. Jiang Y, Zhang H, Jiao X, Song X, Hung W, Gu M, Sun J (2012) Uncertain model and algorithm for hardware/software partitioning. In Proceedings of the IEEE Computer Society Annual Symposium on VLSI, pp 243–248

  31. Jigang W, Srikanthan T, Chen G (2010) Algorithmic aspects of hardware/software partitioning: 1D search algorithms. IEEE Trans Comput 59(4):532–544

    Article  MathSciNet  Google Scholar 

  32. Eimuri T, Salehi S (2010) Using DPSO and B&B algorithms for hardware/software partitioning in co-design. In Proceedings of the Second International Conference on Computer Research and Development, pp 416–420

  33. Huong P, Binh N (2012) An approach to design embedded systems by multi-objective optimization. In Proceedings of the International Conference on Advanced Technologies for Communications, pp 165–169

  34. Li S, Liu Y, Hu XS, He X, Zhang Y, Zhang P, Yang H (2013) Optimal partition with block-level parallelization in C-to-RTL synthesis for streaming applications. In Proceedings of the 18th Asia and South Pacific Design Automation Conference, pp 225–230

Download references


The authors thank Dr. Z.A. Mann for the contribution with the Part 2 test vectors. The authors also thank the anonymous reviewers for their comments, which helped them to improve the draft version of this paper. This research was supported by CNPq and FAPEAM grants.

Author information

Authors and Affiliations


Corresponding author

Correspondence to Alessandro B. Trindade.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Trindade, A.B., Cordeiro, L.C. Applying SMT-based verification to hardware/software partitioning in embedded systems. Des Autom Embed Syst 20, 1–19 (2016).

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: