Add validation check for write buffered registers that trigger off of their own field. #39
This commit is contained in:
@@ -4,7 +4,7 @@ from systemrdl.udp import UDPDefinition
|
|||||||
from systemrdl.component import Reg
|
from systemrdl.component import Reg
|
||||||
from systemrdl.rdltypes.references import RefType, PropertyReference
|
from systemrdl.rdltypes.references import RefType, PropertyReference
|
||||||
from systemrdl.rdltypes import NoValue
|
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):
|
class xBufferTrigger(UDPDefinition):
|
||||||
@@ -91,6 +91,16 @@ class WBufferTrigger(xBufferTrigger):
|
|||||||
return node
|
return node
|
||||||
return None
|
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):
|
class BufferReads(UDPDefinition):
|
||||||
name = "buffer_reads"
|
name = "buffer_reads"
|
||||||
|
|||||||
Reference in New Issue
Block a user