From ba8101a8ba41f88b87f6fbd0027e94bde34ad575 Mon Sep 17 00:00:00 2001 From: Dana Sorensen Date: Thu, 5 Feb 2026 16:18:22 -0700 Subject: [PATCH 1/3] skip read/write buffering implementation for external nodes --- .../read_buffering/implementation_generator.py | 9 ++++++++- .../write_buffering/implementation_generator.py | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/peakrdl_regblock/read_buffering/implementation_generator.py b/src/peakrdl_regblock/read_buffering/implementation_generator.py index bb7a2717..b5aba74f 100644 --- a/src/peakrdl_regblock/read_buffering/implementation_generator.py +++ b/src/peakrdl_regblock/read_buffering/implementation_generator.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING -from systemrdl.node import RegNode +from systemrdl.node import RegNode, AddressableNode +from systemrdl.walker import WalkerAction from ..forloop_generator import RDLForLoopGenerator @@ -17,6 +18,12 @@ def __init__(self, rbuf: 'ReadBuffering') -> None: "read_buffering/template.sv" ) + def enter_AddressableComponent(self, node: AddressableNode) -> WalkerAction: + if node.external: + return WalkerAction.SkipDescendants + super().enter_AddressableComponent(node) + return WalkerAction.Continue + def enter_Reg(self, node: RegNode) -> None: super().enter_Reg(node) diff --git a/src/peakrdl_regblock/write_buffering/implementation_generator.py b/src/peakrdl_regblock/write_buffering/implementation_generator.py index d7b872b2..d286dff8 100644 --- a/src/peakrdl_regblock/write_buffering/implementation_generator.py +++ b/src/peakrdl_regblock/write_buffering/implementation_generator.py @@ -1,7 +1,8 @@ from typing import TYPE_CHECKING from collections import namedtuple -from systemrdl.node import RegNode +from systemrdl.node import RegNode, AddressableNode +from systemrdl.walker import WalkerAction from ..forloop_generator import RDLForLoopGenerator @@ -18,6 +19,12 @@ def __init__(self, wbuf: 'WriteBuffering') -> None: "write_buffering/template.sv" ) + def enter_AddressableComponent(self, node: AddressableNode) -> WalkerAction: + if node.external: + return WalkerAction.SkipDescendants + super().enter_AddressableComponent(node) + return WalkerAction.Continue + def enter_Reg(self, node: 'RegNode') -> None: super().enter_Reg(node) From bba99e7e4259d0f98abe02b0980a20dfadd51384 Mon Sep 17 00:00:00 2001 From: Dana Sorensen Date: Thu, 5 Feb 2026 16:33:48 -0700 Subject: [PATCH 2/3] improve external node skipping for rbuf/wbuf impl --- .../read_buffering/implementation_generator.py | 3 +-- .../write_buffering/implementation_generator.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/peakrdl_regblock/read_buffering/implementation_generator.py b/src/peakrdl_regblock/read_buffering/implementation_generator.py index b5aba74f..3f158234 100644 --- a/src/peakrdl_regblock/read_buffering/implementation_generator.py +++ b/src/peakrdl_regblock/read_buffering/implementation_generator.py @@ -21,8 +21,7 @@ def __init__(self, rbuf: 'ReadBuffering') -> None: def enter_AddressableComponent(self, node: AddressableNode) -> WalkerAction: if node.external: return WalkerAction.SkipDescendants - super().enter_AddressableComponent(node) - return WalkerAction.Continue + return super().enter_AddressableComponent(node) def enter_Reg(self, node: RegNode) -> None: super().enter_Reg(node) diff --git a/src/peakrdl_regblock/write_buffering/implementation_generator.py b/src/peakrdl_regblock/write_buffering/implementation_generator.py index d286dff8..c3b586ce 100644 --- a/src/peakrdl_regblock/write_buffering/implementation_generator.py +++ b/src/peakrdl_regblock/write_buffering/implementation_generator.py @@ -22,8 +22,7 @@ def __init__(self, wbuf: 'WriteBuffering') -> None: def enter_AddressableComponent(self, node: AddressableNode) -> WalkerAction: if node.external: return WalkerAction.SkipDescendants - super().enter_AddressableComponent(node) - return WalkerAction.Continue + return super().enter_AddressableComponent(node) def enter_Reg(self, node: 'RegNode') -> None: super().enter_Reg(node) From d76539dcd05530d622bc5cfe34cab0b51a5dc3a5 Mon Sep 17 00:00:00 2001 From: Dana Sorensen Date: Thu, 19 Feb 2026 10:35:42 -0700 Subject: [PATCH 3/3] fix mypy type error --- .../read_buffering/implementation_generator.py | 4 ++-- .../write_buffering/implementation_generator.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/peakrdl_regblock/read_buffering/implementation_generator.py b/src/peakrdl_regblock/read_buffering/implementation_generator.py index 3f158234..6cb44e7b 100644 --- a/src/peakrdl_regblock/read_buffering/implementation_generator.py +++ b/src/peakrdl_regblock/read_buffering/implementation_generator.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Optional from systemrdl.node import RegNode, AddressableNode from systemrdl.walker import WalkerAction @@ -18,7 +18,7 @@ def __init__(self, rbuf: 'ReadBuffering') -> None: "read_buffering/template.sv" ) - def enter_AddressableComponent(self, node: AddressableNode) -> WalkerAction: + def enter_AddressableComponent(self, node: AddressableNode) -> Optional[WalkerAction]: if node.external: return WalkerAction.SkipDescendants return super().enter_AddressableComponent(node) diff --git a/src/peakrdl_regblock/write_buffering/implementation_generator.py b/src/peakrdl_regblock/write_buffering/implementation_generator.py index c3b586ce..9e30aba9 100644 --- a/src/peakrdl_regblock/write_buffering/implementation_generator.py +++ b/src/peakrdl_regblock/write_buffering/implementation_generator.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Optional from collections import namedtuple from systemrdl.node import RegNode, AddressableNode @@ -19,7 +19,7 @@ def __init__(self, wbuf: 'WriteBuffering') -> None: "write_buffering/template.sv" ) - def enter_AddressableComponent(self, node: AddressableNode) -> WalkerAction: + def enter_AddressableComponent(self, node: AddressableNode) -> Optional[WalkerAction]: if node.external: return WalkerAction.SkipDescendants return super().enter_AddressableComponent(node)