ESP: A language for programmable devices

Sanjeev Kumar, Yitzhak Mandelbaum, Xiang Yu, Kai Li

Research output: Contribution to journalArticlepeer-review


This paper presents the design and implementation of Event-driven State-machines Programming (ESP) - a language for programmable devices. In traditional languages, like C, using event-driven state-machines forces a tradeoff that requires giving up ease of development and reliability to achieve high performance ESP is designed to provide all of these three properties simultaneously. ESP provides a comprehensive set of features to support development of compact and modular programs. The ESP compiler compiles the programs into two targets - a C file that can be used to generate efficient firmware for the device; and a specification that can be used by a verifier like SPIN to extensively test the firmware. As a case study, we implemented VMMC firmware that runs on Myrinet network interface cards using ESP. We found that ESP simplifies the task of programming with event-driven state machines. It required an order of magnitude fewer lines of code than the previous implimentation. We also found that model-checking verifiers like SPIN can be used to effectively debug the firmware. Finally, our measurements indicate that the performance overhead of using ESP is relatively small.

Original languageEnglish (US)
Pages (from-to)309-319
Number of pages11
JournalSIGPLAN Notices (ACM Special Interest Group on Programming Languages)
Issue number5
StatePublished - May 2001

All Science Journal Classification (ASJC) codes

  • Software
  • Computer Graphics and Computer-Aided Design


Dive into the research topics of 'ESP: A language for programmable devices'. Together they form a unique fingerprint.

Cite this