From 2fedef64aaefde91b829046db62adac03d64d163 Mon Sep 17 00:00:00 2001 From: Alex Mykyta Date: Wed, 25 Oct 2023 21:54:01 -0700 Subject: [PATCH] Add validation check for write buffered registers that trigger off of their own field. #39 --- src/peakrdl_regblock/udps/rw_buffering.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/peakrdl_regblock/udps/rw_buffering.py b/src/peakrdl_regblock/udps/rw_buffering.py index 428fd08..37ba6ce 100644 --- a/src/peakrdl_regblock/udps/rw_buffering.py +++ b/src/peakrdl_regblock/udps/rw_buffering.py @@ -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"