Known Issues & Limitations

This page lists anything from the SystemRDL 2.0 spec that the systemrdl-compiler does not support yet.

Constraints

SystemRDL constraint blocks are not implemented yet.

No support for heterogeneous arrays

RDL spec allows parameters to be overridden via a dynamic property assignment. One feature described is the ability to modify a subset of an array of instances via dynamic assignment. This would result in an array of instances that no longer share the same properties.

Currently, I don’t see a convincing reason to support dynamic property modifications to sub-ranges of an instance array. Dynamic assignments are only supported when modifying the entire instance array, and without using an array subscript (even if the subscript is a range that represents the entire array).

For example:

my_reg my_inst[16];

// Modifying all instances in the array is supported
my_inst -> some_property = 1234;

// Modifying a subset is not supported
my_inst[2] -> some_property = 1234;
my_inst[1:4] -> some_property = 1234;
my_inst[0:15] -> some_property = 1234;

Property assignments using references shall be constant

Use of property or component references are only supported if the resulting assignment value can be determined during RDL elaboration-time.

Supported:

some_property = PARAMETER ? my_reg.my_field : my_reg.my_field->some_property;

Not supported:

some_property = my_signal ? my_field : my_field->some_property;