Automatic Device Driver Synthesis is a research collaboration project between Intel and National Information Communications Technology Australia (NICTA) that aims to synthesize device drivers automatically using formal OS and device specifications. We have built a tool chain that uses Simics* DML Device model sources as an input to the driver synthesis tool chain. The tool chain has a frontend compiler that extracts the device behavior from the Device Modeling Language (DML) model and outputs a formal representation of the device behavior that we refer to as a device specification. The driver synthesis tool combines this specification with a similar O/S specification and applies the principles of game theory to compute a winning strategy on behalf of the driver and eventually converts it into driver C code. This approach aims to use the existing device models for producing device drivers resulting in highly reliable drivers and faster time to market. We have synthesized a number of drivers using our tool chain. Some examples include legacy IDE controller, UART, SDHCI controller, and a minimal Ethernet adapter.
[1]
Sofia Cassel,et al.
Graph-Based Algorithms for Boolean Function Manipulation
,
2012
.
[2]
Archana Ganapathi,et al.
Windows XP Kernel Crash Analysis
,
2006,
LISA.
[3]
Junfeng Yang,et al.
An empirical study of operating systems errors
,
2001,
SOSP.
[4]
Amir Pnueli,et al.
Synthesis of Reactive(1) Designs
,
2006,
VMCAI.