You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Regarding the 'external' type, I don't find the specification 2.0 to be super clear for fields (and signals).
For example, it is stated in 9.6.1:
A field with an onread value of ruser shall be external
But in 9.3 the syntax does not shows the possibility for the 'external' type (while the memory and register sections clearly show it). The systemrdl compiler does not allows it either (core/ComponentVisitor.py)
internal/external instance type is not valid for signal or field components
But inside the class LateElabListener (core/elaborate.py), the fields inherit their parent external property:
def enter_Field(self, node: FieldNode) -> None:
# Inherits internal/external of parent reg
assert node.parent is not None
node.inst.external = node.parent.inst.external
On the plugin side, it uses the node external property which is true if the parent register is external but then generates an error from the compiler side as this is not accepted (above quote from core/ComponentVisitor.py).
Is there any interest to fix this inconsistency between this plugin and the systemrdl-compiler? I did a quick fix on my fork and it is working for me, but I didn't do extensive testing (e.g., running the repo tests). I'll be happy to propose a PR if this is of interest.
Hello,
Regarding the 'external' type, I don't find the specification 2.0 to be super clear for fields (and signals).
For example, it is stated in 9.6.1:
But in 9.3 the syntax does not shows the possibility for the 'external' type (while the memory and register sections clearly show it). The systemrdl compiler does not allows it either (core/ComponentVisitor.py)
But inside the class LateElabListener (core/elaborate.py), the fields inherit their parent external property:
On the plugin side, it uses the node external property which is true if the parent register is external but then generates an error from the compiler side as this is not accepted (above quote from core/ComponentVisitor.py).
So the specification clearly state that a field can be external, but it does not specify how this is translated in SystemRDL.
The text was updated successfully, but these errors were encountered: