Devil: an IDL for hardware programming
Fabrice Mérillon, Laurent Réveillère, Charles Consel, Renaud Marlet, Gilles Muller
Abstract
To keep up with the frantic pace at which devices come out, drivers
need to be quickly developed, debugged and tested. Although a
driver is a critical system component, the driver development
process has made little (if any) progress. The situation is
particularly disastrous when considering the hardware operating
code (i.e., the layer interacting with the device). Writing this
code often relies on inaccurate or incomplete device documentation
and involves assembly-level operations. As a result, hardware
operating code is tedious to write, prone to errors, and hard to
debug and maintain. This paper presents a new approach to
developing hardware operating code based on an Interface Definition
Language (IDL) for hardware functionalities, named Devil. This IDL
allows a high-level definition of the communication with a
device. A compiler automatically checks the consistency of a Devil
definition and generates efficient low-level code. Because the
Devil compiler checks safety critical properties, the long-awaited
notion of robustness for hardware operating code is made
possible. Finally, the wide variety of devices that we have already
specified (mouse, sound, DMA, interrupt, Ethernet, video, and IDE
disk controllers) demonstrates the expressiveness of the Devil
language.