Skip to content

Commit a7cb1e3

Browse files
nopeslideolofk
authored andcommitted
added dependency information for vunit
- added fields to edatool File class - "core": name of the core which included the src file - added core dependency and core file map to vunit jinja env - "core_dependencies": mapping of core name to core name of dependencies - "core_files": mapping of core name to src file objects - reworked vunit template - save return value of added files added to libraries - generate mapping of core names to vunit file objects - specify core dependencies as dependencies between core files
1 parent 259e596 commit a7cb1e3

File tree

3 files changed

+45
-9
lines changed

3 files changed

+45
-9
lines changed

edalize/edatool.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,10 +400,17 @@ def _add_include_dir(self, f, incdirs, force_slash=False):
400400

401401
def _get_fileset_files(self, force_slash=False):
402402
class File:
403-
def __init__(self, name, file_type, logical_name):
403+
def __init__(
404+
self,
405+
name,
406+
file_type,
407+
logical_name,
408+
core=None,
409+
):
404410
self.name = name
405411
self.file_type = file_type
406412
self.logical_name = logical_name
413+
self.core = core
407414

408415
incdirs = []
409416
src_files = []
@@ -414,7 +421,8 @@ def __init__(self, name, file_type, logical_name):
414421
_name = _name.replace("\\", "/")
415422
file_type = f.get("file_type", "")
416423
logical_name = f.get("logical_name", "")
417-
src_files.append(File(_name, file_type, logical_name))
424+
core = f.get("core", None)
425+
src_files.append(File(_name, file_type, logical_name, core))
418426
return (src_files, incdirs)
419427

420428
def _param_value_str(self, param_value, str_quote_style="", bool_is_str=False):

edalize/templates/vunit/run.py.j2

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,47 @@ vu = runner.create()
2626
vu.add_{{ extlib }}()
2727
{% endfor %}
2828

29+
files = {}
30+
2931
{% for library, src_files in libraries.items() %}
3032
lib = vu.add_library("{{ library }}")
33+
files.update({
3134
{% for src_file in src_files if src_file|src_file_filter %}
3235
{% if (src_file|src_file_vhdl_standard_filter) %}
33-
lib.add_source_files("{{ src_file|src_file_filter }}", vhdl_standard="{{ src_file|src_file_vhdl_standard_filter }}")
36+
"{{src_file|src_file_filter}}": lib.add_source_file("{{ src_file|src_file_filter }}", vhdl_standard="{{ src_file|src_file_vhdl_standard_filter }}"),
3437
{% else %}
35-
lib.add_source_files("{{ src_file|src_file_filter }}")
38+
"{{src_file|src_file_filter}}": lib.add_source_file("{{ src_file|src_file_filter }}"),
3639
{% endif %}
3740
{% endfor %}
41+
})
42+
3843
# Override this hook to customize the library, e.g. compile-flags etc.
3944
# This allows full access to vunit.ui.Library interface:
4045
runner.handle_library("{{ library }}", lib)
4146

4247
{% endfor %}
4348

49+
core_files = {
50+
{% for core, files in core_files.items() %}
51+
"{{core}}": [
52+
{% for src_file in files %}
53+
files["{{src_file|src_file_filter}}"],
54+
{% endfor %}
55+
],
56+
{% endfor %}
57+
}
58+
59+
{% for core, dependencies in core_dependencies.items() %}
60+
for src_file in core_files["{{core}}"]:
61+
{% if dependencies %}
62+
{% for dependency in dependencies %}
63+
src_file.add_dependency_on(core_files["{{dependency}}"])
64+
{% endfor %}
65+
{% else %}
66+
pass
67+
{% endif %}
68+
69+
{% endfor %}
70+
4471
# override this hook to perform final customization and parametrization of VUnit, custom invokation, etc.
4572
runner.main(vu)

edalize/vunit.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,12 @@ def configure_main(self):
6262
# vunit does not allow empty library name or 'work', so we use `vunit_test_runner_lib`:
6363
libraries = OrderedDict()
6464

65+
core_files = {}
66+
depend = {}
6567
for f in src_files:
6668
lib = f.logical_name if f.logical_name else "vunit_test_runner_lib"
67-
68-
if lib in libraries:
69-
libraries[lib].append(f)
70-
else:
71-
libraries[lib] = [f]
69+
libraries.setdefault(lib, []).append(f)
70+
core_files.setdefault(f.core, []).append(f)
7271

7372
escaped_name = self.name.replace(".", "_")
7473
add_libraries = self.tool_options.get("add_libraries", [])
@@ -79,6 +78,8 @@ def configure_main(self):
7978
"name": escaped_name,
8079
"vunit_runner_path": self.get_vunit_runner_path(src_files),
8180
"libraries": libraries,
81+
"core_dependencies": self.edam["dependencies"],
82+
"core_files": core_files,
8283
"add_libraries": add_libraries,
8384
"tool_options": self.tool_options,
8485
},

0 commit comments

Comments
 (0)