Specifying Hardware Communication as Programs
This work addresses the problem of manual, error-prone implementation of separate driver and monitor programs for hardware protocols, offering a unified specification approach.
The authors propose a DSL for specifying hardware communication protocols as programs, enabling automatic generation of both drivers and monitors from a single specification, reducing manual effort and inconsistencies. They plan to evaluate on real-world interconnects like Wishbone and AXI-Stream.
To test and debug hardware modules, it is common to write two programs: a driver, which translates high-level transactions into interactions on the module's input and output signals, and a monitor, which analyzes a signal-level execution trace and recognizes a transaction. These two programs are commonly implemented separately for each hardware protocol, but this separation entails manual effort and risks inconsistencies. We advocate an alternative approach. We present a DSL in which users specify hardware communication protocols as succinct imperative programs. Crucially, the same specification can be used to both drive designs and monitor transactions. We present the design of a tool, which given a specification in our DSL and a waveform, automatically infers a transaction-level trace consistent with the waveform. We discuss plans to evaluate our DSL on real-world interconnects such as Wishbone and AXI-Stream.