From 60935b1d2248cbb95296fd01695aa83ab81f2c84 Mon Sep 17 00:00:00 2001 From: Alex Mykyta Date: Wed, 30 Aug 2023 22:16:24 -0700 Subject: [PATCH] Add option to show field output to dump command. #30 --- src/peakrdl/__about__.py | 2 +- src/peakrdl/cmd/dump.py | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/peakrdl/__about__.py b/src/peakrdl/__about__.py index 777f190..3e2f46a 100644 --- a/src/peakrdl/__about__.py +++ b/src/peakrdl/__about__.py @@ -1 +1 @@ -__version__ = "0.8.0" +__version__ = "0.9.0" diff --git a/src/peakrdl/cmd/dump.py b/src/peakrdl/cmd/dump.py index ecb6b29..5693540 100644 --- a/src/peakrdl/cmd/dump.py +++ b/src/peakrdl/cmd/dump.py @@ -2,7 +2,7 @@ import math from systemrdl import RDLListener, RDLWalker -from systemrdl.node import AddrmapNode, RegNode +from systemrdl.node import AddrmapNode, RegNode, FieldNode from ..subcommand import ExporterSubcommand @@ -11,9 +11,10 @@ class DumpListener(RDLListener): - def __init__(self, hex_digits:int, unroll: bool) -> None: + def __init__(self, hex_digits: int, unroll: bool, show_fields: bool) -> None: self.hex_digits = hex_digits self.unroll = unroll + self.show_fields = show_fields def enter_Reg(self, node: RegNode) -> None: if self.unroll: @@ -28,6 +29,14 @@ def enter_Reg(self, node: RegNode) -> None: node.get_path(empty_array_suffix="[{dim:d}]") ) + def enter_Field(self, node: FieldNode) -> None: + if not self.show_fields: + return + + print(f"\t[{node.msb}:{node.lsb}] {node.inst_name}") + + + class Dump(ExporterSubcommand): name = "dump" @@ -42,10 +51,16 @@ def add_exporter_arguments(self, arg_group: 'argparse._ActionsContainer') -> Non action="store_true", help="Unroll arrays" ) + arg_group.add_argument( + "-F", "--fields", + default=False, + action="store_true", + help="Show fields" + ) def do_export(self, top_node: AddrmapNode, options: 'argparse.Namespace') -> None: hex_digits = math.ceil(top_node.total_size.bit_length() / 4) walker = RDLWalker(unroll=options.unroll) - listener = DumpListener(hex_digits, options.unroll) + listener = DumpListener(hex_digits, options.unroll, options.fields) walker.walk(top_node, listener)