FPGA Configuration Space Specification (also known as SDB)
This project is an effort to introduce a configuration space specification for internal FPGA buses (interconnects, crossbars). Our initial target is Wishbone, but the specification is generic. The output of this project is called SDB (Self Describing Bus) even if the project (thus the repository) is called fpga-config-space.
SDB 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
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. And we have some sdb implementation guidelines
Version 1.1 of SDB the specification is available in PDF
format, together with the header
It has been built from the repository of this project, so you can get the git tree instead and run Latex on it.
We chose, for the time being, to not describe interrupts. After some
drafts for one such description, Wesley Terpstra
explained why legacy interrupts should be avoided in a SoC design and MSI-like interrupts don't need an external description.
His complete reasoning is here: Interrupts
The implementation as VHDL is part of the respective projects.
Code for the Linux kernel (both as a bus driver and a file system
driver) is being written. Available code
is part of this repository, but it's still work in progress. Sdbfs is being used in our EEPROMs using
the user-space tools and library currently in the "sdbfs" subdir of the repository
|09-05-2011||Start of project|
|09-05-2011||Added draft of specification (available in Repository section)|
|10-05-2011||Added code for wishbone simulator (source code available in Repository or Files section)|
|21-06-2012||After long discussions, the specification is published|
|11-04-2013||Version 1.1 of the sdb specification, including sdbfs material and more|
|12-10-2014||SDB presented at the OpenRISC Conference 2014|
|29-04-2016||Added MSI feature to wishbone module|
|12-03-2018||Added Kernel 4+ support (wishbone module)|
|17-03-2022||Added Kernel 4+ support (legacy-vme64x-core module)|