opencos-eda 0.2.56__py3-none-any.whl → 0.3.0__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/_version.py +6 -3
- opencos/_waves_pkg.sv +34 -2
- opencos/commands/build.py +1 -0
- opencos/commands/export.py +1 -0
- opencos/commands/flist.py +1 -0
- opencos/commands/lec.py +5 -0
- opencos/commands/multi.py +4 -0
- opencos/commands/proj.py +1 -0
- opencos/commands/shell.py +4 -0
- opencos/commands/sim.py +47 -1
- opencos/commands/synth.py +4 -0
- opencos/deps/defaults.py +15 -7
- opencos/deps/deps_commands.py +84 -74
- opencos/deps_schema.py +3 -0
- opencos/eda.py +15 -2
- opencos/eda_base.py +61 -16
- opencos/eda_config.py +35 -1
- opencos/eda_config_defaults.yml +3 -1
- opencos/export_helper.py +5 -1
- opencos/tests/deps_files/command_order/DEPS.yml +11 -0
- opencos/tests/helpers.py +57 -19
- opencos/tests/test_deps_helpers.py +37 -25
- opencos/tests/test_eda.py +26 -60
- opencos/tools/cocotb.py +25 -0
- opencos/tools/modelsim_ase.py +65 -16
- opencos/tools/riviera.py +31 -6
- opencos/tools/slang_yosys.py +4 -1
- opencos/tools/verilator.py +28 -38
- opencos/tools/yosys.py +50 -20
- opencos/util.py +63 -12
- opencos/utils/vscode_helper.py +1 -1
- opencos/utils/vsim_helper.py +2 -3
- {opencos_eda-0.2.56.dist-info → opencos_eda-0.3.0.dist-info}/METADATA +2 -1
- {opencos_eda-0.2.56.dist-info → opencos_eda-0.3.0.dist-info}/RECORD +39 -39
- {opencos_eda-0.2.56.dist-info → opencos_eda-0.3.0.dist-info}/WHEEL +0 -0
- {opencos_eda-0.2.56.dist-info → opencos_eda-0.3.0.dist-info}/entry_points.txt +0 -0
- {opencos_eda-0.2.56.dist-info → opencos_eda-0.3.0.dist-info}/licenses/LICENSE +0 -0
- {opencos_eda-0.2.56.dist-info → opencos_eda-0.3.0.dist-info}/licenses/LICENSE.spdx +0 -0
- {opencos_eda-0.2.56.dist-info → opencos_eda-0.3.0.dist-info}/top_level.txt +0 -0
opencos/util.py
CHANGED
|
@@ -17,6 +17,7 @@ import traceback
|
|
|
17
17
|
from enum import Enum
|
|
18
18
|
from pathlib import Path
|
|
19
19
|
from importlib import import_module
|
|
20
|
+
from dotenv import load_dotenv
|
|
20
21
|
|
|
21
22
|
from opencos.utils import status_constants
|
|
22
23
|
|
|
@@ -24,6 +25,8 @@ global_exit_allowed = False # pylint: disable=invalid-name
|
|
|
24
25
|
progname = "UNKNOWN" # pylint: disable=invalid-name
|
|
25
26
|
progname_in_message = True # pylint: disable=invalid-name
|
|
26
27
|
debug_level = 0 # pylint: disable=invalid-name
|
|
28
|
+
dot_f_files_expanded = set() # pylint: disable=invalid-name
|
|
29
|
+
env_files_loaded = set() # pylint: disable=invalid-name
|
|
27
30
|
|
|
28
31
|
args = { # pylint: disable=invalid-name
|
|
29
32
|
'color' : False,
|
|
@@ -213,6 +216,7 @@ class Artifacts:
|
|
|
213
216
|
for key in remove_keys:
|
|
214
217
|
del self.data[key]
|
|
215
218
|
|
|
219
|
+
safe_mkdir_for_file(self.artifacts_json_filepath)
|
|
216
220
|
with open(self.artifacts_json_filepath, 'w', encoding='utf-8') as f:
|
|
217
221
|
json.dump(self.data, f, indent=4)
|
|
218
222
|
info(f'Wrote artifacts JSON: {self.artifacts_json_filepath}')
|
|
@@ -376,6 +380,9 @@ def get_argparser() -> argparse.ArgumentParser:
|
|
|
376
380
|
help=(
|
|
377
381
|
'Input .f file to be expanded as eda'
|
|
378
382
|
' args/defines/incdirs/files/targets'))
|
|
383
|
+
parser.add_argument('--env-file', default=[], action='append',
|
|
384
|
+
help='dotenv file(s) to pass ENV vars, (default: .env, loaded last)'
|
|
385
|
+
)
|
|
379
386
|
return parser
|
|
380
387
|
|
|
381
388
|
|
|
@@ -420,19 +427,36 @@ def process_token(arg: list) -> bool:
|
|
|
420
427
|
return False
|
|
421
428
|
|
|
422
429
|
|
|
430
|
+
def load_env_file(env_file: str) -> None:
|
|
431
|
+
'''Handles .env file (from util CLI args --env-file)'''
|
|
432
|
+
if os.path.isfile(env_file):
|
|
433
|
+
load_dotenv(env_file)
|
|
434
|
+
env_files_loaded.add(os.path.abspath(env_file))
|
|
435
|
+
else:
|
|
436
|
+
warning(f'--env-file {env_file} does not exist and is not loaded.')
|
|
437
|
+
|
|
423
438
|
def read_tokens_from_dot_f(filepath: str) -> list:
|
|
424
|
-
'''Returns list of tokens from a .f file'''
|
|
439
|
+
'''Returns list of tokens from a .f file, with ENV vars expanded'''
|
|
440
|
+
|
|
441
|
+
# Let's defer 'info' printing out what input files were opened until after
|
|
442
|
+
# args['quiet'] and debug is resolved (which may be in these .f files)
|
|
425
443
|
debug(f"Opening -f / --input-file '{filepath}' for contents")
|
|
426
444
|
if not os.path.isfile(filepath):
|
|
427
445
|
error(f'-f (or --input-file): {filepath} does not exist',
|
|
428
446
|
error_code=status_constants.EDA_GENERAL_FILE_NOT_FOUND)
|
|
429
447
|
return []
|
|
448
|
+
if os.path.abspath(filepath) in dot_f_files_expanded:
|
|
449
|
+
error(f'-f (or --input-file): {filepath} has already been expanded',
|
|
450
|
+
'cannot traverse again (duplicate arg or nested .f files)')
|
|
451
|
+
dot_f_files_expanded.add(os.path.abspath(filepath))
|
|
430
452
|
tokens = []
|
|
431
453
|
with open(filepath, encoding='utf-8') as f:
|
|
432
454
|
for line in f:
|
|
455
|
+
line = os.path.expandvars(line.strip())
|
|
433
456
|
tokens.extend(line.split())
|
|
434
457
|
return tokens
|
|
435
458
|
|
|
459
|
+
|
|
436
460
|
def process_debug_args(parsed: argparse.Namespace) -> None:
|
|
437
461
|
'''Sets global debug_level based on parsed args'''
|
|
438
462
|
global debug_level # pylint: disable=global-statement
|
|
@@ -446,7 +470,9 @@ def process_debug_args(parsed: argparse.Namespace) -> None:
|
|
|
446
470
|
debug_level = 0
|
|
447
471
|
|
|
448
472
|
|
|
449
|
-
def process_tokens(
|
|
473
|
+
def process_tokens( # pylint: disable=too-many-branches
|
|
474
|
+
tokens: list
|
|
475
|
+
) -> (argparse.Namespace, list):
|
|
450
476
|
'''Processes tokens (unparsed args list) on util's ArgumentParser
|
|
451
477
|
|
|
452
478
|
Returns tuple of (parsed Namespace, unparsed args list)
|
|
@@ -454,9 +480,9 @@ def process_tokens(tokens: list) -> (argparse.Namespace, list):
|
|
|
454
480
|
global debug_level # pylint: disable=global-statement
|
|
455
481
|
debug_level = 0
|
|
456
482
|
|
|
457
|
-
# Deal with --debug, --debug-level,
|
|
458
|
-
# for now put dot-f file contents in front of of tokens, do this in a
|
|
459
|
-
# argparser
|
|
483
|
+
# Deal with --debug, --debug-level, --env-file, -f/--input-file(s) tokens first,
|
|
484
|
+
# for now put dot-f file contents in front of of tokens, do this first in a
|
|
485
|
+
# separate custom argparser:
|
|
460
486
|
bool_action_kwargs = get_argparse_bool_action_kwargs()
|
|
461
487
|
parser = argparse.ArgumentParser(
|
|
462
488
|
prog='opencos -f/--input-file', add_help=False, allow_abbrev=False
|
|
@@ -465,10 +491,14 @@ def process_tokens(tokens: list) -> (argparse.Namespace, list):
|
|
|
465
491
|
help='Display additional debug messaging level 1 or higher')
|
|
466
492
|
parser.add_argument('--debug-level', type=int, default=0,
|
|
467
493
|
help='Set debug level messaging (default: 0)')
|
|
494
|
+
parser.add_argument('--env-file', default=[], action='append',
|
|
495
|
+
help='dotenv file(s) to pass ENV vars, (default: .env, loaded last)'
|
|
496
|
+
)
|
|
468
497
|
parser.add_argument('-f', '--input-file', default=[], action='append',
|
|
469
498
|
help=(
|
|
470
|
-
'Input .f file to be expanded as eda'
|
|
471
|
-
'
|
|
499
|
+
'Input .f file to be expanded as eda args, defines, incdirs,'
|
|
500
|
+
' files, or targets.'
|
|
501
|
+
))
|
|
472
502
|
try:
|
|
473
503
|
parsed, unparsed = parser.parse_known_args(tokens + [''])
|
|
474
504
|
tokens2 = list(filter(None, unparsed))
|
|
@@ -478,8 +508,23 @@ def process_tokens(tokens: list) -> (argparse.Namespace, list):
|
|
|
478
508
|
process_debug_args(parsed=parsed)
|
|
479
509
|
debug(f'util.process_tokens: {parsed=} {unparsed=} from: {tokens}')
|
|
480
510
|
|
|
481
|
-
|
|
482
|
-
|
|
511
|
+
if os.path.isfile(str(Path('.env'))):
|
|
512
|
+
parsed.env_file.append('.env')
|
|
513
|
+
if parsed.env_file:
|
|
514
|
+
for env_file in parsed.env_file:
|
|
515
|
+
load_env_file(env_file)
|
|
516
|
+
|
|
517
|
+
if parsed.input_file:
|
|
518
|
+
dotf_tokens = []
|
|
519
|
+
for filepath in parsed.input_file:
|
|
520
|
+
dotf_tokens.extend(read_tokens_from_dot_f(filepath))
|
|
521
|
+
|
|
522
|
+
# put the .f files before the unparsed args.
|
|
523
|
+
tokens2 = dotf_tokens + tokens2
|
|
524
|
+
|
|
525
|
+
# recurse until we've resolved nested .f files.
|
|
526
|
+
return process_tokens(tokens=tokens2)
|
|
527
|
+
|
|
483
528
|
|
|
484
529
|
# Continue with all normal parsing beyond --debug and -f/--input-file,
|
|
485
530
|
# Note that we re-parse everything in case there was --debug or --debug-level in
|
|
@@ -494,7 +539,8 @@ def process_tokens(tokens: list) -> (argparse.Namespace, list):
|
|
|
494
539
|
process_debug_args(parsed=parsed)
|
|
495
540
|
|
|
496
541
|
if parsed.input_file:
|
|
497
|
-
warning(f'
|
|
542
|
+
warning(f'python error, nested -f/--input-file(s) {parsed.input_file} should',
|
|
543
|
+
'have already been resolved')
|
|
498
544
|
|
|
499
545
|
# clear existing artifacts dicts (mostly for pytests repeatedly calling eda.main),
|
|
500
546
|
# set artifacts.enabled based on args['artifacts-json']
|
|
@@ -519,6 +565,11 @@ def process_tokens(tokens: list) -> (argparse.Namespace, list):
|
|
|
519
565
|
if key in args and value is not None:
|
|
520
566
|
args[key] = value # only update with non-None values to our global 'args' dict
|
|
521
567
|
|
|
568
|
+
for filepath in env_files_loaded:
|
|
569
|
+
info(f"Loaded --env-file '{os.path.relpath(filepath)}'")
|
|
570
|
+
for filepath in dot_f_files_expanded:
|
|
571
|
+
info(f"Processed -f / --input-file '{os.path.relpath(filepath)}' for contents")
|
|
572
|
+
|
|
522
573
|
return parsed, unparsed
|
|
523
574
|
|
|
524
575
|
# ********************
|
|
@@ -776,8 +827,8 @@ def getcwd():
|
|
|
776
827
|
error(f"Unable to getcwd(), did it get deleted from under us? Exception: {e}")
|
|
777
828
|
return None
|
|
778
829
|
|
|
779
|
-
_OC_ROOT = None
|
|
780
|
-
_OC_ROOT_SET = False
|
|
830
|
+
_OC_ROOT = None # pylint: disable=invalid-name
|
|
831
|
+
_OC_ROOT_SET = False # pylint: disable=invalid-name
|
|
781
832
|
|
|
782
833
|
def get_oc_root(error_on_fail: bool = False) -> None:
|
|
783
834
|
'''Returns a str or False for the root directory of *this* repo.
|
opencos/utils/vscode_helper.py
CHANGED
opencos/utils/vsim_helper.py
CHANGED
|
@@ -10,9 +10,7 @@ import subprocess
|
|
|
10
10
|
|
|
11
11
|
from opencos.util import debug
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
INIT_HAS_RUN = False
|
|
13
|
+
INIT_HAS_RUN = False # pylint: disable=invalid-name
|
|
16
14
|
TOOL_IS = {
|
|
17
15
|
'riviera': False,
|
|
18
16
|
'modelsim_ase': False,
|
|
@@ -29,6 +27,7 @@ def init() -> None:
|
|
|
29
27
|
return
|
|
30
28
|
|
|
31
29
|
INIT_HAS_RUN = True
|
|
30
|
+
vsim_path = shutil.which('vsim')
|
|
32
31
|
|
|
33
32
|
if not vsim_path:
|
|
34
33
|
return
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: opencos-eda
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
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
|
|
@@ -11,6 +11,7 @@ Requires-Dist: mergedeep>=1.3.4
|
|
|
11
11
|
Requires-Dist: peakrdl>=1.1.0
|
|
12
12
|
Requires-Dist: pyyaml>=6.0.2
|
|
13
13
|
Requires-Dist: pytest>=8.3.5
|
|
14
|
+
Requires-Dist: python-dotenv>=1.0.1
|
|
14
15
|
Requires-Dist: schema>=0.7.7
|
|
15
16
|
Requires-Dist: toml>=0.10.2
|
|
16
17
|
Requires-Dist: yamllint>=1.35.1
|
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
opencos/__init__.py,sha256=RwJA9oc1uUlvNX7v5zoqwjnSRNq2NZwRlHqtS-ICJkI,122
|
|
2
|
-
opencos/_version.py,sha256=
|
|
3
|
-
opencos/_waves_pkg.sv,sha256=
|
|
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=
|
|
2
|
+
opencos/_version.py,sha256=KaWIjS0c08g-C0fgYY1kXwSPqhOFxaq5pYEeoZhOR_I,617
|
|
3
|
+
opencos/_waves_pkg.sv,sha256=TL5YT9lT-fn2FD54MbVVZROmZ7vtW3ScA_rM2eRzKmU,2068
|
|
4
|
+
opencos/deps_schema.py,sha256=VUdXuq43mKfM-U4x7DSA28-MH1Xqxre6V7Ttw2DeOqI,16762
|
|
5
|
+
opencos/eda.py,sha256=91E-EsyZS-uRadApP-h2onW6rpvLBnrpJoT_9tRtsS8,23322
|
|
6
|
+
opencos/eda_base.py,sha256=oJ8ISAN6IykQfun8eVNuzjggQ5RvIKeWwQ85Wv4ww_4,107887
|
|
7
|
+
opencos/eda_config.py,sha256=z3yQOPGBX7-yKp6BdQYfJ9eOJf-Jctl-mwCDj3vj2BI,12712
|
|
8
|
+
opencos/eda_config_defaults.yml,sha256=u1kzmclo5nElsn2BHOIYHk9_djbL0rUts4CLWYJbuc8,16036
|
|
9
9
|
opencos/eda_config_max_verilator_waivers.yml,sha256=lTAU4IOEbUWVlPzuer1YYhIyxpPINeA4EJqcRIT-Ymk,840
|
|
10
10
|
opencos/eda_config_reduced.yml,sha256=cQ9jY4J7EvAbeHTiP6bvpDSVJAYiitjLZPSxxLKIEbk,1440
|
|
11
11
|
opencos/eda_deps_bash_completion.bash,sha256=jMkQKY82HBgOnQeMdA1hMrXguRFtB52SMBxUemKovL4,1958
|
|
12
12
|
opencos/eda_deps_sanitize.py,sha256=SQjvrte9Hv9JesRY0wljvbdC6pAmLCikI-Wdzzy-D04,1939
|
|
13
13
|
opencos/eda_extract_targets.py,sha256=POlxZfqf2dNH2nc1CEw5B_53vSHAicSTkpU9_-2_6Zw,2851
|
|
14
14
|
opencos/eda_tool_helper.py,sha256=_YgobDLEWW6Fzdr976LxaCDZ4DKRyuMs5CrYQHaTPrU,2558
|
|
15
|
-
opencos/export_helper.py,sha256=
|
|
15
|
+
opencos/export_helper.py,sha256=5BnrkhiieJBgYKAryhXD7HSGtrgvXQpZ8B5ltdrhbRY,22649
|
|
16
16
|
opencos/export_json_convert.py,sha256=tSIMbLFtc_Fo66EhFovMii1v_qJYyFZJrPNnoPdW7L0,4182
|
|
17
17
|
opencos/files.py,sha256=aoq0O2KfISzZb-Vi_q_0TTGBER9xJc--FkVZf0ga7pA,1549
|
|
18
18
|
opencos/names.py,sha256=Y2aJ5wgpbNIJ-_P5xUXnHMv_h-zMOX2Rt6iLuduqC1Q,1213
|
|
19
19
|
opencos/peakrdl_cleanup.py,sha256=vHNGtalTrIVP335PhRjPt9RhoccgpK1HJAi-E4M8Kc8,736
|
|
20
20
|
opencos/seed.py,sha256=IL9Yg-r9SLSRseMVWaEHmuw2_DNi_eyut11EafoNTsU,942
|
|
21
|
-
opencos/util.py,sha256=
|
|
21
|
+
opencos/util.py,sha256=KK5_lSKSf8O6Wp-CtQ9bTg-izBEPkuxGh_N64DJhE-0,40038
|
|
22
22
|
opencos/commands/__init__.py,sha256=oOOQmn5_jHAMSOfA3swJJ7mdoyHsJA0lJwKPTudlTns,1125
|
|
23
|
-
opencos/commands/build.py,sha256=
|
|
23
|
+
opencos/commands/build.py,sha256=mvJYxk5J15k0Cr8R7oIdIIdsEtWV3gE-LnPweVwtSDo,1487
|
|
24
24
|
opencos/commands/deps_help.py,sha256=WDrU7H9sypzDAxe_CHqhW5B_scbQMzBEdf-v-Jcfd5Q,10682
|
|
25
25
|
opencos/commands/elab.py,sha256=m6Gk03wSzX8UkcmReooK7turF7LpqO0IcdOZwJ8XiyI,1596
|
|
26
|
-
opencos/commands/export.py,sha256=
|
|
27
|
-
opencos/commands/flist.py,sha256=
|
|
28
|
-
opencos/commands/lec.py,sha256=
|
|
26
|
+
opencos/commands/export.py,sha256=OhqVLVGN9Ch46NmBmZZo0CxIzhf3BsyX_8qA60SPNHw,3556
|
|
27
|
+
opencos/commands/flist.py,sha256=B2c9RS1LrMHLaY-NySB2W0oHkjd4wGS5rQJTYULGNk0,9110
|
|
28
|
+
opencos/commands/lec.py,sha256=7uziNSeGhZrDEbfS4dt3qVp-z2122hx2kqPH15PqIgQ,4091
|
|
29
29
|
opencos/commands/lint.py,sha256=piPb0l0zE3sAtNJkFQ-oNpuHxnaV_RNXkXtEj_9mwGs,1594
|
|
30
|
-
opencos/commands/multi.py,sha256=
|
|
30
|
+
opencos/commands/multi.py,sha256=ZkG1b_qhhxXw-Lm2S4J-i576Ai5iJA09UEIDj94FOVM,27430
|
|
31
31
|
opencos/commands/open.py,sha256=XckvKUNwvc5KHbYGV-eQ2i0WG4X-yckroDaMC610MB4,804
|
|
32
|
-
opencos/commands/proj.py,sha256=
|
|
33
|
-
opencos/commands/shell.py,sha256=
|
|
34
|
-
opencos/commands/sim.py,sha256=
|
|
32
|
+
opencos/commands/proj.py,sha256=cExW9ZZkw6nkpVyNfeQzJADzmPtbYgBgWml82tqO6jY,1158
|
|
33
|
+
opencos/commands/shell.py,sha256=upHpFs8Gdtzi-boVXwsC-QzEsnvtoZNMAu4oN10kdxw,7801
|
|
34
|
+
opencos/commands/sim.py,sha256=NQJbjfGEgt4zHtOQn5HnaCiBnaDyEkpoDJvnAR4TOxE,21166
|
|
35
35
|
opencos/commands/sweep.py,sha256=ni4XFgnFF8HLXtwPhETyLWfvc2kgtm4bcxFcKzUhkf0,9343
|
|
36
|
-
opencos/commands/synth.py,sha256=
|
|
36
|
+
opencos/commands/synth.py,sha256=m4ZwqHgOF5We0XP94F7TQli11WCPlkzhamI4fDfFR1o,4573
|
|
37
37
|
opencos/commands/targets.py,sha256=_jRNhm2Fqj0fmMvTw6Ba39DCsRHf_r_uZCy_R064kpA,1472
|
|
38
38
|
opencos/commands/upload.py,sha256=oyImgcEFGxDkdeY9EYyX2R6fTOmN-lTs-HYxAZqXUUo,871
|
|
39
39
|
opencos/commands/waves.py,sha256=nrp3ALwfJujZns44tgCgia_dEedQyKe0T3fuws8h39U,7697
|
|
40
40
|
opencos/deps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
-
opencos/deps/defaults.py,sha256=
|
|
42
|
-
opencos/deps/deps_commands.py,sha256=
|
|
41
|
+
opencos/deps/defaults.py,sha256=NXh3V4oInrBVlDw64B2OCI77wzdn1NtaD64srhBnmZU,1486
|
|
42
|
+
opencos/deps/deps_commands.py,sha256=q4JfSfzRO2nM2zdNT4enCy33FokEytZYQJn1HJ6osJk,16606
|
|
43
43
|
opencos/deps/deps_file.py,sha256=nVZWrq6PVhWig1yMNpy8w_7LQJ1rgb7Js0N1ngoqLio,16306
|
|
44
44
|
opencos/deps/deps_processor.py,sha256=i8R6lNSVc_ybTnC16qmGevB3Y-pkcbxkZaT04HTLE8Y,37890
|
|
45
45
|
opencos/hw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -47,16 +47,16 @@ opencos/hw/oc_cli.py,sha256=U1JGlshLZhtd0LgndZFBZVltAj_HemdhbjO_Zo8ZuVM,132252
|
|
|
47
47
|
opencos/hw/pcie.py,sha256=VUJljaZJYgScAAx5yn7F6GoA8K9eTcw24otYZbkMpYs,3035
|
|
48
48
|
opencos/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
49
|
opencos/tests/custom_config.yml,sha256=TRoVM9ZFKPOA_8JmlpzaMhnGO1txmaD14N_8P1oqzew,257
|
|
50
|
-
opencos/tests/helpers.py,sha256=
|
|
50
|
+
opencos/tests/helpers.py,sha256=9KHSZ1JMmo2nUbJYiRehmNqd1mNQ29XbzReu_tHkxjk,11234
|
|
51
51
|
opencos/tests/test_build.py,sha256=FQAxOpLVQShAHD_L5rqJctPeSAoqoOCNFI0RXflLuY0,387
|
|
52
|
-
opencos/tests/test_deps_helpers.py,sha256=
|
|
52
|
+
opencos/tests/test_deps_helpers.py,sha256=uQZxleh6aKO-mZQhagHh5xLIBbpQ8dav7-5D0eemq_g,8164
|
|
53
53
|
opencos/tests/test_deps_schema.py,sha256=T3P9KjaMyKsk8b7snNVvNSsom2hIJcg6Z9apYiXoH9Y,941
|
|
54
|
-
opencos/tests/test_eda.py,sha256=
|
|
54
|
+
opencos/tests/test_eda.py,sha256=fkJvBiwPczs3Yl3zwl_1Upx-siJsGDrjEVipzpiw8vc,37880
|
|
55
55
|
opencos/tests/test_eda_elab.py,sha256=AjU4WMYtFoHpNe1Z4yWWpxDKy4V_hAjL5rl3jqphZrk,3179
|
|
56
56
|
opencos/tests/test_eda_synth.py,sha256=BtBrNVJ9C-LJt3K0wNNS5ukEVrET16AbRXl2IzxudJ8,5744
|
|
57
57
|
opencos/tests/test_oc_cli.py,sha256=w-F-LjSSWVql3D2WG8tcV4_C52i-hL_2WT3oDpKQn9s,734
|
|
58
58
|
opencos/tests/test_tools.py,sha256=-WMpDZexAgko0FAcfiuASqSKNNL0Mr1ztag05808Upc,13735
|
|
59
|
-
opencos/tests/deps_files/command_order/DEPS.yml,sha256=
|
|
59
|
+
opencos/tests/deps_files/command_order/DEPS.yml,sha256=PSzBBJDSU8ccCy3Ls5j_ws_vepmUkTIgWjaMjBhNbSg,806
|
|
60
60
|
opencos/tests/deps_files/error_msgs/DEPS.yml,sha256=fYvHouIscOlr8V28bqx9SoxRBpDBLX4AG-AkVXh8qbo,717
|
|
61
61
|
opencos/tests/deps_files/iverilog_test/DEPS.yml,sha256=vDylEuLt642lhRSvOr3F5ziB5lhPSwkaUGN4_mWJw-c,40
|
|
62
62
|
opencos/tests/deps_files/no_deps_here/DEPS.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -64,34 +64,34 @@ opencos/tests/deps_files/non_sv_reqs/DEPS.yml,sha256=VZkahO1AKhD9GUV5lK8VwUONEi5
|
|
|
64
64
|
opencos/tests/deps_files/tags_with_tools/DEPS.yml,sha256=-5U1qfJElgpVhmkLEu3lYuvDYva8kDlt6JOdB9jidmc,1377
|
|
65
65
|
opencos/tests/deps_files/test_err_fatal/DEPS.yml,sha256=GnXIUJvshQWR9PlYxX67T53ejf5KhDbtD8sUJB4Rwd0,95
|
|
66
66
|
opencos/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
-
opencos/tools/cocotb.py,sha256=
|
|
67
|
+
opencos/tools/cocotb.py,sha256=hlBR6M4k_amOOWa7cZDuw9fTGJtJha1jSpGgyJN8Iis,17734
|
|
68
68
|
opencos/tools/invio.py,sha256=S2ChWr8xMZHSOOhX2hGKQhMmtQY2potVQjc-lsMg73o,3299
|
|
69
69
|
opencos/tools/invio_helpers.py,sha256=86WOGmSf4m_lEqBtK3DLjWqI0jnqAWzBEBRYfBUGiSY,8804
|
|
70
70
|
opencos/tools/invio_yosys.py,sha256=CszGeTdE1ilnMmWPLW77BrtobbsGb1CKXqot0hGimFU,5996
|
|
71
71
|
opencos/tools/iverilog.py,sha256=8dK4z8ktbNYS9cW5QQPm586WoE-pSmOAVJfXajw-Sbg,6420
|
|
72
|
-
opencos/tools/modelsim_ase.py,sha256=
|
|
72
|
+
opencos/tools/modelsim_ase.py,sha256=Jt-6N3BZZyu25fT1ehFQLRUTVvrcCo4e2Gl7UtsQcuk,17834
|
|
73
73
|
opencos/tools/quartus.py,sha256=_TfmPSYpbhmDLw7Dur-rRP0iGwv9hhQ6E5G-XLiYPEM,30486
|
|
74
74
|
opencos/tools/questa.py,sha256=nHImM0Wydcf4YHGibHmQAwmqKHmMxKZUqY-E-vz1o8M,9827
|
|
75
75
|
opencos/tools/questa_fse.py,sha256=hytkeuGg4qImj7rStV1i2kxkz9B0KFheGtcadxmpYAo,2550
|
|
76
|
-
opencos/tools/riviera.py,sha256=
|
|
76
|
+
opencos/tools/riviera.py,sha256=FAumXIt9u4JXwR5BHe-0APX3K0Lg3RT2lWQ-GNGL3vA,13016
|
|
77
77
|
opencos/tools/slang.py,sha256=UpsFeExup2awARxxxADD9f923Hw6ubiSEq2tKtJbS1c,8305
|
|
78
|
-
opencos/tools/slang_yosys.py,sha256=
|
|
78
|
+
opencos/tools/slang_yosys.py,sha256=MKh13eAmLJDkynZiezyT8E2gI4CKnXipzgFCZppaMXo,10230
|
|
79
79
|
opencos/tools/surelog.py,sha256=S2RAZJyjdISm_tRvAhXbla7_z_tJfotZih5f9Y3m7DQ,5648
|
|
80
80
|
opencos/tools/tabbycad_yosys.py,sha256=2LePPgYXBVdsy7YcffPIWN-I0B7queLQ_f_pme2SCGw,7803
|
|
81
|
-
opencos/tools/verilator.py,sha256=
|
|
81
|
+
opencos/tools/verilator.py,sha256=nVYF9F-VAHmT0uqmHpYZIvvZ2GjFIVW5zKpYBAWW8rI,20810
|
|
82
82
|
opencos/tools/vivado.py,sha256=GQdPd1mp02it_uyhMqpFfJgh0AKIMn-20BhHNEDp5HY,41398
|
|
83
|
-
opencos/tools/yosys.py,sha256=
|
|
83
|
+
opencos/tools/yosys.py,sha256=t3Au8gdwTepIKCPCXHpRXEdtmORQK8xqNvF6baIa7DM,28260
|
|
84
84
|
opencos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
85
|
opencos/utils/markup_helpers.py,sha256=A8Ev5UJ4EVKjdcF2g85SQbjdPZR4jGpNqCLaBy_4v7Q,4569
|
|
86
86
|
opencos/utils/status_constants.py,sha256=na6YsqlsCwIYzTXWE14dPadUYRNTrOS6YTXHCer2NbA,635
|
|
87
87
|
opencos/utils/str_helpers.py,sha256=726ScK5-v7QkBi-zqESKZLsOl2_ya4vVJ5ZhxJqmBFo,6440
|
|
88
88
|
opencos/utils/subprocess_helpers.py,sha256=xemAGPey6M0sWY_FElvr-Z0phCfdjaC-znP8FKihPaE,3535
|
|
89
|
-
opencos/utils/vscode_helper.py,sha256=
|
|
90
|
-
opencos/utils/vsim_helper.py,sha256=
|
|
91
|
-
opencos_eda-0.
|
|
92
|
-
opencos_eda-0.
|
|
93
|
-
opencos_eda-0.
|
|
94
|
-
opencos_eda-0.
|
|
95
|
-
opencos_eda-0.
|
|
96
|
-
opencos_eda-0.
|
|
97
|
-
opencos_eda-0.
|
|
89
|
+
opencos/utils/vscode_helper.py,sha256=9nHyMUIL-gzfW-qLH06sgaCnVK-YTOtu6pusitNNhL8,1363
|
|
90
|
+
opencos/utils/vsim_helper.py,sha256=1johPOGbjbMgnCDSTpgsQcSuAquiqq1Y2MBxS6WY6b4,1552
|
|
91
|
+
opencos_eda-0.3.0.dist-info/licenses/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
|
|
92
|
+
opencos_eda-0.3.0.dist-info/licenses/LICENSE.spdx,sha256=8gn1610RMP6eFgT3Hm6q9VKXt0RvdTItL_oxMo72jII,189
|
|
93
|
+
opencos_eda-0.3.0.dist-info/METADATA,sha256=KFNlElAF1mTMOenvOMpVfD5MRlIj1shxNBUiFGTuTQM,666
|
|
94
|
+
opencos_eda-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
95
|
+
opencos_eda-0.3.0.dist-info/entry_points.txt,sha256=6n1T5NwVYDhN5l1h5zmyT197G4pE0SySDreB0QJzJR0,218
|
|
96
|
+
opencos_eda-0.3.0.dist-info/top_level.txt,sha256=J4JDP-LpRyJqPNeh9bSjx6yrLz2Mk0h6un6YLmtqql4,8
|
|
97
|
+
opencos_eda-0.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|