opencos-eda 0.3.11__py3-none-any.whl → 0.3.13__py3-none-any.whl
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/commands/flist.py +222 -39
- opencos/commands/multi.py +5 -3
- opencos/commands/sim.py +121 -7
- opencos/commands/sweep.py +1 -1
- opencos/commands/upload.py +4 -4
- opencos/commands/waves.py +44 -0
- opencos/deps/deps_file.py +4 -1
- opencos/deps_schema.py +2 -2
- opencos/eda.py +284 -175
- opencos/eda_base.py +54 -22
- opencos/eda_config.py +51 -24
- opencos/eda_config_defaults.yml +326 -195
- opencos/eda_config_reduced.yml +19 -39
- opencos/eda_tool_helper.py +193 -24
- opencos/tools/cocotb.py +6 -29
- opencos/tools/invio.py +0 -6
- opencos/tools/iverilog.py +16 -16
- opencos/tools/modelsim_ase.py +1 -13
- opencos/tools/quartus.py +81 -24
- opencos/tools/questa.py +0 -14
- opencos/tools/questa_common.py +95 -30
- opencos/tools/questa_fe.py +0 -14
- opencos/tools/questa_fse.py +0 -14
- opencos/tools/riviera.py +56 -25
- opencos/tools/slang.py +15 -12
- opencos/tools/slang_yosys.py +0 -6
- opencos/tools/surelog.py +14 -11
- opencos/tools/tabbycad_yosys.py +1 -7
- opencos/tools/verilator.py +18 -14
- opencos/tools/vivado.py +57 -22
- opencos/tools/yosys.py +2 -4
- opencos/util.py +14 -5
- opencos/utils/str_helpers.py +42 -1
- {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/METADATA +1 -2
- {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/RECORD +40 -41
- opencos/eda_config_max_verilator_waivers.yml +0 -39
- {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/WHEEL +0 -0
- {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/entry_points.txt +0 -0
- {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/licenses/LICENSE +0 -0
- {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/licenses/LICENSE.spdx +0 -0
- {opencos_eda-0.3.11.dist-info → opencos_eda-0.3.13.dist-info}/top_level.txt +0 -0
opencos/tools/vivado.py
CHANGED
|
@@ -56,10 +56,14 @@ class ToolVivado(Tool):
|
|
|
56
56
|
self.vivado_base_path, _ = os.path.split(path)
|
|
57
57
|
|
|
58
58
|
xilinx_vivado = os.environ.get('XILINX_VIVADO')
|
|
59
|
-
|
|
59
|
+
|
|
60
|
+
# Since get_versions() doesn't have a quiet mode, and it's called as part
|
|
61
|
+
# of opencos.eda.init_config(..), let's only show an information message
|
|
62
|
+
# if XILINX_VIVADO env is set and it doesn't match the Path/bin/vivado[.bat|.exe]
|
|
63
|
+
if xilinx_vivado and \
|
|
60
64
|
os.path.abspath(os.path.join(xilinx_vivado, 'bin')) != \
|
|
61
65
|
os.path.abspath(os.path.dirname(self.vivado_exe)):
|
|
62
|
-
util.info("environment for XILINX_VIVADO is
|
|
66
|
+
util.info("environment for XILINX_VIVADO is set, and doesn't match the vivado path:",
|
|
63
67
|
f"XILINX_VIVADO={xilinx_vivado} EXE PATH={self.vivado_exe}")
|
|
64
68
|
|
|
65
69
|
# Get version based on install path name. Calling vivado -verison is too slow.
|
|
@@ -69,7 +73,7 @@ class ToolVivado(Tool):
|
|
|
69
73
|
version = m.group(1) + '.' + m.group(2)
|
|
70
74
|
self._VERSION = version
|
|
71
75
|
else:
|
|
72
|
-
|
|
76
|
+
util.warning("Vivado path doesn't specificy version, expecting (dddd.d)")
|
|
73
77
|
|
|
74
78
|
if version:
|
|
75
79
|
numbers_list = version.split('.')
|
|
@@ -77,7 +81,7 @@ class ToolVivado(Tool):
|
|
|
77
81
|
self.vivado_release = int(numbers_list[1])
|
|
78
82
|
self.vivado_version = float(numbers_list[0] + '.' + numbers_list[1])
|
|
79
83
|
else:
|
|
80
|
-
|
|
84
|
+
util.warning(f"Vivado version not found, vivado path = {self.vivado_exe}")
|
|
81
85
|
return self._VERSION
|
|
82
86
|
|
|
83
87
|
|
|
@@ -261,7 +265,9 @@ class CommandSimVivado(CommandSim, ToolVivado):
|
|
|
261
265
|
|
|
262
266
|
return []
|
|
263
267
|
|
|
264
|
-
def process_parameters_get_list(
|
|
268
|
+
def process_parameters_get_list(
|
|
269
|
+
self, arg_prefix: str = '-G', **kwargs
|
|
270
|
+
) -> list:
|
|
265
271
|
'''Override from sim.CommandSim
|
|
266
272
|
|
|
267
273
|
custom handler for parameters, instead of the one in sim.py
|
|
@@ -444,17 +450,22 @@ class CommandSimVivado(CommandSim, ToolVivado):
|
|
|
444
450
|
for value in self.incdirs:
|
|
445
451
|
command_list.append('-i')
|
|
446
452
|
command_list.append(Path(value).as_posix())
|
|
447
|
-
for key, value in self.defines.items():
|
|
448
|
-
command_list.append('-d')
|
|
449
|
-
if value is not None:
|
|
450
|
-
# Because we're writing to a .tcl file, \" will become ", and \\\" will become \"
|
|
451
|
-
# we want \" in the final file. Parameters need to act the same way as defines:
|
|
452
|
-
value = f'{value}'.replace('"', '\\\"')
|
|
453
453
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
454
|
+
if self.args['ext-defines-sv-fname']:
|
|
455
|
+
self.create_ext_defines_sv()
|
|
456
|
+
else:
|
|
457
|
+
for key, value in self.defines.items():
|
|
458
|
+
command_list.append('-d')
|
|
459
|
+
if value is not None:
|
|
460
|
+
# Because we're writing to a .tcl file, \" will become ", and \\\" will become
|
|
461
|
+
# \". We want \" in the final file. Parameters need to act the same way as
|
|
462
|
+
# defines:
|
|
463
|
+
value = f'{value}'.replace('"', '\\\"')
|
|
464
|
+
|
|
465
|
+
if value is None:
|
|
466
|
+
command_list.append(key)
|
|
467
|
+
else:
|
|
468
|
+
command_list.append(f"\"{key}={value}\"")
|
|
458
469
|
|
|
459
470
|
command_list += self.args['compile-args']
|
|
460
471
|
|
|
@@ -498,7 +509,7 @@ class CommandSimVivado(CommandSim, ToolVivado):
|
|
|
498
509
|
_, leafname = os.path.split(name)
|
|
499
510
|
if leafname == 'vivado.log':
|
|
500
511
|
description = 'Vivado XSim log from stdout/stderr'
|
|
501
|
-
|
|
512
|
+
elif leafname == 'xsim.log':
|
|
502
513
|
description = 'Vivado XSim simulation step (3/3) log from stdout/stderr'
|
|
503
514
|
elif leafname == 'xelab.log':
|
|
504
515
|
description = 'Vivado XSim elaboration step (2/3) log from stdout/stderr'
|
|
@@ -832,10 +843,7 @@ class CommandBuildVivado(CommandBuild, ToolVivado):
|
|
|
832
843
|
'--tool=' + self.args['tool'],
|
|
833
844
|
'--force',
|
|
834
845
|
'--out=' + flist_file,
|
|
835
|
-
#'--no-emit-incdir',
|
|
836
|
-
#'--no-single-quote-define', # Needed to run in Command.exec( ... shell=False)
|
|
837
846
|
'--no-quote-define',
|
|
838
|
-
#'--bracket-quote-define',
|
|
839
847
|
'--quote-define-value',
|
|
840
848
|
'--escape-define-value',
|
|
841
849
|
'--no-equal-define',
|
|
@@ -915,13 +923,40 @@ class CommandBuildVivado(CommandBuild, ToolVivado):
|
|
|
915
923
|
|
|
916
924
|
|
|
917
925
|
class CommandFListVivado(CommandFList, ToolVivado):
|
|
918
|
-
'''CommandFlistVivado is a command handler for: eda flist --tool=vivado
|
|
926
|
+
'''CommandFlistVivado is a command handler for: eda flist --tool=vivado
|
|
927
|
+
|
|
928
|
+
This is more synthesis and projects, not for Vivado XSim. We'll log
|
|
929
|
+
warnings if any plusargs or parameters were set, because they will
|
|
930
|
+
not be emitted.
|
|
931
|
+
'''
|
|
919
932
|
|
|
920
933
|
def __init__(self, config: dict):
|
|
921
934
|
CommandFList.__init__(self, config=config)
|
|
922
935
|
ToolVivado.__init__(self, config=self.config)
|
|
923
|
-
self.args
|
|
924
|
-
|
|
936
|
+
self.args.update({
|
|
937
|
+
'all-sv': False,
|
|
938
|
+
# synth/project style Flist, can't emit these:
|
|
939
|
+
'emit-parameter': False,
|
|
940
|
+
'emit-plusargs': False,
|
|
941
|
+
})
|
|
942
|
+
|
|
943
|
+
def get_flist_plusargs_list(self) -> list:
|
|
944
|
+
'''Overriden from CommandFList.'''
|
|
945
|
+
if self.args['unprocessed-plusargs']:
|
|
946
|
+
util.warning('Command "flist" for --tool=vivado is not intended for simulation',
|
|
947
|
+
'and plusargs were present. They will NOT be included in the flist:',
|
|
948
|
+
f'{self.args["unprocessed-plusargs"]}')
|
|
949
|
+
|
|
950
|
+
return []
|
|
951
|
+
|
|
952
|
+
def get_flist_parameter_list(self) -> list:
|
|
953
|
+
'''Overriden from CommandFList.'''
|
|
954
|
+
if self.parameters:
|
|
955
|
+
util.warning('Command "flist" for --tool=vivado is not intended for simulation',
|
|
956
|
+
'and parameters were present. They will NOT be included in the flist:',
|
|
957
|
+
f'{self.parameters}')
|
|
958
|
+
|
|
959
|
+
return []
|
|
925
960
|
|
|
926
961
|
|
|
927
962
|
class CommandUploadVivado(CommandUpload, ToolVivado):
|
opencos/tools/yosys.py
CHANGED
|
@@ -83,14 +83,12 @@ class ToolYosys(Tool):
|
|
|
83
83
|
words = version_ret.stdout.decode('utf-8', errors='replace').split()
|
|
84
84
|
|
|
85
85
|
if len(words) < 2:
|
|
86
|
-
|
|
86
|
+
util.warning(f'{self.yosys_exe} --version: returned unexpected str {version_ret=}')
|
|
87
87
|
self._VERSION = words[1]
|
|
88
88
|
return self._VERSION
|
|
89
89
|
|
|
90
90
|
def set_tool_defines(self):
|
|
91
|
-
|
|
92
|
-
'OC_TOOL_YOSYS': None
|
|
93
|
-
})
|
|
91
|
+
super().set_tool_defines()
|
|
94
92
|
if 'OC_LIBRARY' not in self.defines:
|
|
95
93
|
self.defines.update({
|
|
96
94
|
'OC_LIBRARY_BEHAVIORAL': None,
|
opencos/util.py
CHANGED
|
@@ -24,12 +24,14 @@ from opencos.files import safe_shutil_which
|
|
|
24
24
|
from opencos.utils import status_constants
|
|
25
25
|
from opencos.utils.str_helpers import strip_ansi_color
|
|
26
26
|
|
|
27
|
+
INITIAL_CWD = os.getcwd()
|
|
28
|
+
|
|
27
29
|
global_exit_allowed = False # pylint: disable=invalid-name
|
|
28
30
|
progname = "UNKNOWN" # pylint: disable=invalid-name
|
|
29
31
|
progname_in_message = True # pylint: disable=invalid-name
|
|
30
32
|
debug_level = 0 # pylint: disable=invalid-name
|
|
31
|
-
dot_f_files_expanded =
|
|
32
|
-
env_files_loaded =
|
|
33
|
+
dot_f_files_expanded = [] # pylint: disable=invalid-name
|
|
34
|
+
env_files_loaded = [] # pylint: disable=invalid-name
|
|
33
35
|
|
|
34
36
|
args = { # pylint: disable=invalid-name
|
|
35
37
|
'color' : bool(supportsColor.stdout),
|
|
@@ -456,7 +458,8 @@ def load_env_file(env_file: str) -> None:
|
|
|
456
458
|
'''Handles .env file (from util CLI args --env-file)'''
|
|
457
459
|
if os.path.isfile(env_file):
|
|
458
460
|
load_dotenv(env_file, override=True)
|
|
459
|
-
|
|
461
|
+
if os.path.abspath(env_file) not in env_files_loaded:
|
|
462
|
+
env_files_loaded.append(os.path.abspath(env_file))
|
|
460
463
|
else:
|
|
461
464
|
warning(f'--env-file {env_file} does not exist and is not loaded.')
|
|
462
465
|
|
|
@@ -510,7 +513,8 @@ def read_tokens_from_dot_f(filepath: str, caller_info: str = '', verbose: bool =
|
|
|
510
513
|
if os.path.abspath(filepath) in dot_f_files_expanded:
|
|
511
514
|
error(f'-f (or --input-file): {filepath} has already been expanded',
|
|
512
515
|
f'cannot traverse again (duplicate arg or nested .f files) {caller_info}')
|
|
513
|
-
|
|
516
|
+
else:
|
|
517
|
+
dot_f_files_expanded.append(os.path.abspath(filepath))
|
|
514
518
|
tokens = []
|
|
515
519
|
dotf_file_dir, _ = os.path.split(filepath)
|
|
516
520
|
with open(filepath, encoding='utf-8') as f:
|
|
@@ -518,7 +522,12 @@ def read_tokens_from_dot_f(filepath: str, caller_info: str = '', verbose: bool =
|
|
|
518
522
|
line = os.path.expandvars(line.strip())
|
|
519
523
|
if not line or line.startswith('#') or line.startswith('//'):
|
|
520
524
|
continue
|
|
521
|
-
words =
|
|
525
|
+
words = []
|
|
526
|
+
if line.startswith("'") and line.endswith("'"):
|
|
527
|
+
# treat as single word:
|
|
528
|
+
words = [line]
|
|
529
|
+
else:
|
|
530
|
+
words = line.split()
|
|
522
531
|
tokens.extend(patch_args_for_dir(
|
|
523
532
|
tokens=words, patch_dir=dotf_file_dir, caller_info=f"(from dotf {filepath})"
|
|
524
533
|
))
|
opencos/utils/str_helpers.py
CHANGED
|
@@ -6,11 +6,14 @@ import re
|
|
|
6
6
|
import shlex
|
|
7
7
|
import textwrap
|
|
8
8
|
|
|
9
|
-
VALID_TARGET_INFO_STR = (
|
|
9
|
+
VALID_TARGET_INFO_STR: str = (
|
|
10
10
|
"should start with a . or underscore/letter, rest should be"
|
|
11
11
|
" ., alpha-numeric, dashes, or underscores."
|
|
12
12
|
)
|
|
13
13
|
|
|
14
|
+
# Parameters, with hierarchy, can have a name like: /Path/to.label[6]/Name
|
|
15
|
+
PARAMETER_NAME_RSTR : str = r'[\w\.\/\[\]]+'
|
|
16
|
+
|
|
14
17
|
def is_valid_target_name(s: str) -> bool:
|
|
15
18
|
'''Returns True if str starts with . or underscore/letter, rest alphanum, dash, dot,
|
|
16
19
|
|
|
@@ -190,6 +193,44 @@ def pretty_list_columns_manual(data: list, num_columns: int = 4, auto_columns: b
|
|
|
190
193
|
|
|
191
194
|
return ret_lines
|
|
192
195
|
|
|
196
|
+
def pretty_2dlist_columns(
|
|
197
|
+
data: list, padding: int = 2, return_as_2d_list: bool = False,
|
|
198
|
+
header_row_centered: bool = False
|
|
199
|
+
) -> list:
|
|
200
|
+
'''Given a list of list-of-str, return a 1d list with values aligned in columns
|
|
201
|
+
|
|
202
|
+
If return_as_2d_list=True, does not join the padded row items.
|
|
203
|
+
'''
|
|
204
|
+
|
|
205
|
+
if not data:
|
|
206
|
+
return []
|
|
207
|
+
|
|
208
|
+
ret_lines = []
|
|
209
|
+
# include padding in the col widths:
|
|
210
|
+
col_widths = [max(len(str(value)) for value in col) + padding for col in zip(*data)]
|
|
211
|
+
|
|
212
|
+
if return_as_2d_list:
|
|
213
|
+
for rownum, row in enumerate(data):
|
|
214
|
+
if header_row_centered and rownum == 0:
|
|
215
|
+
ret_lines.append([
|
|
216
|
+
f'{item:^{col_widths[col_idx]}}' for col_idx,item in enumerate(row)
|
|
217
|
+
])
|
|
218
|
+
else:
|
|
219
|
+
ret_lines.append([
|
|
220
|
+
f'{item:<{col_widths[col_idx]}}' for col_idx,item in enumerate(row)
|
|
221
|
+
])
|
|
222
|
+
return ret_lines
|
|
223
|
+
|
|
224
|
+
# else return as 1D list with everything already formatted.
|
|
225
|
+
header_fmt = ''.join(f"{{:^{w}}}" for w in col_widths)
|
|
226
|
+
format_str = ''.join(f"{{:<{w}}}" for w in col_widths)
|
|
227
|
+
for rownum, row in enumerate(data):
|
|
228
|
+
if header_row_centered and rownum == 0:
|
|
229
|
+
ret_lines.append(header_fmt.format(*row))
|
|
230
|
+
else:
|
|
231
|
+
ret_lines.append(format_str.format(*row))
|
|
232
|
+
|
|
233
|
+
return ret_lines
|
|
193
234
|
|
|
194
235
|
def print_columns_manual(data: list, num_columns: int = 4, auto_columns: bool = True) -> None:
|
|
195
236
|
"""Prints a list of strings in columns, manually aligning them."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: opencos-eda
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.13
|
|
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
|
|
@@ -20,7 +20,6 @@ Requires-Dist: supports_color>=0.2.0
|
|
|
20
20
|
Provides-Extra: dev
|
|
21
21
|
Requires-Dist: pylint>=3.0.0; extra == "dev"
|
|
22
22
|
Requires-Dist: pytest>=8.3.5; extra == "dev"
|
|
23
|
-
Requires-Dist: twine>=6.1.0; extra == "dev"
|
|
24
23
|
Provides-Extra: cocotb
|
|
25
24
|
Requires-Dist: cocotb>=2.0; extra == "cocotb"
|
|
26
25
|
Requires-Dist: pytest>=8.3.5; extra == "cocotb"
|
|
@@ -1,46 +1,45 @@
|
|
|
1
1
|
opencos/__init__.py,sha256=RwJA9oc1uUlvNX7v5zoqwjnSRNq2NZwRlHqtS-ICJkI,122
|
|
2
2
|
opencos/_version.py,sha256=KaWIjS0c08g-C0fgYY1kXwSPqhOFxaq5pYEeoZhOR_I,617
|
|
3
3
|
opencos/_waves_pkg.sv,sha256=TL5YT9lT-fn2FD54MbVVZROmZ7vtW3ScA_rM2eRzKmU,2068
|
|
4
|
-
opencos/deps_schema.py,sha256=
|
|
5
|
-
opencos/eda.py,sha256=
|
|
6
|
-
opencos/eda_base.py,sha256
|
|
7
|
-
opencos/eda_config.py,sha256=
|
|
8
|
-
opencos/eda_config_defaults.yml,sha256=
|
|
9
|
-
opencos/
|
|
10
|
-
opencos/eda_config_reduced.yml,sha256=cQ9jY4J7EvAbeHTiP6bvpDSVJAYiitjLZPSxxLKIEbk,1440
|
|
4
|
+
opencos/deps_schema.py,sha256=wKRMuFzOIapwpCPFGvWGM8Mcwdh9yngHOiDRMmvUaIg,17394
|
|
5
|
+
opencos/eda.py,sha256=2vJLMYMW9muWieNaOJz-U5EIVchmVyhTfmEcnZwQtvg,37382
|
|
6
|
+
opencos/eda_base.py,sha256=-nguHrrYVb8a853HEMfFrOoXlsEEeRnDdFR66nTwX0s,124332
|
|
7
|
+
opencos/eda_config.py,sha256=EPW0rhnbrpfV9h0OtKrp7By19FcEyDXT2-ud7y4jbRU,17266
|
|
8
|
+
opencos/eda_config_defaults.yml,sha256=xRJWps4On748MAFIfOIvLNOv5cyON7xAeaW5XquJSp0,21534
|
|
9
|
+
opencos/eda_config_reduced.yml,sha256=BOKGfe-OmVIF0SKhTTglPIzfAoGuCZ8n-f2KpoLF8dk,883
|
|
11
10
|
opencos/eda_deps_bash_completion.bash,sha256=o1yZvGUQSbN-AYq95sDTzMFw7gNHCUSlv9tASEHnACA,2763
|
|
12
11
|
opencos/eda_deps_sanitize.py,sha256=SQjvrte9Hv9JesRY0wljvbdC6pAmLCikI-Wdzzy-D04,1939
|
|
13
12
|
opencos/eda_extract_targets.py,sha256=POlxZfqf2dNH2nc1CEw5B_53vSHAicSTkpU9_-2_6Zw,2851
|
|
14
|
-
opencos/eda_tool_helper.py,sha256=
|
|
13
|
+
opencos/eda_tool_helper.py,sha256=NoVUvUeqvM18Svx1Oy4R8xM4Numq_YZneKyHSDnMMnY,8546
|
|
15
14
|
opencos/export_helper.py,sha256=zDkvsUS6FVrpXl1UTy53QG3CuhYp5FFplI9rRzAE2g8,25395
|
|
16
15
|
opencos/export_json_convert.py,sha256=tSIMbLFtc_Fo66EhFovMii1v_qJYyFZJrPNnoPdW7L0,4182
|
|
17
16
|
opencos/files.py,sha256=-vHrddbFrwxEHU47VzeyLOU93q8XSXAmPiopClfV-bs,2296
|
|
18
17
|
opencos/names.py,sha256=Y2aJ5wgpbNIJ-_P5xUXnHMv_h-zMOX2Rt6iLuduqC1Q,1213
|
|
19
18
|
opencos/peakrdl_cleanup.py,sha256=vHNGtalTrIVP335PhRjPt9RhoccgpK1HJAi-E4M8Kc8,736
|
|
20
19
|
opencos/seed.py,sha256=IL9Yg-r9SLSRseMVWaEHmuw2_DNi_eyut11EafoNTsU,942
|
|
21
|
-
opencos/util.py,sha256=
|
|
20
|
+
opencos/util.py,sha256=LzMOY5ijcubq3OZSG5zVSALN7-IWuTkeNCvbY7whwq0,44854
|
|
22
21
|
opencos/commands/__init__.py,sha256=oOOQmn5_jHAMSOfA3swJJ7mdoyHsJA0lJwKPTudlTns,1125
|
|
23
22
|
opencos/commands/build.py,sha256=mvJYxk5J15k0Cr8R7oIdIIdsEtWV3gE-LnPweVwtSDo,1487
|
|
24
23
|
opencos/commands/deps_help.py,sha256=rWRro9UZCy8FjNgjDdCt5MMrC5KV7Pj6KDsV2xa5fSI,8178
|
|
25
24
|
opencos/commands/elab.py,sha256=m6Gk03wSzX8UkcmReooK7turF7LpqO0IcdOZwJ8XiyI,1596
|
|
26
25
|
opencos/commands/export.py,sha256=bV4JCuihccbbnE_3qWVvlGtrdKWNVjo1hwOq4ax2dxA,3773
|
|
27
|
-
opencos/commands/flist.py,sha256=
|
|
26
|
+
opencos/commands/flist.py,sha256=YlcQFuTo-jpmSfDYdVtNDqK_2VYMM_Ox1_5_0Os-I7o,16329
|
|
28
27
|
opencos/commands/lec.py,sha256=7uziNSeGhZrDEbfS4dt3qVp-z2122hx2kqPH15PqIgQ,4091
|
|
29
28
|
opencos/commands/lint.py,sha256=piPb0l0zE3sAtNJkFQ-oNpuHxnaV_RNXkXtEj_9mwGs,1594
|
|
30
|
-
opencos/commands/multi.py,sha256=
|
|
29
|
+
opencos/commands/multi.py,sha256=urm-IDllnMZWScH7e6Pg4ukHGHILBd4NbPlPmHU3vsw,27624
|
|
31
30
|
opencos/commands/open.py,sha256=XckvKUNwvc5KHbYGV-eQ2i0WG4X-yckroDaMC610MB4,804
|
|
32
31
|
opencos/commands/proj.py,sha256=cExW9ZZkw6nkpVyNfeQzJADzmPtbYgBgWml82tqO6jY,1158
|
|
33
32
|
opencos/commands/shell.py,sha256=upHpFs8Gdtzi-boVXwsC-QzEsnvtoZNMAu4oN10kdxw,7801
|
|
34
|
-
opencos/commands/sim.py,sha256=
|
|
35
|
-
opencos/commands/sweep.py,sha256=
|
|
33
|
+
opencos/commands/sim.py,sha256=ifdSpOVmxMWkQ65-9lhwMNZM4F3MXokjJJBm4puyVX4,28573
|
|
34
|
+
opencos/commands/sweep.py,sha256=62XmDHT-prdxJNy-6MbK6wEGJm1YC9caOaJapoekQ8s,9325
|
|
36
35
|
opencos/commands/synth.py,sha256=Qs6FP9Ge_gp9TH3EFzVXKFlrrqrMwIbr38VYVlZvmeA,4557
|
|
37
36
|
opencos/commands/targets.py,sha256=_jRNhm2Fqj0fmMvTw6Ba39DCsRHf_r_uZCy_R064kpA,1472
|
|
38
|
-
opencos/commands/upload.py,sha256=
|
|
39
|
-
opencos/commands/waves.py,sha256=
|
|
37
|
+
opencos/commands/upload.py,sha256=D5ln2gXsRHbPkOcy8S9jcwv-x6N4SK3m49urr1CLKo0,7915
|
|
38
|
+
opencos/commands/waves.py,sha256=LYF1UcxkHFYYtYoebnh9iE_on80PbbmzIpaSk-XtZcI,9232
|
|
40
39
|
opencos/deps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
40
|
opencos/deps/defaults.py,sha256=Z6mIVJEV0zQ9rC-HkQFMBFAkixjqKS1TATPSc27wOeA,1502
|
|
42
41
|
opencos/deps/deps_commands.py,sha256=p6jgZXQFu8kJ5M3YqqKZwrdnRC0EAMm-8oqhKvm_gBE,16665
|
|
43
|
-
opencos/deps/deps_file.py,sha256=
|
|
42
|
+
opencos/deps/deps_file.py,sha256=HNZXhg4cXEklTCATboAn1ZO6xfwibwYQBY17dvFJcAw,17078
|
|
44
43
|
opencos/deps/deps_processor.py,sha256=fSzVonVuocJDinNGOgs4jizF9yjllSdc11QW7Aj8LzQ,46662
|
|
45
44
|
opencos/docs/Architecture.md,sha256=8zLj19-gzwyHe2ahO7fw6It1pYkpnOtfSD8ciocN_hM,4072
|
|
46
45
|
opencos/docs/ConnectingApps.md,sha256=xfAJoSa7rx6-aZ8edTugRxKLwZwapR36xjds9CZBYDw,2698
|
|
@@ -58,37 +57,37 @@ opencos/hw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
58
57
|
opencos/hw/oc_cli.py,sha256=U1JGlshLZhtd0LgndZFBZVltAj_HemdhbjO_Zo8ZuVM,132252
|
|
59
58
|
opencos/hw/pcie.py,sha256=VUJljaZJYgScAAx5yn7F6GoA8K9eTcw24otYZbkMpYs,3035
|
|
60
59
|
opencos/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
-
opencos/tools/cocotb.py,sha256=
|
|
62
|
-
opencos/tools/invio.py,sha256=
|
|
60
|
+
opencos/tools/cocotb.py,sha256=mkhdbBbkOcPPct1TZcKH6wPPT7pjzRH_6wCNH2qgXOM,19660
|
|
61
|
+
opencos/tools/invio.py,sha256=pxrS5oaNTcEv-ToXdhFBJZF5XhTmZnJz9CQ8NnLoty8,3155
|
|
63
62
|
opencos/tools/invio_helpers.py,sha256=86WOGmSf4m_lEqBtK3DLjWqI0jnqAWzBEBRYfBUGiSY,8804
|
|
64
63
|
opencos/tools/invio_yosys.py,sha256=zPVX5Bv-mR4zaUZiH0QqGF4Vbm_LXAf75mDW6ywse5c,6026
|
|
65
|
-
opencos/tools/iverilog.py,sha256=
|
|
66
|
-
opencos/tools/modelsim_ase.py,sha256=
|
|
67
|
-
opencos/tools/quartus.py,sha256=
|
|
68
|
-
opencos/tools/questa.py,sha256=
|
|
69
|
-
opencos/tools/questa_common.py,sha256=
|
|
70
|
-
opencos/tools/questa_fe.py,sha256=
|
|
71
|
-
opencos/tools/questa_fse.py,sha256=
|
|
72
|
-
opencos/tools/riviera.py,sha256=
|
|
73
|
-
opencos/tools/slang.py,sha256=
|
|
74
|
-
opencos/tools/slang_yosys.py,sha256=
|
|
75
|
-
opencos/tools/surelog.py,sha256=
|
|
76
|
-
opencos/tools/tabbycad_yosys.py,sha256=
|
|
77
|
-
opencos/tools/verilator.py,sha256=
|
|
78
|
-
opencos/tools/vivado.py,sha256=
|
|
79
|
-
opencos/tools/yosys.py,sha256=
|
|
64
|
+
opencos/tools/iverilog.py,sha256=7R4wL1udfn0WdckPDsYM75GgYW9DeCfPUQEOe-8SGVM,6755
|
|
65
|
+
opencos/tools/modelsim_ase.py,sha256=NEzAXJtiVWkKb3N-O3PYxSnnFmrq8LNrqjxFNBwzfKI,2254
|
|
66
|
+
opencos/tools/quartus.py,sha256=gtswIhpnHjUTmw5g1BRxhjB6tofXEsx-I6IySjwyF94,32303
|
|
67
|
+
opencos/tools/questa.py,sha256=QP0JCt8rWf0-snncNP0_Pi6oRY6_Z9Hwix1IYlRdGEc,2057
|
|
68
|
+
opencos/tools/questa_common.py,sha256=oVytNlwLK-W6yUYqOwlWjPrDd0kWJV4-FnWgppkSX8k,21647
|
|
69
|
+
opencos/tools/questa_fe.py,sha256=yYNlUnA2pQ8-gELLajnvJgqg6ZXb6F26YRmyvrlNFOA,2155
|
|
70
|
+
opencos/tools/questa_fse.py,sha256=CjOAn1Ik-3Hd-vyUH_WyTTJxH2yPfhNEfXbedCir7J4,2116
|
|
71
|
+
opencos/tools/riviera.py,sha256=LgLartBXWwJIoI4zRFL7X2wk6hu2wa0CIJCNBZOGxUc,17509
|
|
72
|
+
opencos/tools/slang.py,sha256=MxRwu4laSbv7oa3lO-BKg4McL7KAckSA003sL-9sY3U,9682
|
|
73
|
+
opencos/tools/slang_yosys.py,sha256=z8gUcNSGDl5S6Ufxdx54WWe5v73w0UydErBKFWBR6ZI,10154
|
|
74
|
+
opencos/tools/surelog.py,sha256=QaXS1EWI2b1TqBoekpXndoHxS6t2e8SD-I2Ryi-gHGs,6666
|
|
75
|
+
opencos/tools/tabbycad_yosys.py,sha256=J4RgfuzYLiBK1U8odXiovXZhgkcDFPlbxt73SppksVA,7657
|
|
76
|
+
opencos/tools/verilator.py,sha256=cx4q1WrterA5Kcn8bt8ukqthS0030swGOFOsoMRBYvw,25131
|
|
77
|
+
opencos/tools/vivado.py,sha256=c8iHVK76de_25iOqN-PJ7O6n1lRopvO_XCM0HZV3c04,48702
|
|
78
|
+
opencos/tools/yosys.py,sha256=DZyqAnrHT-6Wv6TlIwzuv4qw7HZs4vOXPpxZzErRsnY,28292
|
|
80
79
|
opencos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
80
|
opencos/utils/dict_helpers.py,sha256=xCdfE8SE-D6hNu5dG_d46A2g6au6h1h7SFpzYmeyRtA,810
|
|
82
81
|
opencos/utils/markup_helpers.py,sha256=F_Emh2kT2gETYf7C-Jy5yJjsiHiPUtBpQzONsCka6Eo,4604
|
|
83
82
|
opencos/utils/status_constants.py,sha256=na6YsqlsCwIYzTXWE14dPadUYRNTrOS6YTXHCer2NbA,635
|
|
84
|
-
opencos/utils/str_helpers.py,sha256=
|
|
83
|
+
opencos/utils/str_helpers.py,sha256=ctl0Zh0h0JW7OlReeSdGxB9wODQYzmMO-9-h55rSRv0,8419
|
|
85
84
|
opencos/utils/subprocess_helpers.py,sha256=Wqqs8FKm3XIjmD9GUYM-HWVJH7TxWJJA37A07J4fQ4w,6619
|
|
86
85
|
opencos/utils/vscode_helper.py,sha256=8epyEeYfXONwiSoc5KZjUfKc8vgLryct8yckJYie88U,1398
|
|
87
86
|
opencos/utils/vsim_helper.py,sha256=-TJK4Dh8LZ4DCM8GrS9Wka4HE_WMGG_aKwTZtKBrEOE,2994
|
|
88
|
-
opencos_eda-0.3.
|
|
89
|
-
opencos_eda-0.3.
|
|
90
|
-
opencos_eda-0.3.
|
|
91
|
-
opencos_eda-0.3.
|
|
92
|
-
opencos_eda-0.3.
|
|
93
|
-
opencos_eda-0.3.
|
|
94
|
-
opencos_eda-0.3.
|
|
87
|
+
opencos_eda-0.3.13.dist-info/licenses/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
|
|
88
|
+
opencos_eda-0.3.13.dist-info/licenses/LICENSE.spdx,sha256=8gn1610RMP6eFgT3Hm6q9VKXt0RvdTItL_oxMo72jII,189
|
|
89
|
+
opencos_eda-0.3.13.dist-info/METADATA,sha256=ryUfx_mmUFaZcwGr8lXFXrkY2whYhLB-HcQCfKSMtn8,1165
|
|
90
|
+
opencos_eda-0.3.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
91
|
+
opencos_eda-0.3.13.dist-info/entry_points.txt,sha256=QOlMZnQeqqwOzIaeKBcY_WlMR3idmOAEbGFh2dXlqJw,290
|
|
92
|
+
opencos_eda-0.3.13.dist-info/top_level.txt,sha256=J4JDP-LpRyJqPNeh9bSjx6yrLz2Mk0h6un6YLmtqql4,8
|
|
93
|
+
opencos_eda-0.3.13.dist-info/RECORD,,
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
tools:
|
|
3
|
-
verilator:
|
|
4
|
-
compile-waivers:
|
|
5
|
-
- CASEINCOMPLETE
|
|
6
|
-
- REALCVT # Implicit conversion of real to integer
|
|
7
|
-
- SELRANGE
|
|
8
|
-
- TIMESCALEMOD # If one file has `timescale, then they all must
|
|
9
|
-
- WIDTH
|
|
10
|
-
# Other potential verilator compilers Warnings to waive:
|
|
11
|
-
- ALWCOMBORDER
|
|
12
|
-
- ASCRANGE
|
|
13
|
-
- CASEOVERLAP
|
|
14
|
-
- CASEX
|
|
15
|
-
- CMPCONST
|
|
16
|
-
- COMBDLY
|
|
17
|
-
- CONSTRAINTIGN
|
|
18
|
-
- IGNOREDRETURN
|
|
19
|
-
- IMPLICIT
|
|
20
|
-
- IMPLICITSTATIC
|
|
21
|
-
- INITIALDLY
|
|
22
|
-
- LATCH
|
|
23
|
-
- MISINDENT
|
|
24
|
-
- MODDUP
|
|
25
|
-
- MULTIDRIVEN
|
|
26
|
-
- NULLPORT
|
|
27
|
-
- PINMISSING
|
|
28
|
-
- RISEFALLDLY
|
|
29
|
-
- SIDEEFFECT
|
|
30
|
-
- SHORTREAL
|
|
31
|
-
- UNOPTFLAT
|
|
32
|
-
- UNSIGNED
|
|
33
|
-
- WIDTHCONCAT
|
|
34
|
-
# COVERIGN only supported in 5.033 or newer:
|
|
35
|
-
- COVERIGN
|
|
36
|
-
# Categories:
|
|
37
|
-
- style
|
|
38
|
-
- lint
|
|
39
|
-
- fatal
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|