opencos-eda 0.2.48__tar.gz → 0.2.50__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {opencos_eda-0.2.48/opencos_eda.egg-info → opencos_eda-0.2.50}/PKG-INFO +1 -1
- opencos_eda-0.2.50/opencos/__init__.py +6 -0
- opencos_eda-0.2.50/opencos/_version.py +19 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/flist.py +8 -7
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/multi.py +14 -15
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/sim.py +5 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/sweep.py +3 -2
- opencos_eda-0.2.50/opencos/deps/defaults.py +69 -0
- opencos_eda-0.2.50/opencos/deps/deps_commands.py +419 -0
- opencos_eda-0.2.50/opencos/deps/deps_file.py +326 -0
- opencos_eda-0.2.50/opencos/deps/deps_processor.py +670 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/deps_schema.py +7 -8
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda.py +84 -64
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda_base.py +585 -316
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda_config.py +85 -14
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda_config_defaults.yml +36 -4
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda_extract_targets.py +22 -14
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda_tool_helper.py +33 -7
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/export_helper.py +166 -86
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/export_json_convert.py +31 -23
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/files.py +2 -1
- {opencos_eda-0.2.48/opencos → opencos_eda-0.2.50/opencos/hw}/oc_cli.py +9 -4
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/names.py +0 -4
- opencos_eda-0.2.50/opencos/peakrdl_cleanup.py +26 -0
- opencos_eda-0.2.50/opencos/seed.py +36 -0
- opencos_eda-0.2.50/opencos/tests/deps_files/no_deps_here/DEPS.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/helpers.py +3 -2
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/test_deps_helpers.py +35 -32
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/test_eda.py +36 -29
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/test_eda_elab.py +7 -4
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/test_eda_synth.py +1 -1
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/test_oc_cli.py +1 -1
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/test_tools.py +4 -2
- opencos_eda-0.2.50/opencos/tools/__init__.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/iverilog.py +2 -2
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/modelsim_ase.py +24 -2
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/questa.py +5 -3
- opencos_eda-0.2.50/opencos/tools/questa_fse.py +57 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/riviera.py +1 -1
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/slang.py +9 -3
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/surelog.py +1 -1
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/verilator.py +26 -1
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/vivado.py +34 -27
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/yosys.py +4 -3
- opencos_eda-0.2.50/opencos/util.py +889 -0
- opencos_eda-0.2.50/opencos/utils/__init__.py +0 -0
- opencos_eda-0.2.50/opencos/utils/markup_helpers.py +98 -0
- opencos_eda-0.2.50/opencos/utils/str_helpers.py +111 -0
- opencos_eda-0.2.50/opencos/utils/subprocess_helpers.py +108 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50/opencos_eda.egg-info}/PKG-INFO +1 -1
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos_eda.egg-info/SOURCES.txt +13 -3
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos_eda.egg-info/entry_points.txt +1 -1
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/pyproject.toml +8 -3
- opencos_eda-0.2.48/opencos/__init__.py +0 -4
- opencos_eda-0.2.48/opencos/_version.py +0 -16
- opencos_eda-0.2.48/opencos/deps_helpers.py +0 -1346
- opencos_eda-0.2.48/opencos/peakrdl_cleanup.py +0 -20
- opencos_eda-0.2.48/opencos/seed.py +0 -28
- opencos_eda-0.2.48/opencos/util.py +0 -831
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/LICENSE +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/LICENSE.spdx +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/README.md +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/_waves_pkg.sv +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/__init__.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/build.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/elab.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/export.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/lec.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/open.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/proj.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/shell.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/synth.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/targets.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/upload.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/commands/waves.py +0 -0
- {opencos_eda-0.2.48/opencos/tests → opencos_eda-0.2.50/opencos/deps}/__init__.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda_config_max_verilator_waivers.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda_config_reduced.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/eda_deps_bash_completion.bash +0 -0
- {opencos_eda-0.2.48/opencos/tools → opencos_eda-0.2.50/opencos/hw}/__init__.py +0 -0
- {opencos_eda-0.2.48/opencos → opencos_eda-0.2.50/opencos/hw}/pcie.py +0 -0
- /opencos_eda-0.2.48/opencos/tests/deps_files/no_deps_here/DEPS.yml → /opencos_eda-0.2.50/opencos/tests/__init__.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/custom_config.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/deps_files/command_order/DEPS.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/deps_files/error_msgs/DEPS.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/deps_files/iverilog_test/DEPS.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/deps_files/non_sv_reqs/DEPS.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/deps_files/tags_with_tools/DEPS.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/deps_files/test_err_fatal/DEPS.yml +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/test_build.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tests/test_deps_schema.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/invio.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/invio_helpers.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/invio_yosys.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/slang_yosys.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos/tools/tabbycad_yosys.py +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos_eda.egg-info/dependency_links.txt +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos_eda.egg-info/requires.txt +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/opencos_eda.egg-info/top_level.txt +0 -0
- {opencos_eda-0.2.48 → opencos_eda-0.2.50}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: opencos-eda
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.50
|
|
4
4
|
Summary: A simple Python package for wrapping RTL simuliatons and synthesis
|
|
5
5
|
Author-email: Simon Sabato <simon@cognichip.ai>, Drew Ranck <drew@cognichip.ai>
|
|
6
6
|
Project-URL: Homepage, https://github.com/cognichip/opencos
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
''' private helper package for `eda --version`'''
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
NAME = 'opencos-eda'
|
|
6
|
+
|
|
7
|
+
# Use standard library metadata module starting Python 3.8
|
|
8
|
+
if sys.version_info >= (3, 8):
|
|
9
|
+
|
|
10
|
+
from importlib import metadata
|
|
11
|
+
try:
|
|
12
|
+
VERSION = metadata.version(NAME)
|
|
13
|
+
except metadata.PackageNotFoundError:
|
|
14
|
+
# Handle case where the package is not installed (e.g., running from source checkout)
|
|
15
|
+
VERSION = "0.0.0"
|
|
16
|
+
|
|
17
|
+
else:
|
|
18
|
+
# This package only supports >= 3.8, so not doing the importlib_metadata method.
|
|
19
|
+
VERSION = "unknown" # Or raise an error, or handle differently
|
|
@@ -9,6 +9,7 @@ import os
|
|
|
9
9
|
|
|
10
10
|
from opencos import util
|
|
11
11
|
from opencos.eda_base import CommandDesign
|
|
12
|
+
from opencos.utils.str_helpers import strip_all_quotes
|
|
12
13
|
|
|
13
14
|
class CommandFList(CommandDesign):
|
|
14
15
|
'''Base class command handler for: eda flist ...'''
|
|
@@ -140,14 +141,14 @@ class CommandFList(CommandDesign):
|
|
|
140
141
|
if self.args['emit-non-sources']:
|
|
141
142
|
if self.files_non_source:
|
|
142
143
|
print('## reqs (non-source files that are dependencies):', file=fo)
|
|
143
|
-
prefix =
|
|
144
|
+
prefix = strip_all_quotes(self.args['prefix-non-sources'])
|
|
144
145
|
for f in self.files_non_source:
|
|
145
146
|
if self.args['emit-rel-path']:
|
|
146
147
|
f = os.path.relpath(f)
|
|
147
148
|
print('## ' + prefix + pq1 + f + pq2, file=fo)
|
|
148
149
|
|
|
149
150
|
if self.args['emit-define']:
|
|
150
|
-
prefix =
|
|
151
|
+
prefix = strip_all_quotes(self.args['prefix-define'])
|
|
151
152
|
for d, value in self.defines.items():
|
|
152
153
|
if value is None:
|
|
153
154
|
newline = prefix + d
|
|
@@ -176,31 +177,31 @@ class CommandFList(CommandDesign):
|
|
|
176
177
|
print(newline, file=fo)
|
|
177
178
|
|
|
178
179
|
if self.args['emit-incdir']:
|
|
179
|
-
prefix =
|
|
180
|
+
prefix = strip_all_quotes(self.args['prefix-incdir'])
|
|
180
181
|
for i in self.incdirs:
|
|
181
182
|
if self.args['emit-rel-path']:
|
|
182
183
|
i = os.path.relpath(i)
|
|
183
184
|
print(prefix + pq1 + i + pq2, file=fo)
|
|
184
185
|
if self.args['emit-v']:
|
|
185
|
-
prefix =
|
|
186
|
+
prefix = strip_all_quotes(self.args['prefix-v'])
|
|
186
187
|
for f in self.files_v:
|
|
187
188
|
if self.args['emit-rel-path']:
|
|
188
189
|
f = os.path.relpath(f)
|
|
189
190
|
print(prefix + pq1 + f + pq2, file=fo)
|
|
190
191
|
if self.args['emit-sv']:
|
|
191
|
-
prefix =
|
|
192
|
+
prefix = strip_all_quotes(self.args['prefix-sv'])
|
|
192
193
|
for f in self.files_sv:
|
|
193
194
|
if self.args['emit-rel-path']:
|
|
194
195
|
f = os.path.relpath(f)
|
|
195
196
|
print(prefix + pq1 + f + pq2, file=fo)
|
|
196
197
|
if self.args['emit-vhd']:
|
|
197
|
-
prefix =
|
|
198
|
+
prefix = strip_all_quotes(self.args['prefix-vhd'])
|
|
198
199
|
for f in self.files_vhd:
|
|
199
200
|
if self.args['emit-rel-path']:
|
|
200
201
|
f = os.path.relpath(f)
|
|
201
202
|
print(prefix + pq1 + f + pq2, file=fo)
|
|
202
203
|
if self.args['emit-cpp']:
|
|
203
|
-
prefix =
|
|
204
|
+
prefix = strip_all_quotes(self.args['prefix-cpp'])
|
|
204
205
|
for f in self.files_cpp:
|
|
205
206
|
if self.args['emit-rel-path']:
|
|
206
207
|
f = os.path.relpath(f)
|
|
@@ -9,10 +9,12 @@ import os
|
|
|
9
9
|
import shutil
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
|
|
12
|
-
from opencos import util, eda_base,
|
|
12
|
+
from opencos import util, eda_base, eda_config, export_helper, \
|
|
13
13
|
eda_tool_helper
|
|
14
|
-
from opencos.deps_helpers import get_deps_markup_file, deps_markup_safe_load
|
|
15
14
|
from opencos.eda_base import CommandParallel, get_eda_exec
|
|
15
|
+
from opencos.deps.deps_file import get_deps_markup_file, deps_markup_safe_load, \
|
|
16
|
+
deps_data_get_all_targets, deps_list_target_sanitize
|
|
17
|
+
from opencos.utils.str_helpers import fnmatch_or_re, dep_str2list
|
|
16
18
|
|
|
17
19
|
class CommandMulti(CommandParallel):
|
|
18
20
|
'''eda.py command handler for: eda multi <command> <args,targets,target-globs,...>'''
|
|
@@ -109,17 +111,17 @@ class CommandMulti(CommandParallel):
|
|
|
109
111
|
if self.path_hidden_or_work_dir(path):
|
|
110
112
|
continue
|
|
111
113
|
|
|
112
|
-
deps_markup_file =
|
|
114
|
+
deps_markup_file = get_deps_markup_file(path)
|
|
113
115
|
if deps_markup_file:
|
|
114
|
-
data =
|
|
115
|
-
deps_targets =
|
|
116
|
+
data = deps_markup_safe_load(deps_markup_file)
|
|
117
|
+
deps_targets = deps_data_get_all_targets(data)
|
|
116
118
|
rel_path = os.path.relpath(path)
|
|
117
119
|
|
|
118
120
|
debug(f'in {rel_path=} looking for {target_pattern=} in {deps_targets=}')
|
|
119
121
|
|
|
120
122
|
for t in deps_targets:
|
|
121
123
|
if target_pattern_needs_lookup:
|
|
122
|
-
matched =
|
|
124
|
+
matched = fnmatch_or_re(pattern=target_pattern, string=t)
|
|
123
125
|
else:
|
|
124
126
|
matched = t == target_pattern
|
|
125
127
|
if matched:
|
|
@@ -176,14 +178,11 @@ class CommandMulti(CommandParallel):
|
|
|
176
178
|
all_multi_tools = self.multi_which_tools(command)
|
|
177
179
|
|
|
178
180
|
deps_file = get_deps_markup_file(base_path)
|
|
179
|
-
data =
|
|
181
|
+
data = {}
|
|
180
182
|
if self.config['deps_markup_supported'] and deps_file:
|
|
181
183
|
data = deps_markup_safe_load(deps_file)
|
|
182
184
|
|
|
183
|
-
|
|
184
|
-
data = {}
|
|
185
|
-
|
|
186
|
-
deps_targets = deps_helpers.deps_data_get_all_targets(data)
|
|
185
|
+
deps_targets = deps_data_get_all_targets(data)
|
|
187
186
|
deps_file_defaults = data.get('DEFAULTS', {})
|
|
188
187
|
|
|
189
188
|
# Loop through all the targets in DEPS.yml, skipping DEFAULTS
|
|
@@ -196,7 +195,7 @@ class CommandMulti(CommandParallel):
|
|
|
196
195
|
# Since we support a few schema flavors for a target (our
|
|
197
196
|
# 'target_node' key in a DEPS.yml file) santize the entry
|
|
198
197
|
# so it's a {} with a 'deps' key:
|
|
199
|
-
entry_sanitized =
|
|
198
|
+
entry_sanitized = deps_list_target_sanitize(
|
|
200
199
|
entry, target_node=target_node, deps_file=deps_file
|
|
201
200
|
)
|
|
202
201
|
|
|
@@ -229,8 +228,8 @@ class CommandMulti(CommandParallel):
|
|
|
229
228
|
|
|
230
229
|
commands = x.get('commands', [])
|
|
231
230
|
tools = x.get('tools', [])
|
|
232
|
-
ignore_commands_list =
|
|
233
|
-
ignore_tools_list =
|
|
231
|
+
ignore_commands_list = dep_str2list(commands)
|
|
232
|
+
ignore_tools_list = dep_str2list(tools)
|
|
234
233
|
|
|
235
234
|
debug(f"{ignore_tools_list=}, {ignore_commands_list=} {target_node=}")
|
|
236
235
|
debug(f"{command=} --> {all_multi_tools=}")
|
|
@@ -591,7 +590,7 @@ class CommandToolsMulti(CommandMulti):
|
|
|
591
590
|
def multi_which_tools(self, command):
|
|
592
591
|
'''Overrides CommandMulti.multi_which_tool(command), return a list of all
|
|
593
592
|
possible tools that can run this command'''
|
|
594
|
-
if self.tools is None or
|
|
593
|
+
if self.tools is None or not self.tools:
|
|
595
594
|
# wasn't set via arg --tools, so use all if possible for this command.
|
|
596
595
|
which_tools = self.all_handler_commands.get(command, [])
|
|
597
596
|
else:
|
|
@@ -177,6 +177,11 @@ class CommandSim(CommandDesign):
|
|
|
177
177
|
filename=log_fname, bad_strings=bad_strings, must_strings=must_strings,
|
|
178
178
|
use_bad_strings=use_bad_strings, use_must_strings=use_must_strings
|
|
179
179
|
)
|
|
180
|
+
if log_fname:
|
|
181
|
+
self.artifacts_add(
|
|
182
|
+
name=os.path.join(self.args['work-dir'], log_fname),
|
|
183
|
+
typ='text', description='Simulator stdout/stderr log file'
|
|
184
|
+
)
|
|
180
185
|
|
|
181
186
|
def do_export(self) -> None:
|
|
182
187
|
'''CommandSim helper for handling args --export*
|
|
@@ -8,6 +8,7 @@ import re
|
|
|
8
8
|
|
|
9
9
|
from opencos import util
|
|
10
10
|
from opencos.eda_base import CommandDesign, CommandParallel, get_eda_exec, which_tool
|
|
11
|
+
from opencos.utils.str_helpers import strip_outer_quotes
|
|
11
12
|
|
|
12
13
|
class CommandSweep(CommandDesign, CommandParallel):
|
|
13
14
|
'''Command handler for: eda sweep ...'''
|
|
@@ -77,7 +78,7 @@ class CommandSweep(CommandDesign, CommandParallel):
|
|
|
77
78
|
|
|
78
79
|
for sweep_arg_value in self.args['sweep']:
|
|
79
80
|
# Deal with --sweep= args we already parsed, but haven't expanded yet.
|
|
80
|
-
sweep_arg_value =
|
|
81
|
+
sweep_arg_value = strip_outer_quotes(sweep_arg_value)
|
|
81
82
|
sweep_axis_list_entry = self._process_sweep_arg(sweep_arg_value=sweep_arg_value)
|
|
82
83
|
if sweep_axis_list_entry:
|
|
83
84
|
sweep_axis_list.append(sweep_axis_list_entry)
|
|
@@ -136,7 +137,7 @@ class CommandSweep(CommandDesign, CommandParallel):
|
|
|
136
137
|
Return value is {} or {'lhs': str, 'operator': str (+ or =), 'values': list}
|
|
137
138
|
'''
|
|
138
139
|
|
|
139
|
-
sweep_arg_value =
|
|
140
|
+
sweep_arg_value = strip_outer_quotes(sweep_arg_value)
|
|
140
141
|
|
|
141
142
|
util.debug(f'{sweep_arg_value=}')
|
|
142
143
|
# Try to match a sweep range expansion:
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
''' opencos.deps.defaults -- pymodule for defaults referenced by other modules here'''
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
DEPS_FILE_EXTS = set([
|
|
5
|
+
'.yml', '.yaml', '.toml', '.json',
|
|
6
|
+
# Treat no extension DEPS as YAML.
|
|
7
|
+
''
|
|
8
|
+
])
|
|
9
|
+
|
|
10
|
+
ROOT_TABLE_KEYS_NOT_TARGETS = set([
|
|
11
|
+
"DEFAULTS",
|
|
12
|
+
"METADATA",
|
|
13
|
+
])
|
|
14
|
+
|
|
15
|
+
KNOWN_EDA_COMMANDS = set([
|
|
16
|
+
"sim",
|
|
17
|
+
"elab",
|
|
18
|
+
"synth",
|
|
19
|
+
"flist",
|
|
20
|
+
"proj",
|
|
21
|
+
"multi",
|
|
22
|
+
"tools-multi",
|
|
23
|
+
"sweep",
|
|
24
|
+
"build",
|
|
25
|
+
"waves",
|
|
26
|
+
"upload",
|
|
27
|
+
"open",
|
|
28
|
+
"export",
|
|
29
|
+
])
|
|
30
|
+
|
|
31
|
+
SUPPORTED_TARGET_TABLE_KEYS = set([
|
|
32
|
+
'args',
|
|
33
|
+
'defines',
|
|
34
|
+
'incdirs',
|
|
35
|
+
'top',
|
|
36
|
+
'deps',
|
|
37
|
+
'reqs',
|
|
38
|
+
'multi',
|
|
39
|
+
'tags',
|
|
40
|
+
'commands'] + list(KNOWN_EDA_COMMANDS))
|
|
41
|
+
|
|
42
|
+
SUPPORTED_DEP_KEYS_BY_TYPE = {
|
|
43
|
+
dict: set(['commands']),
|
|
44
|
+
str: set(['*']),
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
SUPPORTED_TAG_KEYS = set([
|
|
48
|
+
'with-tools',
|
|
49
|
+
'with-args',
|
|
50
|
+
'args',
|
|
51
|
+
'deps',
|
|
52
|
+
'reqs',
|
|
53
|
+
'defines',
|
|
54
|
+
'incdirs',
|
|
55
|
+
'replace-config-tools',
|
|
56
|
+
'additive-config-tools',
|
|
57
|
+
])
|
|
58
|
+
|
|
59
|
+
SUPPORTED_COMMAND_KEYS = set([
|
|
60
|
+
'shell',
|
|
61
|
+
'work-dir-add-srcs', 'work-dir-add-sources',
|
|
62
|
+
'peakrdl',
|
|
63
|
+
'run-from-work-dir', # default True
|
|
64
|
+
'filepath-subst-target-dir', # default True
|
|
65
|
+
'dirpath-subst-target-dir', # default False
|
|
66
|
+
'var-subst-args',
|
|
67
|
+
'var-subst-os-env',
|
|
68
|
+
'tee',
|
|
69
|
+
])
|