Skip to content

Commit

Permalink
Add validation check for write buffered registers that trigger off of…
Browse files Browse the repository at this point in the history
… their own field. #39
  • Loading branch information
amykyta3 committed Oct 26, 2023
1 parent f2cb242 commit 2fedef6
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/peakrdl_regblock/udps/rw_buffering.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
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):
Expand Down Expand Up @@ -91,6 +91,16 @@ def get_unassigned_default(self, node: 'Node') -> Any:
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"
Expand Down

0 comments on commit 2fedef6

Please sign in to comment.