In: ACM Transactions on Design Automation of Electronic Systems (TODAES), Volume 8 , Issue 2, pages 141-187. April 2003.
Abstract: Embedded systems often include a traditional processor capable of executing sequential code, but both control and data-dominated tasks are often more naturally expressed using one of the many domain-specific concurrent specification languages. This article surveys a variety of techniques for translating these concurrent specifications into sequential code. The techniques address compiling a wide variety of languages, ranging from dataflow to Petri nets. Each uses a different method, to some degree chosen to match the semantics of concurrent language. Each technique is considered to consist of a partial evaluator operating on an interpreter. This combination provides a clearer picture of how parts of each technique could be used in a different setting.
Keywords: Compilation; Esterel; Lustre; Petri nets; Verilog; code generation; communication; concurrency; dataflow; discrete-event; partial evaluation; sequential.