opencos-eda 0.3.15__py3-none-any.whl → 0.3.17__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 +143 -88
- opencos/commands/shell.py +1 -1
- opencos/commands/sim.py +21 -8
- opencos/commands/waves.py +3 -1
- opencos/deps/defaults.py +6 -2
- opencos/deps/deps_file.py +30 -9
- opencos/deps/deps_processor.py +99 -65
- opencos/deps_schema.py +8 -0
- opencos/docs/DEPS.md +6 -0
- opencos/eda.py +30 -5
- opencos/eda_base.py +21 -9
- opencos/eda_config.py +2 -1
- opencos/eda_config_defaults.yml +9 -1
- opencos/eda_tool_helper.py +84 -9
- opencos/files.py +41 -0
- opencos/tools/cocotb.py +1 -1
- opencos/tools/invio.py +1 -1
- opencos/tools/invio_yosys.py +1 -1
- opencos/tools/iverilog.py +1 -1
- opencos/tools/quartus.py +1 -1
- opencos/tools/questa_common.py +6 -3
- opencos/tools/riviera.py +5 -3
- opencos/tools/slang.py +1 -1
- opencos/tools/slang_yosys.py +36 -8
- opencos/tools/surelog.py +1 -1
- opencos/tools/verilator.py +209 -20
- opencos/tools/vivado.py +1 -1
- opencos/tools/yosys.py +155 -30
- opencos/util.py +5 -1
- opencos/utils/docker_checks.py +224 -0
- opencos/utils/subprocess_helpers.py +3 -1
- {opencos_eda-0.3.15.dist-info → opencos_eda-0.3.17.dist-info}/METADATA +1 -1
- {opencos_eda-0.3.15.dist-info → opencos_eda-0.3.17.dist-info}/RECORD +38 -37
- {opencos_eda-0.3.15.dist-info → opencos_eda-0.3.17.dist-info}/WHEEL +0 -0
- {opencos_eda-0.3.15.dist-info → opencos_eda-0.3.17.dist-info}/entry_points.txt +0 -0
- {opencos_eda-0.3.15.dist-info → opencos_eda-0.3.17.dist-info}/licenses/LICENSE +0 -0
- {opencos_eda-0.3.15.dist-info → opencos_eda-0.3.17.dist-info}/licenses/LICENSE.spdx +0 -0
- {opencos_eda-0.3.15.dist-info → opencos_eda-0.3.17.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
'''Various checks for making sure a user can or can't run docker
|
|
2
|
+
|
|
3
|
+
Uses:
|
|
4
|
+
from opencos.utils.docker_checks import docker_ok
|
|
5
|
+
|
|
6
|
+
if docker_ok():
|
|
7
|
+
# do docker stuff
|
|
8
|
+
else
|
|
9
|
+
# print messages saying can't do docker stuff, fail
|
|
10
|
+
'''
|
|
11
|
+
|
|
12
|
+
from importlib import import_module
|
|
13
|
+
import os
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
import shutil
|
|
16
|
+
import subprocess
|
|
17
|
+
import sys
|
|
18
|
+
|
|
19
|
+
from opencos import __version__ as opencos_version
|
|
20
|
+
from opencos.util import debug, warning
|
|
21
|
+
from opencos.utils.str_helpers import strip_outer_quotes
|
|
22
|
+
from opencos.utils.subprocess_helpers import IS_LINUX, IS_MACOS, IS_WINDOWS
|
|
23
|
+
|
|
24
|
+
DOCKER_EXE = shutil.which('docker')
|
|
25
|
+
DOCKER_GROUP = 'docker'
|
|
26
|
+
|
|
27
|
+
_DOCKER_VERSION = ''
|
|
28
|
+
_DOCKER_OK = None
|
|
29
|
+
_CAN_RUN_DOCKER_WITHOUT_SUDO = None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
grp = None # pylint: disable=invalid-name
|
|
33
|
+
if IS_LINUX:
|
|
34
|
+
grp = import_module('grp') # pylint: disable=invalid-name
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def get_error_str_cant_run_docker() -> str:
|
|
38
|
+
'''Returns a somewhat O/S specific messsage about you couldn't run docker'''
|
|
39
|
+
|
|
40
|
+
is_installed = bool(DOCKER_EXE)
|
|
41
|
+
if not is_installed:
|
|
42
|
+
return (
|
|
43
|
+
'Current user cannot run docker, it does not appear to be installed or is not in PATH'
|
|
44
|
+
)
|
|
45
|
+
if not not_in_docker_already():
|
|
46
|
+
return (
|
|
47
|
+
'Current user cannot run docker, it appears we are already in a docker ENV'
|
|
48
|
+
' (./dockerenv exists). Docker-in-docker is not yet supported within opencos-eda.'
|
|
49
|
+
)
|
|
50
|
+
if IS_LINUX:
|
|
51
|
+
return (
|
|
52
|
+
'Current user cannot run docker! (user is not a member of',
|
|
53
|
+
' docker group, or requires sudo to run docker).'
|
|
54
|
+
)
|
|
55
|
+
if IS_MACOS:
|
|
56
|
+
return (
|
|
57
|
+
'Current macos user cannot run docker! (user may not have Docker Desktop'
|
|
58
|
+
' running, it needs to be. Also check if user can run docker without sudo.)'
|
|
59
|
+
)
|
|
60
|
+
if IS_WINDOWS:
|
|
61
|
+
return (
|
|
62
|
+
'Current windows user cannot run docker! (This may not be correctly implemented'
|
|
63
|
+
f' for windows in opencos-eda version: {opencos_version})'
|
|
64
|
+
)
|
|
65
|
+
return (
|
|
66
|
+
'Current user cannot run docker! (unknown operating system, not supported in'
|
|
67
|
+
f' opencos-eda version: {opencos_version} -- platform: {sys.platform})'
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def is_docker_installed() -> bool:
|
|
72
|
+
'''Checks if DOCKER_EXE is non-blank'''
|
|
73
|
+
return bool(DOCKER_EXE)
|
|
74
|
+
|
|
75
|
+
def not_in_docker_already() -> bool:
|
|
76
|
+
'''Returns True if we're not in docker (False if we are in docker).
|
|
77
|
+
|
|
78
|
+
We do not yet support DinD situations, so if we are already in docker,
|
|
79
|
+
make sure docker_ok() returns overall False.
|
|
80
|
+
'''
|
|
81
|
+
return not Path('/.dockerenv').exists()
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def get_docker_version() -> str:
|
|
85
|
+
'''Returns docker version (or blank str if not installed) and sets global _DOCKER_VERSION'''
|
|
86
|
+
global _DOCKER_VERSION # pylint: disable=global-statement
|
|
87
|
+
if _DOCKER_VERSION:
|
|
88
|
+
return _DOCKER_VERSION
|
|
89
|
+
if not is_docker_installed():
|
|
90
|
+
return ''
|
|
91
|
+
|
|
92
|
+
version_ret = subprocess.run(
|
|
93
|
+
[DOCKER_EXE, '--version'],
|
|
94
|
+
capture_output=True,
|
|
95
|
+
check=False
|
|
96
|
+
)
|
|
97
|
+
# Docker version 29.2.0, build 0b9d198
|
|
98
|
+
stdout = version_ret.stdout.decode('utf-8', errors='replace')
|
|
99
|
+
debug(f'{DOCKER_EXE=} {version_ret=}')
|
|
100
|
+
words = stdout.split()
|
|
101
|
+
if len(words) < 1:
|
|
102
|
+
warning(
|
|
103
|
+
f'{DOCKER_EXE} --version: returned unexpected string {version_ret=}'
|
|
104
|
+
)
|
|
105
|
+
_DOCKER_VERSION = words[2].rstrip(',')
|
|
106
|
+
return _DOCKER_VERSION
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def can_run_docker_without_sudo() -> bool:
|
|
110
|
+
'''Checks if the user can run 'docker' with sudo
|
|
111
|
+
|
|
112
|
+
Note this command is slow until it has been run and cached.
|
|
113
|
+
'''
|
|
114
|
+
global _CAN_RUN_DOCKER_WITHOUT_SUDO # pylint: disable=global-statement
|
|
115
|
+
if _CAN_RUN_DOCKER_WITHOUT_SUDO is not None:
|
|
116
|
+
return _CAN_RUN_DOCKER_WITHOUT_SUDO
|
|
117
|
+
if not is_docker_installed():
|
|
118
|
+
_CAN_RUN_DOCKER_WITHOUT_SUDO = False
|
|
119
|
+
|
|
120
|
+
else:
|
|
121
|
+
try:
|
|
122
|
+
# 'docker info' requires connection to the daemon
|
|
123
|
+
# Using check_call ensures we catch non-zero exit codes
|
|
124
|
+
subprocess.check_call([DOCKER_EXE, 'info'],
|
|
125
|
+
stdout=subprocess.DEVNULL,
|
|
126
|
+
stderr=subprocess.DEVNULL)
|
|
127
|
+
_CAN_RUN_DOCKER_WITHOUT_SUDO = True
|
|
128
|
+
except (subprocess.CalledProcessError, FileNotFoundError):
|
|
129
|
+
_CAN_RUN_DOCKER_WITHOUT_SUDO = False
|
|
130
|
+
|
|
131
|
+
return _CAN_RUN_DOCKER_WITHOUT_SUDO
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def is_in_docker_group_or_non_linux() -> bool:
|
|
135
|
+
'''Checks if the user is in a group named 'docker'.
|
|
136
|
+
|
|
137
|
+
Note this applies to Linux-only. Macos supports groups but they don't need
|
|
138
|
+
docker group for Docker Desktop'''
|
|
139
|
+
if not IS_LINUX:
|
|
140
|
+
return True
|
|
141
|
+
if not grp:
|
|
142
|
+
return False
|
|
143
|
+
try:
|
|
144
|
+
docker_gid = grp.getgrnam(DOCKER_GROUP).gr_gid
|
|
145
|
+
return docker_gid in os.getgroups()
|
|
146
|
+
except KeyError:
|
|
147
|
+
# Group 'docker' doesn't even exist on this system
|
|
148
|
+
return False
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def is_docker_ok_windows() -> bool:
|
|
152
|
+
'''Checks for docker support in Windows'''
|
|
153
|
+
if not IS_WINDOWS:
|
|
154
|
+
return True
|
|
155
|
+
|
|
156
|
+
return False
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def docker_ok() -> bool:
|
|
160
|
+
'''Sets DOCKER_OK to True/False if unset, returns _DOCKER_OK'''
|
|
161
|
+
global _DOCKER_OK # pylint: disable=global-statement
|
|
162
|
+
if _DOCKER_OK is None:
|
|
163
|
+
_DOCKER_OK = all(
|
|
164
|
+
(
|
|
165
|
+
is_docker_installed(),
|
|
166
|
+
not_in_docker_already(),
|
|
167
|
+
get_docker_version(),
|
|
168
|
+
can_run_docker_without_sudo(),
|
|
169
|
+
is_in_docker_group_or_non_linux(),
|
|
170
|
+
is_docker_ok_windows(),
|
|
171
|
+
)
|
|
172
|
+
)
|
|
173
|
+
return _DOCKER_OK
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def get_docker_run_command( # pylint: disable=dangerous-default-value
|
|
177
|
+
image: str,
|
|
178
|
+
docker_command: str = 'run', # or 'exec'
|
|
179
|
+
user: str = '$(id -u):$(id -g)',
|
|
180
|
+
env_dict: dict = {},
|
|
181
|
+
ro_volumes: list = [],
|
|
182
|
+
rw_volumes: list = [],
|
|
183
|
+
entrypoint: str = '/bin/bash',
|
|
184
|
+
commands: list = []
|
|
185
|
+
) -> list:
|
|
186
|
+
'''Returns list (suitable for subprocess) of: docker run ... or docker exec ...'''
|
|
187
|
+
|
|
188
|
+
# TODO(drew): this likely needs tweaks to 'user' str for Windows
|
|
189
|
+
ret = [
|
|
190
|
+
'docker', docker_command, '--rm'
|
|
191
|
+
]
|
|
192
|
+
if user:
|
|
193
|
+
ret.extend([
|
|
194
|
+
'--user', user
|
|
195
|
+
])
|
|
196
|
+
for k,v in env_dict.items():
|
|
197
|
+
ret.extend(['-e', f'"{strip_outer_quotes(k)}={strip_outer_quotes(v)}"'])
|
|
198
|
+
for v in ro_volumes:
|
|
199
|
+
assert isinstance(v, (str, Path, tuple)), f'{type(v)=} {v=} must be Path|str|tuple'
|
|
200
|
+
if isinstance(v, tuple):
|
|
201
|
+
assert len(v) == 2, f'Need src, dst in ro_volumes entry {v}'
|
|
202
|
+
ret.extend(['-v', f'{v[0]}:{v[1]}:ro'])
|
|
203
|
+
else:
|
|
204
|
+
ret.extend(['-v', f'{v}:{v}:ro'])
|
|
205
|
+
for v in rw_volumes:
|
|
206
|
+
assert isinstance(v, (str, Path, tuple)), f'{type(v)=} {v=} must be Path|str|tuple'
|
|
207
|
+
if isinstance(v, tuple):
|
|
208
|
+
assert len(v) == 2, f'Need src, dst in rw_volumes entry {v}'
|
|
209
|
+
ret.extend(['-v', f'{v[0]}:{v[1]}:rw'])
|
|
210
|
+
else:
|
|
211
|
+
ret.extend(['-v', f'{v}:{v}:rw'])
|
|
212
|
+
|
|
213
|
+
if entrypoint:
|
|
214
|
+
ret.extend([
|
|
215
|
+
'--entrypoint', entrypoint
|
|
216
|
+
])
|
|
217
|
+
|
|
218
|
+
assert image, f'docker {image=} is missing, must set'
|
|
219
|
+
ret.append(image)
|
|
220
|
+
|
|
221
|
+
if commands:
|
|
222
|
+
ret.extend(commands)
|
|
223
|
+
|
|
224
|
+
return ret
|
|
@@ -10,7 +10,9 @@ from opencos.files import safe_shutil_which
|
|
|
10
10
|
from opencos.util import debug, error, info, warning, progname, global_log
|
|
11
11
|
from opencos.utils.str_helpers import strip_ansi_color
|
|
12
12
|
|
|
13
|
-
IS_WINDOWS = sys.platform.startswith('win')
|
|
13
|
+
IS_WINDOWS: bool = sys.platform.startswith('win')
|
|
14
|
+
IS_MACOS: bool = sys.platform.startswith('darwin')
|
|
15
|
+
IS_LINUX: bool = sys.platform.startswith('linux')
|
|
14
16
|
|
|
15
17
|
# For non-Windows, we track the background parent PIDs, because some tools (vivado XSim,
|
|
16
18
|
# most Modelsim/Questa variants) tend to spawn children PIDs that don't always respond
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: opencos-eda
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.17
|
|
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
|
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
opencos/__init__.py,sha256=RwJA9oc1uUlvNX7v5zoqwjnSRNq2NZwRlHqtS-ICJkI,122
|
|
2
2
|
opencos/_version.py,sha256=FLlmTepF7P0hC-506fgEvv3NSxGxtWgeR7g2UkNK7PI,618
|
|
3
3
|
opencos/_waves_pkg.sv,sha256=yWojzRYVIqV2H5xa5e0v34LgK4oLMu3k9_N8EYXy2f0,2852
|
|
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=
|
|
4
|
+
opencos/deps_schema.py,sha256=1pLF4HLs3f3Hh7SstGolxnG-ODVfvE3DIsfLzmMABqo,17746
|
|
5
|
+
opencos/eda.py,sha256=H-sE4UbFFqcUneQI8M_ic0IzJ4VQKU-On0k8EM8oDfg,38727
|
|
6
|
+
opencos/eda_base.py,sha256=wZMaU4BJXKDA42Wr5fYmTf1jRd0iKECviaSLKkcxrH0,125056
|
|
7
|
+
opencos/eda_config.py,sha256=RGIlyym4h8oeddViLsipx4_w59R-DAoEuN97K6qg5DE,17312
|
|
8
|
+
opencos/eda_config_defaults.yml,sha256=odH5IFoOii9ndChX5VEREy6ah3zqyG6lKjDUepeckMM,21895
|
|
9
9
|
opencos/eda_config_reduced.yml,sha256=BOKGfe-OmVIF0SKhTTglPIzfAoGuCZ8n-f2KpoLF8dk,883
|
|
10
10
|
opencos/eda_deps_bash_completion.bash,sha256=o1yZvGUQSbN-AYq95sDTzMFw7gNHCUSlv9tASEHnACA,2763
|
|
11
11
|
opencos/eda_deps_sanitize.py,sha256=SQjvrte9Hv9JesRY0wljvbdC6pAmLCikI-Wdzzy-D04,1939
|
|
12
12
|
opencos/eda_extract_targets.py,sha256=POlxZfqf2dNH2nc1CEw5B_53vSHAicSTkpU9_-2_6Zw,2851
|
|
13
|
-
opencos/eda_tool_helper.py,sha256=
|
|
13
|
+
opencos/eda_tool_helper.py,sha256=wpZWqGMcnv-3reMPvoLSIITE9LZjvu-yQiTfq3y5O5Q,11951
|
|
14
14
|
opencos/export_helper.py,sha256=zDkvsUS6FVrpXl1UTy53QG3CuhYp5FFplI9rRzAE2g8,25395
|
|
15
15
|
opencos/export_json_convert.py,sha256=tSIMbLFtc_Fo66EhFovMii1v_qJYyFZJrPNnoPdW7L0,4182
|
|
16
|
-
opencos/files.py,sha256
|
|
16
|
+
opencos/files.py,sha256=VJX74EG4ZtxJmIa2aTsB9OTg_lhMQ-xSMz6-7vi822M,3960
|
|
17
17
|
opencos/names.py,sha256=Y2aJ5wgpbNIJ-_P5xUXnHMv_h-zMOX2Rt6iLuduqC1Q,1213
|
|
18
18
|
opencos/peakrdl_cleanup.py,sha256=vHNGtalTrIVP335PhRjPt9RhoccgpK1HJAi-E4M8Kc8,736
|
|
19
19
|
opencos/seed.py,sha256=IL9Yg-r9SLSRseMVWaEHmuw2_DNi_eyut11EafoNTsU,942
|
|
20
|
-
opencos/util.py,sha256=
|
|
20
|
+
opencos/util.py,sha256=f6lLweNjgHmvvdqoiGrZg8ZJ5uNOjMOqqt0oeY9202E,45034
|
|
21
21
|
opencos/commands/__init__.py,sha256=oOOQmn5_jHAMSOfA3swJJ7mdoyHsJA0lJwKPTudlTns,1125
|
|
22
22
|
opencos/commands/build.py,sha256=mvJYxk5J15k0Cr8R7oIdIIdsEtWV3gE-LnPweVwtSDo,1487
|
|
23
23
|
opencos/commands/deps_help.py,sha256=rWRro9UZCy8FjNgjDdCt5MMrC5KV7Pj6KDsV2xa5fSI,8178
|
|
24
24
|
opencos/commands/elab.py,sha256=m6Gk03wSzX8UkcmReooK7turF7LpqO0IcdOZwJ8XiyI,1596
|
|
25
25
|
opencos/commands/export.py,sha256=bV4JCuihccbbnE_3qWVvlGtrdKWNVjo1hwOq4ax2dxA,3773
|
|
26
|
-
opencos/commands/flist.py,sha256=
|
|
26
|
+
opencos/commands/flist.py,sha256=h6O9yxUeRXHRlPadBEiXSLiFsDnAIad4Pg2JLfyPuRY,18488
|
|
27
27
|
opencos/commands/lec.py,sha256=7uziNSeGhZrDEbfS4dt3qVp-z2122hx2kqPH15PqIgQ,4091
|
|
28
28
|
opencos/commands/lint.py,sha256=piPb0l0zE3sAtNJkFQ-oNpuHxnaV_RNXkXtEj_9mwGs,1594
|
|
29
29
|
opencos/commands/multi.py,sha256=urm-IDllnMZWScH7e6Pg4ukHGHILBd4NbPlPmHU3vsw,27624
|
|
30
30
|
opencos/commands/open.py,sha256=XckvKUNwvc5KHbYGV-eQ2i0WG4X-yckroDaMC610MB4,804
|
|
31
31
|
opencos/commands/proj.py,sha256=cExW9ZZkw6nkpVyNfeQzJADzmPtbYgBgWml82tqO6jY,1158
|
|
32
|
-
opencos/commands/shell.py,sha256=
|
|
33
|
-
opencos/commands/sim.py,sha256
|
|
32
|
+
opencos/commands/shell.py,sha256=gXHy71_G3MrD5p9hoPzsL4Z5u4aVeaogYhamTWCyONs,7773
|
|
33
|
+
opencos/commands/sim.py,sha256=1chwfLjsM7cFlmPJF_P6n44uGqFjdtBloXTHlsvnHzI,32272
|
|
34
34
|
opencos/commands/sweep.py,sha256=62XmDHT-prdxJNy-6MbK6wEGJm1YC9caOaJapoekQ8s,9325
|
|
35
35
|
opencos/commands/synth.py,sha256=Qs6FP9Ge_gp9TH3EFzVXKFlrrqrMwIbr38VYVlZvmeA,4557
|
|
36
36
|
opencos/commands/targets.py,sha256=_jRNhm2Fqj0fmMvTw6Ba39DCsRHf_r_uZCy_R064kpA,1472
|
|
37
37
|
opencos/commands/upload.py,sha256=OGMI4By0942jL9LK7xBy5_WjvVzRbAr_RB3rS5fNobI,7917
|
|
38
|
-
opencos/commands/waves.py,sha256=
|
|
38
|
+
opencos/commands/waves.py,sha256=T52z4vd2Kw_afLxXpwCfgB8Sfu6M_FLOFxF1wsm_eQo,9294
|
|
39
39
|
opencos/deps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
-
opencos/deps/defaults.py,sha256=
|
|
40
|
+
opencos/deps/defaults.py,sha256=qgEkDL88pqL5eFG4UaOU8Vr4G6osvTEceoCz7zQb9Q8,1704
|
|
41
41
|
opencos/deps/deps_commands.py,sha256=p6jgZXQFu8kJ5M3YqqKZwrdnRC0EAMm-8oqhKvm_gBE,16665
|
|
42
|
-
opencos/deps/deps_file.py,sha256=
|
|
43
|
-
opencos/deps/deps_processor.py,sha256=
|
|
42
|
+
opencos/deps/deps_file.py,sha256=YYyxEhexaubM0qOrH-2lUeqVb8gKOchWRyVcsXB08KQ,17960
|
|
43
|
+
opencos/deps/deps_processor.py,sha256=bJckWI1NLAgMBFwMAY_lU-h0jefGkyjB6IxmGHrAqhk,48339
|
|
44
44
|
opencos/docs/Architecture.md,sha256=8zLj19-gzwyHe2ahO7fw6It1pYkpnOtfSD8ciocN_hM,4072
|
|
45
45
|
opencos/docs/ConnectingApps.md,sha256=xfAJoSa7rx6-aZ8edTugRxKLwZwapR36xjds9CZBYDw,2698
|
|
46
|
-
opencos/docs/DEPS.md,sha256=
|
|
46
|
+
opencos/docs/DEPS.md,sha256=6wzBr8RUNXPRbqiJCt_JZreC0S5epGVOzuSrg_lDZp8,8006
|
|
47
47
|
opencos/docs/Debug.md,sha256=uknfajFhLTXJkkpKJDaxnminilxz1kv6mSYAmdks5B4,4300
|
|
48
48
|
opencos/docs/DirectoryStructure.md,sha256=HKzzaYwpmzXdHj09vhudiJpEBPM6OPujZrMASItVxVQ,499
|
|
49
49
|
opencos/docs/Installation.md,sha256=EPdtShrmkL9VzG_bTia7_rVUwD863--QQhgorfc-f28,3529
|
|
@@ -57,37 +57,38 @@ opencos/hw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
57
57
|
opencos/hw/oc_cli.py,sha256=U1JGlshLZhtd0LgndZFBZVltAj_HemdhbjO_Zo8ZuVM,132252
|
|
58
58
|
opencos/hw/pcie.py,sha256=VUJljaZJYgScAAx5yn7F6GoA8K9eTcw24otYZbkMpYs,3035
|
|
59
59
|
opencos/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
-
opencos/tools/cocotb.py,sha256=
|
|
61
|
-
opencos/tools/invio.py,sha256=
|
|
60
|
+
opencos/tools/cocotb.py,sha256=rI3yIdT7N_K16VfvNzEF-WTfmy9oVQZjTAoVodujI7c,19670
|
|
61
|
+
opencos/tools/invio.py,sha256=ecBjiocHMMs73OWa2a16dsHfGjA6YuZRaNDo1BPLsWY,3165
|
|
62
62
|
opencos/tools/invio_helpers.py,sha256=86WOGmSf4m_lEqBtK3DLjWqI0jnqAWzBEBRYfBUGiSY,8804
|
|
63
|
-
opencos/tools/invio_yosys.py,sha256=
|
|
64
|
-
opencos/tools/iverilog.py,sha256=
|
|
63
|
+
opencos/tools/invio_yosys.py,sha256=bM100oNS8TZZRS20xqmupA_vLuPUAUTrMNYiks-VDmg,6036
|
|
64
|
+
opencos/tools/iverilog.py,sha256=RGepWE6_V0v9guCcWt1ffdp-am5WoWYMLPWVglHZ5ks,6799
|
|
65
65
|
opencos/tools/modelsim_ase.py,sha256=NEzAXJtiVWkKb3N-O3PYxSnnFmrq8LNrqjxFNBwzfKI,2254
|
|
66
|
-
opencos/tools/quartus.py,sha256=
|
|
66
|
+
opencos/tools/quartus.py,sha256=ztDwyLWxDbnvgLq1JiHpQjuz3wvIaAHjqUZlq_oL3Gw,32313
|
|
67
67
|
opencos/tools/questa.py,sha256=QP0JCt8rWf0-snncNP0_Pi6oRY6_Z9Hwix1IYlRdGEc,2057
|
|
68
|
-
opencos/tools/questa_common.py,sha256=
|
|
68
|
+
opencos/tools/questa_common.py,sha256=z0T27aMUG5suGDAdxVlxmuGHBe2D71_N7KZT1TDoUg8,21976
|
|
69
69
|
opencos/tools/questa_fe.py,sha256=yYNlUnA2pQ8-gELLajnvJgqg6ZXb6F26YRmyvrlNFOA,2155
|
|
70
70
|
opencos/tools/questa_fse.py,sha256=CjOAn1Ik-3Hd-vyUH_WyTTJxH2yPfhNEfXbedCir7J4,2116
|
|
71
|
-
opencos/tools/riviera.py,sha256=
|
|
72
|
-
opencos/tools/slang.py,sha256=
|
|
73
|
-
opencos/tools/slang_yosys.py,sha256=
|
|
74
|
-
opencos/tools/surelog.py,sha256
|
|
71
|
+
opencos/tools/riviera.py,sha256=Q5CrO-dRbc9EqUEG0K0z38-SIdeFvE4IuW7ga9W2n5I,19746
|
|
72
|
+
opencos/tools/slang.py,sha256=RiUIPzjDPsFAXbLqHZFPPbXpCQbudfQlL1AjCoAfkvc,9692
|
|
73
|
+
opencos/tools/slang_yosys.py,sha256=moIRUYpSEr3lf6KtAOwd7Z3zirixFDVup3CAzyeJqws,11127
|
|
74
|
+
opencos/tools/surelog.py,sha256=-WDgRq8SIhtifp8FOxW-b3l2SHSmakBKjo--CBjYy5c,6676
|
|
75
75
|
opencos/tools/tabbycad_yosys.py,sha256=J4RgfuzYLiBK1U8odXiovXZhgkcDFPlbxt73SppksVA,7657
|
|
76
|
-
opencos/tools/verilator.py,sha256=
|
|
77
|
-
opencos/tools/vivado.py,sha256=
|
|
78
|
-
opencos/tools/yosys.py,sha256=
|
|
76
|
+
opencos/tools/verilator.py,sha256=Q0kTehLWFss6IDPdMa7eiei7eJZlCjISuFmSgJLYGgo,32958
|
|
77
|
+
opencos/tools/vivado.py,sha256=XNURtPZVIO7J9nZeFQh1xrZibe97P7o-kcVaf3NmukQ,50159
|
|
78
|
+
opencos/tools/yosys.py,sha256=WeGt13cr6E3D5WwU8pPVn4sdTgSdbxEtb0hTEFvw0M8,33455
|
|
79
79
|
opencos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
80
|
opencos/utils/dict_helpers.py,sha256=xCdfE8SE-D6hNu5dG_d46A2g6au6h1h7SFpzYmeyRtA,810
|
|
81
|
+
opencos/utils/docker_checks.py,sha256=uvTZqoYBpPkuEtUXWXwN60k0NFeBXntHfMYsU-6-wuw,7162
|
|
81
82
|
opencos/utils/markup_helpers.py,sha256=F_Emh2kT2gETYf7C-Jy5yJjsiHiPUtBpQzONsCka6Eo,4604
|
|
82
83
|
opencos/utils/status_constants.py,sha256=na6YsqlsCwIYzTXWE14dPadUYRNTrOS6YTXHCer2NbA,635
|
|
83
84
|
opencos/utils/str_helpers.py,sha256=ctl0Zh0h0JW7OlReeSdGxB9wODQYzmMO-9-h55rSRv0,8419
|
|
84
|
-
opencos/utils/subprocess_helpers.py,sha256
|
|
85
|
+
opencos/utils/subprocess_helpers.py,sha256=--HvaCbLVMCYAZZdIyPqze1sk0BjL6WQrwXAkhwpl8s,6726
|
|
85
86
|
opencos/utils/vscode_helper.py,sha256=8epyEeYfXONwiSoc5KZjUfKc8vgLryct8yckJYie88U,1398
|
|
86
87
|
opencos/utils/vsim_helper.py,sha256=-TJK4Dh8LZ4DCM8GrS9Wka4HE_WMGG_aKwTZtKBrEOE,2994
|
|
87
|
-
opencos_eda-0.3.
|
|
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.
|
|
88
|
+
opencos_eda-0.3.17.dist-info/licenses/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
|
|
89
|
+
opencos_eda-0.3.17.dist-info/licenses/LICENSE.spdx,sha256=8gn1610RMP6eFgT3Hm6q9VKXt0RvdTItL_oxMo72jII,189
|
|
90
|
+
opencos_eda-0.3.17.dist-info/METADATA,sha256=hGN78dXH88mPldkSCE4nSPizdP0UR0ceWKFp1Lus_Uo,1165
|
|
91
|
+
opencos_eda-0.3.17.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
92
|
+
opencos_eda-0.3.17.dist-info/entry_points.txt,sha256=QOlMZnQeqqwOzIaeKBcY_WlMR3idmOAEbGFh2dXlqJw,290
|
|
93
|
+
opencos_eda-0.3.17.dist-info/top_level.txt,sha256=J4JDP-LpRyJqPNeh9bSjx6yrLz2Mk0h6un6YLmtqql4,8
|
|
94
|
+
opencos_eda-0.3.17.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|