Add validation check for write buffered registers that trigger off of their own field. #39

This commit is contained in:
Alex Mykyta
2023-10-25 21:54:01 -07:00
parent f2cb2425b3
commit 2fedef64aa

View File

@@ -4,7 +4,7 @@ from systemrdl.udp import UDPDefinition
from systemrdl.component import Reg
from systemrdl.rdltypes.references import RefType, PropertyReference
from systemrdl.rdltypes import NoValue
from systemrdl.node import Node, RegNode, VectorNode, SignalNode
from systemrdl.node import Node, RegNode, VectorNode, SignalNode, FieldNode
class xBufferTrigger(UDPDefinition):
@@ -91,6 +91,16 @@ class WBufferTrigger(xBufferTrigger):
return node
return None
def validate(self, node: Node, value: Any) -> None:
super().validate(node, value)
if isinstance(value, FieldNode):
if value.parent == node:
self.msg.error(
"Trigger for a write-buffered register cannot be a field "
"within the same register since the buffering makes it impossible to trigger."
)
class BufferReads(UDPDefinition):
name = "buffer_reads"