Previous Contents Next

1   Introduction

Devil is a domain-specific language for specifying the functional interface of a device. Concretely, a device can be described by three layers of abstractions: ports, registers, and device variables. The entry point of a Devil specification is the declaration of a device, parameterized by ports or range of ports, which abstract physical addresses. Ports then allow device registers to be declared; these define the granularity of interaction with the device. Finally, device variables are defined from registers, forming the functional interface to the device.

Only device variables are visible from outside a Devil description; ports and registers are hidden since these abstractions are not part of the functional interface of the device. In fact, the Devil compiler (named Taz) generates for each variable two C procedures which permit to write or read the variable by emitting the proper I/O operations.
Previous Contents Next