Representation of synchronous, asynchronous, and polychronous components by clocked guarded actions

Abstract

For the design of embedded systems, many languages are in use, which are based on different models of computation such as event-, data-, and clock-driven paradigms as well as paradigms without a clear notion of time. Systems composed of such heterogeneous components are hard to analyze so that mainly co-simulation by coupling different simulators has been considered so-far. In this article, we propose clocked guarded actions as a unique intermediate representation that can be used as a common basis for simulation, analysis, and synthesis. We show how synchronous, (untimed) asynchronous, and polychronous languages can be translated to clocked guarded actions to demonstrate that our intermediate representation is powerful enough to capture rather different models of computation. Having a unique and composable intermediate representation of these components at hand allows one a simple composition of these components. Moreover, we show how clocked guarded actions can be used for verification by symbolic model checking and simulation by SystemC.

This is a preview of subscription content, access via your institution.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20
Fig. 21
Fig. 22
Fig. 23

Notes

  1. 1.

    http://www.averest.org.

  2. 2.

    This is somehow similar as reading the value ?x of Signal x in Esterel [7], or implicitly using the cell operator in Signal [27].

References

  1. 1.

    Arvind (2003) Bluespec: a language for hardware design, simulation, synthesis and verification invited talk. In: Formal methods and models for codesign (MEMOCODE), Mont Saint-Michel, France. IEEE Comput Soc, New York, pp 249–254

    Google Scholar 

  2. 2.

    Benveniste A, Bournai P, Gautier T, Le Guernic P (1985) SIGNAL: A data flow oriented language for signal processing. Research report 378, INRIA, Rennes, France

  3. 3.

    Benveniste A, Caillaud B, Carloni LP, Sangiovanni-Vincentelli AL (2005) Tag machines. In: Wolf W (ed) Embedded software (EMSOFT), Jersey City, New Jersey, USA. ACM, New York, pp 255–263

    Google Scholar 

  4. 4.

    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–83

    Article  Google Scholar 

  5. 5.

    Berry G (1991) A hardware implementation of pure Esterel. In: Formal methods in VLSI design, Miami, Florida, USA

    Google Scholar 

  6. 6.

    Berry G (1997) Synchronous languages for hardware and software reactive systems. In: Delgado Kloos C, Cerny E (eds) International conference on hardware description languages and their applications (CHDL), Toledo, Spaine. Chapman & Hall, London, p 3

    Google Scholar 

  7. 7.

    Berry G (1998) The foundations of Esterel. In: Plotkin G, Stirling C, Tofte M (eds) Proof, language and interaction: essays in honour of Robin Milner. MIT Press, Cambridge

    Google Scholar 

  8. 8.

    Berry G (1999) The constructive semantics of pure Esterel

  9. 9.

    Berry G, Cosserat L (1985) The Esterel synchronous programming language and its mathematical semantics. In: Brookes SD, Roscoe AW, Winskel G (eds) Seminar on concurrency (CONCUR), Pittsburgh, Pennsylvania, USA. LNCS, vol 197. Springer, Berlin, pp 389–448

    Google Scholar 

  10. 10.

    Bombana M, Bruschi F (2003) SystemC-VHDL co-simulation and synthesis in the HW domain. In: Design, automation and test in Europe (DATE), Munich, Germany. IEEE Comput Soc, New York, pp 20101–20105

    Google Scholar 

  11. 11.

    Boussinot F, de Simone R (1991) The Esterel language. Proc IEEE 79(9):1293–1304

    Article  Google Scholar 

  12. 12.

    Brandt J, Gemünde M, Schneider K (2010) From synchronous guarded actions to SystemC. In: Dietrich M (ed) Methoden und Beschreibungssprachen zur Modellierung und Verifikation von Schaltungen und Systemen (MBMV), Dresden, Germany, pp 187–196. Fraunhofer Verlag

    Google Scholar 

  13. 13.

    Brandt J, Gemünde M, Schneider K, Shukla S, Talpin J-P (2011) Integrating system descriptions by clocked guarded actions. In: Morawiec A, Hinderscheit J, Ghenassia O (eds) Forum on specification and design languages (FDL), Oldenburg, Germany. IEEE Comput Soc, New York, pp 1–8

    Google Scholar 

  14. 14.

    Brandt J, Schneider K (2011) Separate translation of synchronous programs to guarded actions. Internal report 382/11, Department of Computer Science, University of Kaiserslautern, Kaiserslautern, Germany

  15. 15.

    Brandt J, Schneider K, Edwards SA (2012) Translating SHIM to guarded actions. Technical report 387/12. University of Kaiserslautern, Kaiserslautern, Germany

  16. 16.

    Brandt J, Schneider K, Shukla SK (2010) Translating concurrent action oriented specifications to synchronous guarded actions. In: Lee J, Childers BR (eds) Languages, compilers, and tools for embedded systems (LCTES), Stockholm, Sweden. ACM, New York, pp 47–56

    Google Scholar 

  17. 17.

    Caspi P, Halbwachs N, Pilaud D, Plaice JA (1987) LUSTRE: A declarative language for programming synchronous systems. In: Principles of programming languages (POPL), Munich, Germany. ACM, New York, pp 178–188

    Google Scholar 

  18. 18.

    Cassandras CG, Lafortune S (2008) Introduction to discrete event systems, 2nd edn. Springer, Berlin

    Book  MATH  Google Scholar 

  19. 19.

    Chandy KM, Misra J (1989) Parallel program design. Addison-Wesley, Austin

    Book  Google Scholar 

  20. 20.

    Chatelain A, Mathys Y, Placido G, La Rosa A, Lavagno L (2001) High-level architectural co-simulation using Esterel and C. In: Hardware-software codesign (CODES), Copenhagen, Denmark

    Google Scholar 

  21. 21.

    Dershowitz N, Okada M, Sivakumar G (1988) Canonical conditional rewrite systems. In: Lusk EL, Overbeek RA (eds) Conference on automated deduction (CADE), Argonne, Illinois, USA. LNCS, vol 310. Springer, Berlin, pp 538–549

    Google Scholar 

  22. 22.

    Dijkstra EW (1975) Guarded commands, nondeterminacy and formal derivation of programs. Commun ACM 18(8):453–457

    Article  MATH  MathSciNet  Google Scholar 

  23. 23.

    Dill DL (1996) The Murphi verification system. In: Alur R, Henzinger TA (eds) Computer aided verification (CAV), New Brunswick, New Jersey, USA. LNCS, vol 1102. Springer, Berlin, pp 390–393

    Google Scholar 

  24. 24.

    Edwards SA, Tardieu O (2005) SHIM: a deterministic model for heterogeneous embedded systems. In: Wolf W (ed) Embedded software (EMSOFT), Jersey City, New Jersey, USA. ACM, New York, pp 264–272

    Google Scholar 

  25. 25.

    Eker J, Janneck JW (2002) CAL actor language—language report. EECS Department, University of California at Berkeley

  26. 26.

    Eker J, Janneck JW, Lee EA, Liu J, Liu X, Ludvig J, Neuendorffer S, Sachs S, Xiong Y (2003) Taming heterogeneity—the Ptolemy approach. Proc IEEE 91(1):127–144

    Article  Google Scholar 

  27. 27.

    Gamatie A (2010) Designing embedded systems with the SIGNAL programming language. Springer, Berlin

    Book  Google Scholar 

  28. 28.

    Gamatié A, Gautier T, Le Guernic P, Talpin JP (2007) Polychronous design of embedded real-time applications. ACM Transactions on Software Engineering and Methodology (TOSEM) 16(2)

  29. 29.

    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–760

    Article  Google Scholar 

  30. 30.

    Gramlich B, Wirth C (1996) Confluence of terminating conditional rewrite systems revisited. In: Ganzinger H (ed) Rewriting techniques and applications (RTA), New Brunswick, New Jersey, USA. LNCS, vol 1103. Springer, Berlin, pp 245–259

    Google Scholar 

  31. 31.

    Gössler G, Sangiovanni-Vincentelli A (2002) Compositional modeling in Metropolis. In: Sangiovanni-Vincentelli AL, Sifakis J (eds) Embedded software (EMSOFT), Grenoble, France. LNCS, vol 2491. Springer, Berlin, pp 93–107

    Google Scholar 

  32. 32.

    Halbwachs N (1993) Synchronous programming of reactive systems. Kluwer, Dordrecht

    Book  MATH  Google Scholar 

  33. 33.

    Halbwachs N (1998) The declarative code DC, version 1.2a

  34. 34.

    Halbwachs N, Caspi P, Raymond P, Pilaud D (1991) The synchronous dataflow programming language LUSTRE. Proc IEEE 79(9):1305–1320

    Article  Google Scholar 

  35. 35.

    Harel D, Naamad A (1996) The STATEMATE semantics of Statecharts. ACM Trans Softw Eng Methodol 5(4):293–333

    Article  Google Scholar 

  36. 36.

    Haubelt C, Falk J, Keinert J, Schlichter T, Streubühr M, Deyhle A, Hadert A, Teich J (2007) A SystemC-based design methodology for digital signal processing systems. EURASIP J Embed Syst 2007(1):15

    Article  Google Scholar 

  37. 37.

    Herrera F, Villar E (2007) A framework for heterogeneous specification and design of electronic embedded systems in SystemC. ACM Trans Des Autom Electron Syst 12(3):1–31

    Article  MathSciNet  Google Scholar 

  38. 38.

    Hoare CAR (1978) Communicating sequential processes. Commun ACM 21(8):666–677

    Article  MATH  MathSciNet  Google Scholar 

  39. 39.

    Hoare CAR (1983) Communicating sequential processes. Commun ACM 26(1):100–106

    Article  MathSciNet  Google Scholar 

  40. 40.

    Hoe JC, Arvind (1999) Hardware synthesis from term rewriting systems. Technical report CSG-MEMO 421-a, Computer Science and Artificial Intelligence Laboratory. Cambridge, Massachusetts, USA

  41. 41.

    Hoe JC, Arvind (2004) Operation-centric hardware description and synthesis. IEEE Trans Comput-Aided Des Integr Circuits Syst 23(9):1277–1288

    Article  Google Scholar 

  42. 42.

    IEEE (2005) IEEE standard hardware description language based on the Verilog hardware description language. In: IEEE Std, pp 1394–2005

    Google Scholar 

  43. 43.

    IEEE (2005) IEEE standard SystemC language reference manual. In: IEEE Std, New York, New York, USA, December, pp 1666–2005

    Google Scholar 

  44. 44.

    IEEE (2008) IEEE standard VHDL language reference manual. In: IEEE Std, pp 1076–2008

    Google Scholar 

  45. 45.

    Jantsch A (2004) Modeling embedded systems and SoCs. Morgan Kaufmann, Los Altos

    Google Scholar 

  46. 46.

    Jantsch A (2006) Models of computation for networks on chip. In: Application of concurrency to system design (ACSD), Turku, Finland. IEEE Comput Soc, New York, pp 165–178

    Google Scholar 

  47. 47.

    Kaplan S (1984) Conditional rewrite rules. Theor Comput Sci 33:175–193

    Article  MATH  Google Scholar 

  48. 48.

    Koo TJ, Liebman J, Ma C, Horowitz B, Sangiovanni-Vincentelli A, Sastry S (2002) Platform-based embedded software design for multi-vehicle multi-modal systems. In: Sangiovanni-Vincentelli AL, Sifakis J (eds) Embedded software (EMSOFT), Grenoble, France. LNCS, vol 2491. Springer, Berlin, pp 32–45

    Google Scholar 

  49. 49.

    Le Guernic P, Gauthier T, Le Borgne M, Le Maire C (1991) Programming real-time applications with SIGNAL. Proc IEEE 79(9):1321–1336

    Article  Google Scholar 

  50. 50.

    Lee EA, Messerschmitt DG (1987) Static scheduling of synchronous data flow programs for digital signal processing. IEEE Trans Comput 36(1):24–35

    Article  MATH  Google Scholar 

  51. 51.

    Lee EA, Messerschmitt DG (1987) Synchronous data flow. Proc IEEE 75(9):1235–1245

    Article  Google Scholar 

  52. 52.

    Lee EA, Parks T (1995) Dataflow process networks. Proc IEEE 83(5):773–801

    Article  Google Scholar 

  53. 53.

    Lee EA, Sangiovanni-Vincentelli A (1996) Comparing models of computation. In: International conference on computer-aided design (ICCAD), San Jose, California, USA. ACM/IEEE Comput Soc, New York, pp 234–241

    Google Scholar 

  54. 54.

    Lee EA, Sangiovanni-Vincentelli A (1998) A framework for comparing models of computation. IEEE Trans Comput-Aided Des Integr Circuits Syst 17(12):1217–1229

    Article  Google Scholar 

  55. 55.

    Passerone C, Lavagno L, Chiodo M, Sangiovanni-Vincentelli AL (1997) Fast Hardware/Software co-simulation for virtual prototyping and trade-off analysis. In: Design automation conference (DAC), Anaheim, California, USA. ACM, New York, pp 389–394

    Google Scholar 

  56. 56.

    Patel HD, Shukla SK, Bergamaschi RA (2007) Heterogeneous behavioral hierarchy extensions for SystemC. IEEE Trans Comput-Aided Des Integr Circuits Syst 26(4):765–780

    Article  Google Scholar 

  57. 57.

    Poigné A, Holenderski L (1995) Boolean automata for implementing pure Esterel. In: Arbeitspapiere, vol 964. GMD, Sankt Augustin, Germany

  58. 58.

    Rocheteau F, Halbwachs N (1992) Implementing reactive programs on circuits: a hardware implementation of LUSTRE. In: de Bakker JW, Huizing C, de Roever WP, Rozenberg G (eds) Real-time: theory in practice, Mook, The Netherlands. LNCS, vol 600. Springer, Berlin, pp 195–208

    Google Scholar 

  59. 59.

    Rowson JA (1994) Hardware/Software co-simulation. In: Design automation conference (DAC), San Diego, California, USA. ACM, Berlin, pp 439–440

    Google Scholar 

  60. 60.

    ESPRIT Project (1997) Safety critical embedded systems (SACRES). The declarative code DC+, version 1.4, November

  61. 61.

    Sander I, Jantsch A, Lu Z (2003) Development and application of design transformations in ForSyDe. In: Design, automation and test in Europe (DATE), Munich, Germany. IEEE Comput Soc, New York, pp 10364–10369

    Google Scholar 

  62. 62.

    Sangiovanni-Vincentelli AL, Carloni LP, De Bernardinis F, Sgroi M (2004) Benefits and challenges for platform-based design. In: Malik S, Fix L, Kahng AB (eds) Design automation conference (DAC), San Diego, California, USA. ACM, New York, pp 409–414

    Google Scholar 

  63. 63.

    Schneider K (2001) Embedding imperative synchronous languages in interactive theorem provers. In: Application of concurrency to system design (ACSD), Newcastle Upon Tyne, England, UK. IEEE Comput Soc, New York, pp 143–154

    Google Scholar 

  64. 64.

    Schneider K (2009) The synchronous programming language Quartz. Internal report 375. Department of Computer Science, University of Kaiserslautern, Kaiserslautern, Germany, December

  65. 65.

    Schneider K, Brandt J, Schuele T (2006) A verified compiler for synchronous programs with local declarations. Electron Notes Theor Comput Sci 153(4):71–97

    Article  Google Scholar 

  66. 66.

    Singh G, Shukla SK (2007) Algorithms for low power hardware synthesis from concurrent action oriented specifications CAOS. Int J Embed Syst 3(1/2):83–92

    Article  Google Scholar 

  67. 67.

    Todesco ARW, Meng THY (1996) Symphony: a simulation backplane for parallel mixed-mode co-simulation of VLSI systems. In: Design automation conference (DAC), Las Vegas, Nevada, USA. ACM, New York, pp 149–154

    Google Scholar 

  68. 68.

    Zebelein C, Falk J, Haubelt C, Teich J (2008) Classification of general data flow actors into known models of computation. In: Formal methods and models for codesign (MEMOCODE), Anaheim, California, USA. IEEE Comput Soc, New York, pp 119–128

    Google Scholar 

  69. 69.

    Zivojnovic V, Meyr H (1996) Compiled HW/SW co-simulation. In: Design automation conference (DAC), Las Vegas, Nevada, USA. ACM, New York, pp 690–695.

    Google Scholar 

Download references

Author information

Affiliations

Authors

Corresponding author

Correspondence to Jens Brandt.

Additional information

Submitted to special issue on languages, models and model based design for embedded systems.

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Brandt, J., Gemünde, M., Schneider, K. et al. Representation of synchronous, asynchronous, and polychronous components by clocked guarded actions. Des Autom Embed Syst 18, 63–97 (2014). https://doi.org/10.1007/s10617-012-9087-9

Download citation

Keywords

  • Models of computation
  • Co-simulation
  • Synchronous vs. asynchronous models
  • Guarded command language