Processing Input#
File order and linking#
The PeakRDL command line tool is capable of processing multiple input files and linking them together. Component declarations are added to a common namespace that is shared across files, allowing components to be instantiated in another file.
Since PeakRDL processes and links files in-order, it is important to provide the list of files in the correct sequence - dependencies first, top-level last:
peakrdl <command> subblock1.rdl subblock2.rdl top.rdl
Top-level elaboration#
Unless specified otherwise, PeakRDL will elaborate the last addrmap component that was declared in the root namespace.
For example, given the following input file:
addrmap common {
reg {
field {} spam_y;
} spam_x;
};
addrmap foo {
common block_a;
common block_b;
};
addrmap bar {
common block_x;
common block_y;
};
By default, PeakRDL will elaborate bar
as the top-level node, since it is last:
$ peakrdl dump example.rdl
0x0-0x3: bar.block_x.spam_x
0x4-0x7: bar.block_y.spam_x
Or you can explicitly choose an alternative addrmap to elaborate using the --top
flag:
$ peakrdl dump example.rdl --top foo
0x0-0x3: foo.block_a.spam_x
0x4-0x7: foo.block_b.spam_x
If you are not sure what targets are available as top-levels, you can list all
that are available using the globals
command:
$ peakrdl globals example.rdl
common
foo
bar
Supported Input Formats#
PeakRDL can support intermixing various input formats.
SystemRDL 2.0#
SystemRDL is the primary register model source format for PeakRDL.
For a full description of the register description language standard, see Accellera’s SystemRDL 2.0 specification.
Internally, PeakRDL uses the systemrdl-compiler package to interpret and elaborate RDL input.
IP-XACT XML#
PeakRDL is capable of importing IP-XACT XML files. These are converted into SystemRDL semantics by the importer. For more details on how the importer works, see the PeakRDL-ipxact documentation.
For more details on the IP-XACT format, see Accellera’s standards page
Your custom importer extension#
PeakRDL’s capabilities can be extended with your own custom importer plugin. See more details here: Defining your own Importer