How Different Are Esterel and SystemC

  • Jens Brandt
  • Klaus Schneider
Part of the Lecture Notes in Electrical Engineering book series (LNEE, volume 10)


In this paper, we compare the underlying models of computation of the system description languages SystemC and Esterel. Although these languages have a rather different origin, we show that the execution/simulation of programs written in these languages consists of many corresponding computation steps. As a consequence, we identify different classes of Esterel programs that can be easily translated to SystemC processes and vice versa. Moreover, we identify concepts like preemption in Esterel that are difficult to implement in a structured way in SystemC.


Synchronous Languages SystemC Models of Computation 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    A. Benveniste, P. Caspi, S. Edwards, N. Halbwachs, P. Le Guernic, and R. de Simone. The synchronous languages twelve years later. Proceedings of the IEEE, 91(1):64–83, 2003.CrossRefGoogle Scholar
  2. 2.
    G. Berry. The foundations of Esterel. In G. Plotkin, C. Stirling, and M. Tofte, editors, Proof, Language and Interaction: Essays in Honour of Robin Milner. MIT Press, Cambridge, USA 1998.Google Scholar
  3. 3.
    G. Berry. The constructive semantics of pure Esterel., July 1999.
  4. 4.
    G. Berry and L. Cosserat. The synchronous programming language Esterel and its mathematical semantics. In S.D. Brookes, A.W. Roscoe, and G. Winskel, editors, Seminar on Concurrency, volume 197 of LNCS, pages 389–448, Springer Pittsburgh, PA 1984.Google Scholar
  5. 5.
    G. Berry and R. de Simone. The Esterel language. Proceedings of the IEEE, 79:1293–1304, 1991.CrossRefGoogle Scholar
  6. 6.
    J.A. Brzozowski and C.-J.H. Seger. Asynchronous Circuits. Springer, New York 1995.Google Scholar
  7. 7.
    S. Edwards. Compiling concurrent languages for sequential processors. ACM Transactions on Design Automation of Electronic Systems (TODAES), 8(2):141–187, 2003.CrossRefGoogle Scholar
  8. 8.
    N. Halbwachs. Synchronous Programming of Reactive Systems. Kluwer Dordrecht, 1993.Google Scholar
  9. 9.
    IEEE Computer Society. IEEE Standard VHDL Language Reference Manual. New York, 2000. IEEE Std. 1076–2000.Google Scholar
  10. 10.
    IEEE Computer Society. IEEE Standard Hardware Description Language Based on the Verilog Hardware Description Language. New York, 2001. IEEE Std. 1394–2001.Google Scholar
  11. 11.
    IEEE Computer Society. IEEE Standard SystemC Language Reference Manual. New York, USA, December 2005. IEEE Std. 1666–2005.Google Scholar
  12. 12.
    IEEE Computer Society. IEEE Standard Esterel Language Reference Manual. New York, USA, to appear 2007. IEEE Std. 1778.Google Scholar
  13. 13.
    Open SystemC Initiative. SystemC Version 2.1 User’s Guide, 2005.Google Scholar
  14. 14.
    W. Müller, J. Ruf, D. Hoffmann, J. Gerlach, T. Kropf, and W. Rosenstiel. The simulation semantics of SystemC. In Design, Automation and Test in Europe (DATE), pages 64–70, IEEE Computer Society Munich, Germany, 2001.Google Scholar
  15. 15.
    W. Müller, J. Ruf, and W. Rosenstiel. An ASM based SystemC simulation semantics. In W. Müller, J. Ruf, and W. Rosenstiel, editors, SystemC–Methodologies and Applications, pages 97–126, Kluwer Dordrecht, 2003.Google Scholar
  16. 16.
    K. Schneider. Proving the equivalence of microstep and macrostep semantics. In V. Carreño, C. Muñoz, and S. Tahar, editors, Theorem Proving in Higher Order Logic (TPHOL), volume 2410 of LNCSpages 314–331, Springer Hampton, VA, 2002.Google Scholar
  17. 17.
    K. Schneider, J. Brandt, and T. Schuele. A verified compiler for synchronous programs with local declarations. Electronic Notes in Theoretical Computer Science (ENTCS), 153(4):71–97, 2006.CrossRefGoogle Scholar
  18. 18.
    K. Schneider, J. Brandt, T. Schuele, and T. Tuerk. Improving constructiveness in code generators. In Synchronous Languages, Applications, and Programming (SLAP), Edinburgh, 2005.Google Scholar
  19. 19.
    K. Schneider, J. Brandt, T. Schuele, and T. Tuerk. Maximal causality analysis. In Application of Concurrency to System Design (ACSD), pages 106–115, IEEE Computer Society St. Malo, France, 2005.CrossRefGoogle Scholar
  20. 20.
    K. Schneider, J. Brandt, and E. Vecchié. Efficient code generation from synchronous programs. In F. Brewer and J.C. Hoe editors, Formal Methods and Models for Codesign (MEMOCODE), pages 165–174, IEEE Computer Society Napa Valley, CA, 2006.Google Scholar
  21. 21.
    K. Schneider, J. Brandt, and E. Vecchié. Modular compilation of synchronous programs. In IFIP Conference on Distributed and Parallel Embedded Systems (DIPES), Springer Braga, Portugal, 2006.Google Scholar
  22. 22.
    R.K. Shyamasundar, F. Doucet, R. Gupta, and I.H. Krüger. Compositional reactive semantics of SystemC and verification in RuleBase. In Workshop on Next Generation Design and Verification Methodologies for Distributed Embedded Control Systems, 2007.Google Scholar
  23. 23.
    B. Stroustrup. The C++ Programming Language Series in Computer Science. Addison-Wesley, Reading, MA, 1986.Google Scholar
  24. 24.
    J. Zeng, C. Soviani, and S.A. Edwards. Generating fast code from concurrent program dependence graphs. In Languages, Compilers, and Tools for Embedded Systems (LCTES), pages 175–181, ACM Washington, DC, 2004.Google Scholar

Copyright information

© Springer Science + Business Media B.V 2008

Authors and Affiliations

  • Jens Brandt
    • 1
  • Klaus Schneider
    • 1
  1. 1.Embedded Systems GroupUniversity of KaiserslauternGermany

Personalised recommendations