Skip to content

Commit f987793

Browse files
committed
command line flag to copy reg_utils.vhd (#30)
1 parent 783eade commit f987793

File tree

5 files changed

+27
-4
lines changed

5 files changed

+27
-4
lines changed

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
recursive-include src/peakrdl_regblock_vhdl *.vhd
2+
recursive-include hdl-src *.vhd
23
prune tests

src/peakrdl_regblock_vhdl/__peakrdl__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class Exporter(ExporterSubcommandPlugin):
2424
"default_reset": schema.Choice(["rst", "rst_n", "arst", "arst_n"]),
2525
"err_if_bad_addr": schema.Boolean(),
2626
"err_if_bad_rw": schema.Boolean(),
27+
"copy_utils_pkg": schema.Boolean(),
2728
}
2829

2930
@functools.lru_cache()
@@ -161,6 +162,13 @@ def add_exporter_arguments(self, arg_group: 'argparse._ActionsContainer') -> Non
161162
performed to a read-only or write-only register."""
162163
)
163164

165+
arg_group.add_argument(
166+
"--copy-utils-pkg",
167+
action="store_true",
168+
default=False,
169+
help="Copy the reg_utils.vhd package into the output directory."
170+
)
171+
164172
def do_export(self, top_node: 'AddrmapNode', options: 'argparse.Namespace') -> None:
165173
cpuifs = self.get_cpuifs()
166174

@@ -224,5 +232,6 @@ def do_export(self, top_node: 'AddrmapNode', options: 'argparse.Namespace') -> N
224232
default_reset_activelow=default_reset_activelow,
225233
err_if_bad_addr=options.err_if_bad_addr or self.cfg['err_if_bad_addr'],
226234
err_if_bad_rw=options.err_if_bad_rw or self.cfg['err_if_bad_rw'],
235+
copy_utils_pkg=options.copy_utils_pkg,
227236
default_reset_async=default_reset_async,
228237
)

src/peakrdl_regblock_vhdl/exporter.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import shutil
23
from typing import TYPE_CHECKING, Union, Any, Type, Optional, Set, List
34
from collections import OrderedDict
45

@@ -126,6 +127,8 @@ def export(self, node: Union[RootNode, AddrmapNode], output_dir:str, **kwargs: A
126127
If overriden to True: If an illegal access is performed to a read-only or write-only
127128
register, the CPUIF response signal shows an error. For example: APB.PSLVERR = 1'b1,
128129
AXI4LITE.*RESP = 2'b10.
130+
copy_utils_pkg: bool
131+
If overridden to True, copy the reg_utils.vhd package into the output directory.
129132
"""
130133
# If it is the root node, skip to top addrmap
131134
if isinstance(node, RootNode):
@@ -201,6 +204,12 @@ def export(self, node: Union[RootNode, AddrmapNode], output_dir:str, **kwargs: A
201204
stream = template.stream(context)
202205
stream.dump(module_file_path)
203206

207+
if self.ds.copy_utils_pkg:
208+
shutil.copyfile(
209+
os.path.join(os.path.dirname(__file__), "..", "..", "hdl-src", "reg_utils.vhd"),
210+
os.path.join(output_dir, "reg_utils.vhd")
211+
)
212+
204213
if hwif_report_file:
205214
hwif_report_file.close()
206215

@@ -280,6 +289,9 @@ def __init__(self, top_node: AddrmapNode, kwargs: Any) -> None:
280289
self.err_if_bad_addr = kwargs.pop("err_if_bad_addr", False) # type: bool
281290
self.err_if_bad_rw = kwargs.pop("err_if_bad_rw", False) # type: bool
282291

292+
# General exporter options
293+
self.copy_utils_pkg = kwargs.pop("copy_utils_pkg", False) # type: bool
294+
283295
#------------------------
284296
# Info about the design
285297
#------------------------

tests/lib/base_testcase.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ def export_regblock(self):
108108
rdlc.compile_file(rdl_file)
109109
root = rdlc.elaborate(self.rdl_elab_target, "regblock", self.rdl_elab_params)
110110

111-
for lang, exporter, cpuif_cls in (
112-
("", self.sv_exporter, self.cpuif.sv_cpuif_cls),
113-
("vhdl_", self.vhdl_exporter, self.cpuif.vhdl_cpuif_cls),
111+
for lang, exporter, cpuif_cls, kwargs in (
112+
("", self.sv_exporter, self.cpuif.sv_cpuif_cls, {}),
113+
("vhdl_", self.vhdl_exporter, self.cpuif.vhdl_cpuif_cls, {"copy_utils_pkg": True}),
114114
):
115115
exporter.export(
116116
root,
@@ -129,6 +129,7 @@ def export_regblock(self):
129129
default_reset_async=self.default_reset_async,
130130
err_if_bad_addr=self.err_if_bad_addr,
131131
err_if_bad_rw=self.err_if_bad_rw,
132+
**kwargs,
132133
)
133134
vhdl_adapter = VhdlAdapter(self.sv_exporter, self.vhdl_exporter, self.cpuif)
134135
vhdl_adapter.export(self.get_run_dir())

tests/lib/simulators/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def vhdl_tb_files(self) -> List[str]:
3333
files = []
3434
files.extend(file for file in self.testcase.cpuif.get_sim_files() if file.endswith(".vhd"))
3535
files.extend(file for file in self.testcase.get_extra_tb_files() if file.endswith(".vhd"))
36-
files.append("../../../../hdl-src/reg_utils.vhd")
36+
files.append("reg_utils.vhd")
3737
files.append("vhdl_regblock_pkg.vhd")
3838
files.append("vhdl_regblock.vhd")
3939
files.append("regblock_adapter.vhd")

0 commit comments

Comments
 (0)