Messages#

Warnings#

The SystemRDL compiler provides several optional warnings. These lint-like checks report constructs that are not inherently wrong, but may be considered risky.

All warning messages are disabled by default.

Individual warning messages can be enabled by passing one or more of the following flags into the warning_flags option of the RDLCompiler constructor. Multiple flags can be combined using bitwise OR (the | operator).

systemrdl.warnings.ALL#

Enable all warnings.

systemrdl.warnings.MISSING_RESET#

Check if a field that implements storage, or is a runtime constant, is missing its reset value.

systemrdl.warnings.IMPLICIT_FIELD_POS#

Check if a field’s bit offset is not explicitly specified.

Some organizations may want to enforce explicit assignment of bit offsets to avoid unexpected field packing.

systemrdl.warnings.IMPLICIT_ADDR#

Check if a component’s address offset is not explicitly assigned.

Some organizations may want to enforce explicit assignment of addresses to avoid unintended address map changes.

systemrdl.warnings.STRIDE_NOT_POW2#

Check if an instance array’s address stride is not a power of two.

systemrdl.warnings.STRICT_SELF_ALIGN#

Enforce that all addressable components are aligned based on their size. Alignment is determined by the component’s size rounded up to the next power of two.

Strict self-alignment may be desireable since it can simplify address decode logic for hierarchical designs.

This rule is a superset of STRIDE_NOT_POW2.

Exceptions#

class systemrdl.RDLCompileError#

Base class for all SystemRDL compiler exceptions

Message Handling#

Warning

The MessagePrinter and MessageHandler classes will be deprecated in a future release. See the following page for details: SystemRDL/systemrdl-compiler#168

class systemrdl.messages.MessagePrinter#

Printer class that handles formatting and emitting compiler messages

This class can be extended in order to provide custom compiler message formatting or logging

emit_message(lines: List[str]) None#

Emit message. Default printer emits messages to stderr

Parameters:

lines (List[str]) – List of strings containing each line of the message

format_message(severity: Severity, text: str, src_ref: SourceRefBase | None) List[str]#

Formats the message prior to emitting it.

Parameters:
  • severity (Severity) – Message severity.

  • text (str) – Body of message

  • src_ref (SourceRefBase) – Reference to source context object

Returns:

List of strings for each line of the message

Return type:

list

get_selection_context(src_ref: DetailedFileSourceRef, color_code: str) List[str]#

Generates the message context lines

class systemrdl.messages.MessageHandler#
error(text: str, src_ref: SourceRefBase | None = None) None#

Print an error message. Sets had_error to True.

Parameters:
  • text (str) – Message text

  • src_ref (SourceRefBase) – Optional source reference object to provide message context

fatal(text: str, src_ref: SourceRefBase | None = None) NoReturn#

Print a fatal message.

Parameters:
  • text (str) – Message text

  • src_ref (SourceRefBase) – Optional source reference object to provide message context

Raises:

RDLCompileError – Always raises this exception

had_error#

Set to True if an error message was ever emitted

warning(text: str, src_ref: SourceRefBase | None = None) None#

Print a warning message.

Parameters:
  • text (str) – Message text

  • src_ref (SourceRefBase) – Optional source reference object to provide message context