Skip to content

doc: extend zephyr:board-supported-hw to include FPGA IP-Core based peripherals #87150

@ibirnbaum

Description

@ibirnbaum

The macro ".. zephyr:board-supported-hw::" in the rst file of a supported board's documentation triggers the generation of a very useful table of supported hardware components, which are provided either by the chip or the board, including the number of available instances and the associated DT compatible string.

At the time being however, it seems that this table misses all supported peripherals of a particular category: those which are instantiated in the system design of an SoC which combines CPU(s) and an FPGA, such as the Xilinx Zynq or the Xilinx ZynqMP (UltraScale+). We already have several such peripherals in-tree and more are currently being proposed in open PRs (for Xilinx-related IPs, look for "AXI" in the peripheral's name).

While their basic support is chip-specific, there are no references to such peripheral instances in the SoC's or board's DT, as their existence isn't even board-specific, but application-specific. The hardware engineer must assure that an instance of a desired peripheral is contained in the system design and that it is mapped to a/several memory address range(s) and a/several interrupt line(s), depending on the particular IP core. The hardware engineer must than pass on this information and the matching FPGA bitstream to the software engineer, who can incorporate it in the target board's DT. With another bitstream however, the application and its contained peripheral IP cores as well as the matching DT might look completely different on exactly the same hardware.

Therefore, there's no way to pick these peripherals up automatically from the SoC and board DTs, as there's no universally valid way to incorporate them due to their application-specific nature. Also, at least some of them have a potential instance count of 0..n.

Describe the solution you'd like
Either an extension of the board-supported-hw macro or the introduction of an additional macro which takes a list of compatible strings so that supported IP core-based peripherals are displayed for all boards built around a SoC which supports them. They should be displayed as a distinct category "FPGA IP core" besides the existing "On-chip" and "On-board".

Describe alternatives you've considered
With the traditional table views generated from the input rst files, which some board docs still contain, the peripheral type specification was all text-based, so it was possible then to just write "FPGA IP core" instead of "On-Chip". However, the currently automatically generated tables are so much more useful and contain more information that doesn't require manual updating, not having a supported hardware table generated using ".. zephyr:board-supported-hw::" doesn't really seem like an option.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions