SDB - Self-describing Bus

The idea of a self-description for a bus appeared while working on White Rabbit and related projects that make massive use of FPGA devices. Separately and concurrently, both the CERN and the GSI working groups identified the need for some way to self-detect the contents of a specific logic device after it is programmed. We envisioned that if the internal FPGA bus could enumerate its own content, we would get a lot of advantages.

As usual in engineering, we wanted a system that was as simple as possible, yet open to future extensions without introducing compatibility issues. While our internal bus is Wishbone, we designed the structures to be generic so other
bus implementations may use them.

The Self Description Bus allows to enumerate the cores that are live in the current fpga binary, either from the host computer or from the internal soft-core CPU in the FPGA itself. It is also used as a simple filesystem in our EEPROM devices, so data can be easily accessed by both the host and the soft core that lives in the FPGA itself.

The current specification is already in use in some of our designs.

Contact

Alessandro Rubini

Latest News

SDB Specification Version 1.1 is released

SDB-1.1 is a compatible upgrade of SDB-1.0. It adds two informative records, thanks to Matthieu Cattin, and includes some rewording and clarification (especially about absence of interrupts). The repository also includes sdbfs, which was born as a separate project.

SDB Specification Version 1.0 is released

The tag sdb-v1.0 has been in the reposity since July 24th 2012, and now the specification is available on our document section (Document).