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

- 475 Downloads
- 11 Citations

## Abstract

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.

## Keywords

Hardware/software co-design Embedded systems Partitioning Binary integer programming Genetic algorithm Formal verification## Notes

### Acknowledgments

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.

## References

- 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–202Google Scholar
- 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–263Google Scholar
- 3.Baier C, Katoen J-P (2008) Principles of model checking. The MIT Press, LondonzbMATHGoogle Scholar
- 4.Clarke E, Emerson E, Sifakis J (2009) Model checking: algorithmic verification and debugging. Commun ACM 52(11):74–84CrossRefGoogle Scholar
- 5.Rao S (2009) Engineering optimization: theory and practice, 4th edn. Wiley, HobokenCrossRefGoogle Scholar
- 6.Biere A (2009) Bounded model checking. In: Biere A, van Maare H (eds) Handbook of satisfiability. IOS Press, AmsterdamGoogle 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–176CrossRefGoogle 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–162Google 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–83CrossRefGoogle 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–801Google Scholar
- 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–974CrossRefGoogle 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–340Google Scholar
- 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, IEEEGoogle Scholar
- 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 MayGoogle Scholar
- 15.MathWorks The, Inc. (2013) MATLAB (version R2013a). Natick, MAGoogle Scholar
- 16.Tranquillo J (2011) Matlab for engineering and the life sciences. Synthesis Lectures on Engineering. Morgan & ClaypoolGoogle Scholar
- 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–189Google Scholar
- 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–135CrossRefzbMATHGoogle Scholar
- 19.Belegundu A, Chandrupatla T (2011) Optimization concepts and applications in engineering, 2nd edn. Cambridge University Press, CambridgezbMATHGoogle Scholar
- 20.Haupt R, Haupt S (2004) Practical genetic algorithms, 2nd edn. John Wiley & Sons, HobokenzbMATHGoogle Scholar
- 21.Mitchell M (1999) An introduction to genetic algorithm, 5th edn. MIT Press, BostonGoogle 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–14Google Scholar
- 23.Arató P, Mann ZA, Orbán A (2005) Algorithmic aspects of hardware/software partitioning. ACM Trans Des Autom Electron Syst (TODAES) 10:136–156CrossRefGoogle 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–685Google Scholar
- 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–680Google Scholar
- 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–176Google Scholar
- 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–136Google 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–494Google Scholar
- 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–350Google Scholar
- 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–248Google Scholar
- 31.Jigang W, Srikanthan T, Chen G (2010) Algorithmic aspects of hardware/software partitioning: 1D search algorithms. IEEE Trans Comput 59(4):532–544CrossRefMathSciNetGoogle 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–420Google Scholar
- 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–169Google Scholar
- 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–230Google Scholar