Introduction ============ PeakRDL-BusDecoder is a free and open-source bus decoder generator for hierarchical SystemRDL address maps. It produces a synthesizable SystemVerilog RTL module that accepts a single CPU interface (slave side) and fans transactions out to multiple child address spaces (master side). This tool **does not** generate register storage or field logic. It is strictly a bus-routing layer that decodes addresses and forwards requests to child blocks. This is particularly useful for: * Creating hierarchical register maps with multiple sub-components * Splitting a single CPU interface bus to serve multiple independent register blocks * Organizing large address spaces into logical sub-regions * Implementing address decode logic for multi-drop bus architectures The generated bus decoder provides: * Fully synthesizable SystemVerilog RTL (IEEE 1800-2012) * A top-level slave CPU interface and per-child master CPU interfaces * Address decode logic that routes transactions to child address maps * Support for APB3, APB4, and AXI4-Lite (plus plugin-defined CPU interfaces) * Configurable decode depth and array unrolling Quick Start ----------- The easiest way to use PeakRDL-BusDecoder is via the `PeakRDL command line tool `_: .. code-block:: bash # Install PeakRDL-BusDecoder along with the command-line tool python3 -m pip install peakrdl-busdecoder[cli] # Export! peakrdl busdecoder atxmega_spi.rdl -o busdecoder/ --cpuif axi4-lite The exporter writes two files: * A SystemVerilog module (the bus decoder) * A SystemVerilog package (constants like data width and per-child address widths) Key command-line options: * ``--cpuif``: Select the CPU interface (``apb3``, ``apb3-flat``, ``apb4``, ``apb4-flat``, ``axi4-lite``, ``axi4-lite-flat``) * ``--module-name``: Override the generated module name * ``--package-name``: Override the generated package name * ``--addr-width``: Override the slave address width * ``--unroll``: Unroll arrayed children into discrete interfaces * ``--max-decode-depth``: Control how far the decoder descends into hierarchy Looking for VHDL? ----------------- This project generates SystemVerilog RTL. If you prefer using VHDL, check out the sister project which aims to be a feature-equivalent fork of PeakRDL-BusDecoder: `PeakRDL-busdecoder-VHDL `_ Links ----- - `Source repository `_ - `Release Notes `_ - `Issue tracker `_ - `PyPi `_ - `SystemRDL Specification `_ .. toctree:: :hidden: self architecture configuring limitations licensing api .. toctree:: :hidden: :caption: CPU Interfaces cpuif/introduction cpuif/apb cpuif/axi4lite cpuif/internal_protocol cpuif/customizing