Skip to content

Commit cf89ea0

Browse files
committed
Fix incorrect traversal into externals for read/write buffered regs. #169
1 parent efbddcc commit cf89ea0

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

src/peakrdl_regblock/read_buffering/storage_generator.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1-
from systemrdl.node import FieldNode, RegNode
1+
from systemrdl.node import FieldNode, RegNode, AddressableNode
2+
from systemrdl.walker import WalkerAction
23

34
from ..struct_generator import RDLStructGenerator
45

56
class RBufStorageStructGenerator(RDLStructGenerator):
7+
def enter_AddressableComponent(self, node: AddressableNode) -> WalkerAction:
8+
if node.external :
9+
return WalkerAction.SkipDescendants
10+
return WalkerAction.Continue
611

712
def enter_Field(self, node: FieldNode) -> None:
813
# suppress parent class's field behavior

src/peakrdl_regblock/write_buffering/storage_generator.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import TYPE_CHECKING
22

3-
from systemrdl.node import FieldNode, RegNode
3+
from systemrdl.node import FieldNode, RegNode, AddressableNode
4+
from systemrdl.walker import WalkerAction
45

56
from ..struct_generator import RDLStructGenerator
67

@@ -12,6 +13,11 @@ def __init__(self, wbuf: 'WriteBuffering') -> None:
1213
super().__init__()
1314
self.wbuf = wbuf
1415

16+
def enter_AddressableComponent(self, node: AddressableNode) -> WalkerAction:
17+
if node.external :
18+
return WalkerAction.SkipDescendants
19+
return WalkerAction.Continue
20+
1521
def enter_Field(self, node: FieldNode) -> None:
1622
# suppress parent class's field behavior
1723
pass

tests/test_validation_errors/testcase.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ def setUp(self) -> None:
1010
# Stub usual pre-test setup
1111
pass
1212

13-
def tearDown(self):
14-
# Delete any cruft that may get generated
15-
self.delete_run_dir()
16-
1713
def assert_validate_error(self, rdl_file: str, err_regex: str) -> None:
1814
self.rdl_file = rdl_file
1915
f = io.StringIO()

0 commit comments

Comments
 (0)