cocotb 2.0.1__cp38-cp38-win32.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.
Files changed (152) hide show
  1. cocotb/_ANSI.py +65 -0
  2. cocotb/__init__.py +127 -0
  3. cocotb/_base_triggers.py +515 -0
  4. cocotb/_bridge.py +186 -0
  5. cocotb/_decorators.py +515 -0
  6. cocotb/_deprecation.py +36 -0
  7. cocotb/_exceptions.py +7 -0
  8. cocotb/_extended_awaitables.py +419 -0
  9. cocotb/_gpi_triggers.py +385 -0
  10. cocotb/_init.py +301 -0
  11. cocotb/_outcomes.py +54 -0
  12. cocotb/_profiling.py +46 -0
  13. cocotb/_py_compat.py +150 -0
  14. cocotb/_scheduler.py +448 -0
  15. cocotb/_test.py +248 -0
  16. cocotb/_test_factory.py +312 -0
  17. cocotb/_test_functions.py +42 -0
  18. cocotb/_typing.py +7 -0
  19. cocotb/_utils.py +274 -0
  20. cocotb/_version.py +4 -0
  21. cocotb/_xunit_reporter.py +103 -0
  22. cocotb/clock.py +419 -0
  23. cocotb/debug.py +24 -0
  24. cocotb/handle.py +1752 -0
  25. cocotb/libs/cocotb.dll +0 -0
  26. cocotb/libs/cocotb.exp +0 -0
  27. cocotb/libs/cocotb.lib +0 -0
  28. cocotb/libs/cocotbfli_modelsim.dll +0 -0
  29. cocotb/libs/cocotbfli_modelsim.exp +0 -0
  30. cocotb/libs/cocotbfli_modelsim.lib +0 -0
  31. cocotb/libs/cocotbutils.dll +0 -0
  32. cocotb/libs/cocotbutils.exp +0 -0
  33. cocotb/libs/cocotbutils.lib +0 -0
  34. cocotb/libs/cocotbvhpi_aldec.dll +0 -0
  35. cocotb/libs/cocotbvhpi_aldec.exp +0 -0
  36. cocotb/libs/cocotbvhpi_aldec.lib +0 -0
  37. cocotb/libs/cocotbvhpi_modelsim.dll +0 -0
  38. cocotb/libs/cocotbvhpi_modelsim.exp +0 -0
  39. cocotb/libs/cocotbvhpi_modelsim.lib +0 -0
  40. cocotb/libs/cocotbvhpi_nvc.dll +0 -0
  41. cocotb/libs/cocotbvhpi_nvc.exp +0 -0
  42. cocotb/libs/cocotbvhpi_nvc.lib +0 -0
  43. cocotb/libs/cocotbvpi_aldec.dll +0 -0
  44. cocotb/libs/cocotbvpi_aldec.exp +0 -0
  45. cocotb/libs/cocotbvpi_aldec.lib +0 -0
  46. cocotb/libs/cocotbvpi_ghdl.dll +0 -0
  47. cocotb/libs/cocotbvpi_ghdl.exp +0 -0
  48. cocotb/libs/cocotbvpi_ghdl.lib +0 -0
  49. cocotb/libs/cocotbvpi_icarus.exp +0 -0
  50. cocotb/libs/cocotbvpi_icarus.lib +0 -0
  51. cocotb/libs/cocotbvpi_icarus.vpl +0 -0
  52. cocotb/libs/cocotbvpi_modelsim.dll +0 -0
  53. cocotb/libs/cocotbvpi_modelsim.exp +0 -0
  54. cocotb/libs/cocotbvpi_modelsim.lib +0 -0
  55. cocotb/libs/embed.dll +0 -0
  56. cocotb/libs/embed.exp +0 -0
  57. cocotb/libs/embed.lib +0 -0
  58. cocotb/libs/gpi.dll +0 -0
  59. cocotb/libs/gpi.exp +0 -0
  60. cocotb/libs/gpi.lib +0 -0
  61. cocotb/libs/gpilog.dll +0 -0
  62. cocotb/libs/gpilog.exp +0 -0
  63. cocotb/libs/gpilog.lib +0 -0
  64. cocotb/libs/pygpilog.dll +0 -0
  65. cocotb/libs/pygpilog.exp +0 -0
  66. cocotb/libs/pygpilog.lib +0 -0
  67. cocotb/logging.py +417 -0
  68. cocotb/py.typed +0 -0
  69. cocotb/queue.py +235 -0
  70. cocotb/regression.py +900 -0
  71. cocotb/result.py +38 -0
  72. cocotb/share/def/.gitignore +2 -0
  73. cocotb/share/def/README.md +4 -0
  74. cocotb/share/def/aldec.def +61 -0
  75. cocotb/share/def/aldec.exp +0 -0
  76. cocotb/share/def/aldec.lib +0 -0
  77. cocotb/share/def/ghdl.def +43 -0
  78. cocotb/share/def/ghdl.exp +0 -0
  79. cocotb/share/def/ghdl.lib +0 -0
  80. cocotb/share/def/icarus.def +43 -0
  81. cocotb/share/def/icarus.exp +0 -0
  82. cocotb/share/def/icarus.lib +0 -0
  83. cocotb/share/def/modelsim.def +138 -0
  84. cocotb/share/def/modelsim.exp +0 -0
  85. cocotb/share/def/modelsim.lib +0 -0
  86. cocotb/share/def/nvcvhpi.def +18 -0
  87. cocotb/share/def/nvcvhpi.exp +0 -0
  88. cocotb/share/def/nvcvhpi.lib +0 -0
  89. cocotb/share/include/cocotb_utils.h +70 -0
  90. cocotb/share/include/embed.h +33 -0
  91. cocotb/share/include/exports.h +20 -0
  92. cocotb/share/include/gpi.h +459 -0
  93. cocotb/share/include/gpi_logging.h +291 -0
  94. cocotb/share/include/py_gpi_logging.h +33 -0
  95. cocotb/share/include/vhpi_user_ext.h +26 -0
  96. cocotb/share/include/vpi_user_ext.h +33 -0
  97. cocotb/share/lib/verilator/verilator.cpp +209 -0
  98. cocotb/simtime.py +238 -0
  99. cocotb/simulator.cp38-win32.exp +0 -0
  100. cocotb/simulator.cp38-win32.lib +0 -0
  101. cocotb/simulator.cp38-win32.pyd +0 -0
  102. cocotb/simulator.cp38-win32.pyd.2.config +8 -0
  103. cocotb/simulator.pyi +107 -0
  104. cocotb/task.py +590 -0
  105. cocotb/triggers.py +67 -0
  106. cocotb/types/__init__.py +31 -0
  107. cocotb/types/_abstract_array.py +151 -0
  108. cocotb/types/_array.py +297 -0
  109. cocotb/types/_indexing.py +17 -0
  110. cocotb/types/_logic.py +333 -0
  111. cocotb/types/_logic_array.py +884 -0
  112. cocotb/types/_range.py +197 -0
  113. cocotb/types/_resolve.py +76 -0
  114. cocotb/utils.py +110 -0
  115. cocotb-2.0.1.dist-info/LICENSE +29 -0
  116. cocotb-2.0.1.dist-info/METADATA +44 -0
  117. cocotb-2.0.1.dist-info/RECORD +152 -0
  118. cocotb-2.0.1.dist-info/WHEEL +5 -0
  119. cocotb-2.0.1.dist-info/entry_points.txt +2 -0
  120. cocotb-2.0.1.dist-info/top_level.txt +18 -0
  121. cocotb_tools/__init__.py +0 -0
  122. cocotb_tools/_coverage.py +33 -0
  123. cocotb_tools/_vendor/__init__.py +3 -0
  124. cocotb_tools/_vendor/distutils_version.py +346 -0
  125. cocotb_tools/check_results.py +65 -0
  126. cocotb_tools/combine_results.py +152 -0
  127. cocotb_tools/config.py +242 -0
  128. cocotb_tools/ipython_support.py +99 -0
  129. cocotb_tools/makefiles/Makefile.deprecations +27 -0
  130. cocotb_tools/makefiles/Makefile.inc +198 -0
  131. cocotb_tools/makefiles/Makefile.sim +96 -0
  132. cocotb_tools/makefiles/simulators/Makefile.activehdl +72 -0
  133. cocotb_tools/makefiles/simulators/Makefile.cvc +61 -0
  134. cocotb_tools/makefiles/simulators/Makefile.dsim +39 -0
  135. cocotb_tools/makefiles/simulators/Makefile.ghdl +84 -0
  136. cocotb_tools/makefiles/simulators/Makefile.icarus +80 -0
  137. cocotb_tools/makefiles/simulators/Makefile.ius +93 -0
  138. cocotb_tools/makefiles/simulators/Makefile.modelsim +9 -0
  139. cocotb_tools/makefiles/simulators/Makefile.nvc +60 -0
  140. cocotb_tools/makefiles/simulators/Makefile.questa +29 -0
  141. cocotb_tools/makefiles/simulators/Makefile.questa-compat +143 -0
  142. cocotb_tools/makefiles/simulators/Makefile.questa-qisqrun +149 -0
  143. cocotb_tools/makefiles/simulators/Makefile.riviera +144 -0
  144. cocotb_tools/makefiles/simulators/Makefile.vcs +65 -0
  145. cocotb_tools/makefiles/simulators/Makefile.verilator +79 -0
  146. cocotb_tools/makefiles/simulators/Makefile.xcelium +104 -0
  147. cocotb_tools/py.typed +0 -0
  148. cocotb_tools/runner.py +2001 -0
  149. cocotb_tools/sim_versions.py +140 -0
  150. pygpi/__init__.py +0 -0
  151. pygpi/entry.py +42 -0
  152. pygpi/py.typed +0 -0
cocotb/types/_range.py ADDED
@@ -0,0 +1,197 @@
1
+ # Copyright cocotb contributors
2
+ # Licensed under the Revised BSD License, see LICENSE for details.
3
+ # SPDX-License-Identifier: BSD-3-Clause
4
+ import copy
5
+ from functools import lru_cache
6
+ from typing import Any, Dict, Iterator, Sequence, Union, overload
7
+
8
+ from cocotb._utils import cached_method
9
+
10
+
11
+ class Range(Sequence[int]):
12
+ r"""
13
+ Variant of :class:`range` with inclusive right bound.
14
+
15
+ In Python, :class:`range` and :class:`slice` have a non-inclusive right bound.
16
+ In both Verilog and VHDL, ranges and arrays have an inclusive right bound.
17
+ This type mimics Python's :class:`range` type, but implements HDL-like inclusive right bounds,
18
+ using the names :attr:`left` and :attr:`right` as replacements for ``start`` and ``stop`` to
19
+ match VHDL.
20
+ Range directionality can be specified using ``'to'`` or ``'downto'`` between the
21
+ left and right bounds.
22
+ Not specifying directionality will cause the directionality to be inferred.
23
+
24
+ .. code-block:: pycon3
25
+
26
+ >>> r = Range(-2, 3)
27
+ >>> r.left, r.right, len(r)
28
+ (-2, 3, 6)
29
+
30
+ >>> s = Range(8, "downto", 1)
31
+ >>> s.left, s.right, len(s)
32
+ (8, 1, 8)
33
+
34
+ :meth:`from_range` and :meth:`to_range` can be used to convert from and to :class:`range`.
35
+
36
+ .. code-block:: pycon3
37
+
38
+ >>> r = Range(-2, 3)
39
+ >>> r.to_range()
40
+ range(-2, 4)
41
+
42
+ :class:`Range` supports "null" ranges as seen in VHDL.
43
+ "null" ranges occur when a left bound cannot reach a right bound with the given direction.
44
+ They have a length of ``0``, but the :attr:`left`, :attr:`right`, and :attr:`direction` values remain as given.
45
+
46
+ .. code-block:: pycon3
47
+
48
+ >>> r = Range(1, "to", 0) # no way to count from 1 'to' 0
49
+ >>> r.left, r.direction, r.right
50
+ (1, 'to', 0)
51
+ >>> len(r)
52
+ 0
53
+
54
+ .. note::
55
+ This is only possible when specifying the direction.
56
+
57
+ Ranges also support all the features of :class:`range` including, but not limited to:
58
+
59
+ - ``value in range`` to see if a value is in the range,
60
+ - ``range.index(value)`` to see what position in the range the value is,
61
+
62
+ The typical use case of this type is in conjunction with :class:`~cocotb.types.Array`.
63
+
64
+ Args:
65
+ left: Leftmost bound of range.
66
+ direction: ``'to'`` if values are ascending, ``'downto'`` if descending.
67
+ right: Rightmost bound of range (inclusive).
68
+ """
69
+
70
+ @overload
71
+ def __init__(self, left: int, direction: int) -> None: ...
72
+
73
+ @overload
74
+ def __init__(self, left: int, direction: str, right: int) -> None: ...
75
+
76
+ @overload
77
+ def __init__(self, left: int, *, right: int) -> None: ...
78
+
79
+ def __init__(
80
+ self,
81
+ left: int,
82
+ direction: Union[int, str, None] = None,
83
+ right: Union[int, None] = None,
84
+ ) -> None:
85
+ start = left
86
+ stop: int
87
+ step: int
88
+ if isinstance(direction, int) and right is None:
89
+ step = _guess_step(left, direction)
90
+ stop = direction + step
91
+ elif isinstance(direction, str) and isinstance(right, int):
92
+ step = _direction_to_step(direction)
93
+ stop = right + step
94
+ elif direction is None and isinstance(right, int):
95
+ step = _guess_step(left, right)
96
+ stop = right + step
97
+ else:
98
+ raise TypeError("invalid arguments")
99
+ self._range = range(start, stop, step)
100
+
101
+ @classmethod
102
+ def from_range(cls, range: range) -> "Range":
103
+ """Convert :class:`range` to :class:`Range`."""
104
+ return cls(
105
+ left=range.start,
106
+ direction=_step_to_direction(range.step),
107
+ right=(range.stop - range.step),
108
+ )
109
+
110
+ def to_range(self) -> range:
111
+ """Convert Range to :class:`range`."""
112
+ return self._range
113
+
114
+ @property
115
+ def left(self) -> int:
116
+ """Leftmost value in a Range."""
117
+ return self._range.start
118
+
119
+ @property
120
+ def direction(self) -> str:
121
+ """``'to'`` if Range is ascending, ``'downto'`` otherwise."""
122
+ return _step_to_direction(self._range.step)
123
+
124
+ @property
125
+ def right(self) -> int:
126
+ """Rightmost value in a Range."""
127
+ return self._range.stop - self._range.step
128
+
129
+ def __len__(self) -> int:
130
+ return len(self._range)
131
+
132
+ @overload
133
+ def __getitem__(self, item: int) -> int: ...
134
+
135
+ @overload
136
+ def __getitem__(self, item: slice) -> "Range": ...
137
+
138
+ def __getitem__(self, item: Union[int, slice]) -> Union[int, "Range"]:
139
+ if isinstance(item, int):
140
+ return self._range[item]
141
+ elif isinstance(item, slice):
142
+ return type(self).from_range(self._range[item])
143
+ raise TypeError(
144
+ f"indices must be integers or slices, not {type(item).__name__}"
145
+ )
146
+
147
+ def __contains__(self, item: object) -> bool:
148
+ return item in self._range
149
+
150
+ def __iter__(self) -> Iterator[int]:
151
+ return iter(self._range)
152
+
153
+ def __reversed__(self) -> Iterator[int]:
154
+ return reversed(self._range)
155
+
156
+ def __eq__(self, other: object) -> bool:
157
+ if isinstance(other, type(self)):
158
+ return self._range == other._range
159
+ return NotImplemented # must not be in a type narrowing context to be ignored properly
160
+
161
+ def __hash__(self) -> int:
162
+ return hash(self._range)
163
+
164
+ def __repr__(self) -> str:
165
+ return f"{type(self).__qualname__}({self.left!r}, {self.direction!r}, {self.right!r})"
166
+
167
+ index = cached_method(Sequence.index)
168
+
169
+ def __copy__(self) -> "Range":
170
+ return Range.from_range(self._range)
171
+
172
+ def __deepcopy__(self, memo: Dict[int, Any]) -> "Range":
173
+ return Range.from_range(copy.deepcopy(self._range, memo=memo))
174
+
175
+
176
+ def _guess_step(left: int, right: int) -> int:
177
+ if left <= right:
178
+ return 1
179
+ return -1
180
+
181
+
182
+ @lru_cache(maxsize=None)
183
+ def _direction_to_step(direction: str) -> int:
184
+ direction = direction.lower()
185
+ if direction == "to":
186
+ return 1
187
+ elif direction == "downto":
188
+ return -1
189
+ raise ValueError("direction must be 'to' or 'downto'")
190
+
191
+
192
+ def _step_to_direction(step: int) -> str:
193
+ if step == 1:
194
+ return "to"
195
+ elif step == -1:
196
+ return "downto"
197
+ raise ValueError("step must be 1 or -1")
@@ -0,0 +1,76 @@
1
+ # Copyright cocotb contributors
2
+ # Licensed under the Revised BSD License, see LICENSE for details.
3
+ # SPDX-License-Identifier: BSD-3-Clause
4
+ import os
5
+ from functools import lru_cache
6
+ from random import getrandbits
7
+ from typing import Callable, Dict, Union
8
+
9
+ from cocotb._py_compat import Final, Literal, TypeAlias
10
+
11
+ ResolverLiteral: TypeAlias = Literal["weak", "zeros", "ones", "random"]
12
+
13
+
14
+ _ord_0 = ord("0")
15
+
16
+
17
+ class _random_resolve_table(Dict[int, int]):
18
+ def __init__(self) -> None:
19
+ self[ord("0")] = ord("0")
20
+ self[ord("1")] = ord("1")
21
+ self[ord("L")] = ord("0")
22
+ self[ord("H")] = ord("1")
23
+
24
+ def __missing__(self, _: str) -> int:
25
+ return getrandbits(1) + _ord_0
26
+
27
+
28
+ _resolve_tables: Dict[str, Dict[int, int]] = {
29
+ "error": {},
30
+ "weak": str.maketrans("LHW", "01X"),
31
+ "zeros": str.maketrans("LHUXZW-", "0100000"),
32
+ "ones": str.maketrans("LHUXZW-", "0111111"),
33
+ "random": _random_resolve_table(),
34
+ }
35
+
36
+ _VALID_RESOLVERS = ("error", "weak", "zeros", "ones", "random")
37
+ _VALID_RESOLVERS_ERR_MSG = (
38
+ "Valid values are 'error', 'weak', 'zeros', 'ones', or 'random'"
39
+ )
40
+
41
+
42
+ @lru_cache(maxsize=None)
43
+ def get_str_resolver(resolver: ResolverLiteral) -> Callable[[str], str]:
44
+ if resolver not in _VALID_RESOLVERS:
45
+ raise ValueError(f"Invalid resolver: {resolver!r}. {_VALID_RESOLVERS_ERR_MSG}")
46
+
47
+ resolve_table = _resolve_tables[resolver]
48
+
49
+ def resolve_func(value: str) -> str:
50
+ return value.translate(resolve_table)
51
+
52
+ return resolve_func
53
+
54
+
55
+ def _init() -> Union[Callable[[str], str], None]:
56
+ _envvar = os.getenv("COCOTB_RESOLVE_X", None)
57
+
58
+ # no resolver
59
+ if _envvar is None:
60
+ return None
61
+
62
+ # backwards compatibility
63
+ resolver = _envvar.strip().lower()
64
+ if resolver == "value_error":
65
+ resolver = "error"
66
+
67
+ # get resolver
68
+ try:
69
+ return get_str_resolver(resolver)
70
+ except ValueError:
71
+ raise ValueError(
72
+ f"Invalid COCOTB_RESOLVE_X value: {_envvar!r}. {_VALID_RESOLVERS_ERR_MSG}"
73
+ ) from None
74
+
75
+
76
+ RESOLVE_X: Final = _init()
cocotb/utils.py ADDED
@@ -0,0 +1,110 @@
1
+ # Copyright cocotb contributors
2
+ # Copyright (c) 2013 Potential Ventures Ltd
3
+ # Copyright (c) 2013 SolarFlare Communications Inc
4
+ # Licensed under the Revised BSD License, see LICENSE for details.
5
+ # SPDX-License-Identifier: BSD-3-Clause
6
+
7
+ """Tools for dealing with simulated time."""
8
+
9
+ import warnings
10
+ from decimal import Decimal
11
+ from fractions import Fraction
12
+ from typing import Union
13
+
14
+ from cocotb._typing import RoundMode, TimeUnit
15
+ from cocotb.simtime import (
16
+ _get_sim_steps,
17
+ _get_time_from_sim_steps,
18
+ get_sim_time,
19
+ )
20
+
21
+ __all__ = (
22
+ "get_sim_steps",
23
+ "get_sim_time",
24
+ "get_time_from_sim_steps",
25
+ )
26
+
27
+
28
+ def get_time_from_sim_steps(
29
+ steps: int,
30
+ unit: Union[TimeUnit, None] = None,
31
+ *,
32
+ units: None = None,
33
+ ) -> float:
34
+ """Calculate simulation time in the specified *unit* from the *steps* based
35
+ on the simulator precision.
36
+
37
+ Args:
38
+ steps: Number of simulation steps.
39
+ unit: String specifying the unit of the result
40
+ (one of ``'fs'``, ``'ps'``, ``'ns'``, ``'us'``, ``'ms'``, ``'sec'``).
41
+
42
+ .. versionchanged:: 2.0
43
+ Renamed from ``units``.
44
+
45
+ Raises:
46
+ ValueError: If *unit* is not a valid unit.
47
+
48
+ Returns:
49
+ The simulation time in the specified unit.
50
+ """
51
+ if units is not None:
52
+ warnings.warn(
53
+ "The 'units' argument has been renamed to 'unit'.",
54
+ DeprecationWarning,
55
+ stacklevel=2,
56
+ )
57
+ unit = units
58
+ if unit is None:
59
+ raise TypeError("Missing required argument 'unit'")
60
+ return _get_time_from_sim_steps(steps, unit)
61
+
62
+
63
+ def get_sim_steps(
64
+ time: Union[float, Fraction, Decimal],
65
+ unit: TimeUnit = "step",
66
+ *,
67
+ round_mode: RoundMode = "error",
68
+ units: None = None,
69
+ ) -> int:
70
+ """Calculates the number of simulation time steps for a given amount of *time*.
71
+
72
+ When *round_mode* is ``"error"``, a :exc:`ValueError` is thrown if the value cannot
73
+ be accurately represented in terms of simulator time steps.
74
+ When *round_mode* is ``"round"``, ``"ceil"``, or ``"floor"``, the corresponding
75
+ rounding function from the standard library will be used to round to a simulator
76
+ time step.
77
+
78
+ Args:
79
+ time: The value to convert to simulation time steps.
80
+ unit: String specifying the unit of the result
81
+ (one of ``'step'``, ``'fs'``, ``'ps'``, ``'ns'``, ``'us'``, ``'ms'``, ``'sec'``).
82
+ ``'step'`` means *time* is already in simulation time steps.
83
+
84
+ .. versionchanged:: 2.0
85
+ Renamed from ``units``.
86
+
87
+ round_mode: String specifying how to handle time values that sit between time steps
88
+ (one of ``'error'``, ``'round'``, ``'ceil'``, ``'floor'``).
89
+
90
+ Returns:
91
+ The number of simulation time steps.
92
+
93
+ Raises:
94
+ ValueError: if the value cannot be represented accurately in terms of simulator
95
+ time steps when *round_mode* is ``"error"``.
96
+
97
+ .. versionchanged:: 1.5
98
+ Support ``'step'`` as the *unit* argument to mean "simulator time step".
99
+
100
+ .. versionchanged:: 1.6
101
+ Support rounding modes.
102
+ """
103
+ if units is not None:
104
+ warnings.warn(
105
+ "The 'units' argument has been renamed to 'unit'.",
106
+ DeprecationWarning,
107
+ stacklevel=2,
108
+ )
109
+ unit = units
110
+ return _get_sim_steps(time, unit, round_mode=round_mode)
@@ -0,0 +1,29 @@
1
+ Copyright cocotb contributors
2
+ Copyright (c) 2013 Potential Ventures Ltd
3
+ Copyright (c) 2013 SolarFlare Communications Inc
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL POTENTIAL VENTURES LTD BE LIABLE FOR ANY
24
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,44 @@
1
+ Metadata-Version: 2.1
2
+ Name: cocotb
3
+ Version: 2.0.1
4
+ Summary: cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.
5
+ Home-page: https://www.cocotb.org
6
+ Author: Chris Higgs, Stuart Hodgson
7
+ Maintainer: cocotb contributors
8
+ Maintainer-email: cocotb@lists.librecores.org
9
+ License: BSD-3-Clause
10
+ Project-URL: Bug Tracker, https://github.com/cocotb/cocotb/issues
11
+ Project-URL: Source Code, https://github.com/cocotb/cocotb
12
+ Project-URL: Documentation, https://docs.cocotb.org
13
+ Platform: any
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.6
16
+ Classifier: Programming Language :: Python :: 3.7
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
24
+ Classifier: Framework :: cocotb
25
+ Requires-Python: >=3.6.2
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: find-libpython
29
+
30
+ **cocotb** is a framework empowering users to write VHDL and Verilog testbenches in Python.
31
+
32
+ [![Documentation Status](https://readthedocs.org/projects/cocotb/badge/?version=development)](https://docs.cocotb.org/en/stable/)
33
+ [![CI](https://github.com/cocotb/cocotb/actions/workflows/build-test-dev.yml/badge.svg?branch=master)](https://github.com/cocotb/cocotb/actions/workflows/build-test-dev.yml)
34
+ [![PyPI](https://img.shields.io/pypi/dm/cocotb.svg?label=PyPI%20downloads)](https://pypi.org/project/cocotb/)
35
+ [![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/cocotb/cocotb)
36
+ [![codecov](https://codecov.io/gh/cocotb/cocotb/branch/master/graph/badge.svg)](https://codecov.io/gh/cocotb/cocotb)
37
+
38
+ * Check out the [tutorial](https://docs.cocotb.org/en/stable/quickstart.html)
39
+ * Read the [docs](https://docs.cocotb.org/en/stable/)
40
+ * Find more info in the [wiki](https://github.com/cocotb/cocotb/wiki)
41
+ * Discover [useful extensions](https://github.com/cocotb/cocotb/wiki/Further-Resources#utility-libraries-and-frameworks)
42
+ * Join the discussion in the [Gitter chat room](https://gitter.im/cocotb/Lobby)
43
+ * [Ask a question](https://github.com/cocotb/cocotb/discussions)
44
+ * [Raise a bug / request an enhancement](https://github.com/cocotb/cocotb/issues/new)
@@ -0,0 +1,152 @@
1
+ cocotb/_ANSI.py,sha256=LIywDKSZXT5TuKq24YO4_c0lF-02wJYbQ50Ko_T4PJY,2272
2
+ cocotb/__init__.py,sha256=jo6hVru-7n07fUr77-nZKdFPapitCZXC8c1U6nYay0o,3441
3
+ cocotb/_base_triggers.py,sha256=SNaN-K-wzLJjq5IFTlyvCkzZ9ExwqoXJg7YOvWAz_e0,16083
4
+ cocotb/_bridge.py,sha256=BAw73PpnTa-CCFkGt9Z9BM3AefdmzLWV8jCLYIOz-lw,6196
5
+ cocotb/_decorators.py,sha256=uBpX4LSj9zeIU7s3dWpQW92CJF94eNnZjKeoTZJLzc0,17916
6
+ cocotb/_deprecation.py,sha256=wgNE4GMapfvCzf4m6_dXg2FsOUGQnjpUU8erc5chRlo,1264
7
+ cocotb/_exceptions.py,sha256=FdlfgAG7yBT9l7mfhS_223fWtWei--3vMay1vsLhiOM,257
8
+ cocotb/_extended_awaitables.py,sha256=7WQrkh-Ad6DV1qXNOVi8Ic50MJiGrrrqcYqKjMWd34w,13908
9
+ cocotb/_gpi_triggers.py,sha256=G9xHsfKer0PLAOq-zQcesjf7PEBAfEb2S79ZJxgXaRo,13567
10
+ cocotb/_init.py,sha256=V3WT9OtdqE5Ng9Z-ahaFDmbgPR4jQ5qxU59LNZ-lSTc,10681
11
+ cocotb/_outcomes.py,sha256=r_PRvT2Yg3RQLwaFjOkCxo1G3h_DqPMljHc_eSe6cmo,1365
12
+ cocotb/_profiling.py,sha256=yk5aBDIVTIn6bxvW5a_EKpPwIt-dFU9ti7JbvBhOyuU,1152
13
+ cocotb/_py_compat.py,sha256=6dKv-Q1A4sOez2oXGDuJY1QTN7ab45rBYPWE4N6-sCY,3948
14
+ cocotb/_scheduler.py,sha256=O7eMLk967Y4POenXLITgPcw2TpWXX542qIskiyXlr3c,20351
15
+ cocotb/_test.py,sha256=A1XkTUB8OrkPOOLE3igX8Pt_vCmHq1Xmmix_L4E4l8k,8439
16
+ cocotb/_test_factory.py,sha256=EEuZAWWMcwFqaEp0XqiYvRUxSZbjuRu1IZNjp6N702I,11927
17
+ cocotb/_test_functions.py,sha256=nAef7y_MSGnHPL9NWnGay0WNwhknDWq5v03W0dS1xJs,1164
18
+ cocotb/_typing.py,sha256=2VQIYOlzZR8F5bmi7WK_j_NdNl_Kl7g0DM_XpQo6zrY,337
19
+ cocotb/_utils.py,sha256=DPeKRP7PARMJiBOEvHv-HcJbwSIAIo7DqnmqDnAuzm4,8481
20
+ cocotb/_version.py,sha256=camn4f-3FQp-4VGSA2fBTQ-PCL5RLUSw27GKqSMr-1s,95
21
+ cocotb/_xunit_reporter.py,sha256=OcPmCJuaqP-QL9ncJENjaT-_c6fmr5baMW6MEIdNyOY,3693
22
+ cocotb/clock.py,sha256=gTmxt6LcDyZ1lS5dX9gW4WL5XjpG8S19_dDovciLdTo,14335
23
+ cocotb/debug.py,sha256=OsvxKAf5lCTw0W50_8wPqwfMN9KbQT9Ep2MAGtjf6NM,816
24
+ cocotb/handle.py,sha256=1_RgF8yx2q1Y44JhtWq4OBK9tp_bBpZGfamWIBk5AsI,62849
25
+ cocotb/logging.py,sha256=_izKvsgYaq4-zM28NqrU3UnXkI6KfiwwUibNkeu86g0,13966
26
+ cocotb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ cocotb/queue.py,sha256=ZjIqEqU-Z-N1XzsytRXb_VoJ-SAx7dxlBhCfHiKyVFI,7247
28
+ cocotb/regression.py,sha256=jaSw2frK0cZ820X42j2qLl6V_YbenOQ_MQr2Csci4dk,30098
29
+ cocotb/result.py,sha256=-Np4hFX9qMJsZ8KtTAfMWOpBim_funkViV0oRc0xo3I,1203
30
+ cocotb/simtime.py,sha256=e0e29VFP4xGTTYsQXBc0GL9qSTu_-z-rKd3x4Wk17bU,6856
31
+ cocotb/simulator.cp38-win32.exp,sha256=sP7FgO8r56reBZg2BwohgURibO5HZGj9Ho8xBgmu6Y8,745
32
+ cocotb/simulator.cp38-win32.lib,sha256=OlCSRpp5yOUJos7vup7k2qK237LuBYXXvzpM2Wd86dc,1982
33
+ cocotb/simulator.cp38-win32.pyd,sha256=7R12GT_sdd8sfHzMUO7pIfkS2f8ZaLj635p45fRA7oE,33792
34
+ cocotb/simulator.cp38-win32.pyd.2.config,sha256=JGoavZmGw71REMRGu8DrBlQezZSCkQx7E3GOzGIf9_o,263
35
+ cocotb/simulator.pyi,sha256=Bk_UlfkoKKUi4XE4ZmXBN8AEPbNwQvDrcaaB_2XYIKA,3814
36
+ cocotb/task.py,sha256=opsqjgaUMwxdWOK7IVAjZJwt1BJfXksWAblLz8ojrNE,21076
37
+ cocotb/triggers.py,sha256=_AnYLLtlcwliRvqXu3qKmlSGgu-yercYwpOFZfrZd4w,1450
38
+ cocotb/utils.py,sha256=hDN5jlImp8fAyBHZQXQfvKMViQKiUZqHTc1_nzETiNk,3491
39
+ cocotb/libs/cocotb.dll,sha256=E2PKSgtDrA5p1kAOWwpMTTbn2ZBt5x_xXhhrPNahLLU,15360
40
+ cocotb/libs/cocotb.exp,sha256=NUmMkGEQUC5gkCga-sfl1Fuoea6VmkBigQLggyfocjo,1112
41
+ cocotb/libs/cocotb.lib,sha256=0jK1BeTdaCfpTYu666z4g5FAyubVGecZefRWWJlBEEw,2372
42
+ cocotb/libs/cocotbfli_modelsim.dll,sha256=y343OoDWZ00kKMsKeuOrIbX-46tGR0l01rX6tpNtLnY,82432
43
+ cocotb/libs/cocotbfli_modelsim.exp,sha256=-yb0xwq8G4a6DwXLk2R8Hwb4QbrU0aWNlxF4sSS3f5k,874
44
+ cocotb/libs/cocotbfli_modelsim.lib,sha256=lbsAZ-2igYulbM5QyEWllqk2zYVYmf10E7HhU6Cl-rc,2176
45
+ cocotb/libs/cocotbutils.dll,sha256=a_MEepiRXcd2NA6GRoVcGGQAvTIRfRfKNI1QFAbIYNU,9728
46
+ cocotb/libs/cocotbutils.exp,sha256=0Au0k9Wkcg949cQnwK3yHFlOJp9WtsMYrhFlcNvWrAc,975
47
+ cocotb/libs/cocotbutils.lib,sha256=4f2fRTE4NkAL28MuwkUKUEcdphtAVTzZvhg7zZKn6tQ,2154
48
+ cocotb/libs/cocotbvhpi_aldec.dll,sha256=csfKFf5uw0lAH9l8tPdFRBsZxvc9O21ApZ7qkdGQrSk,80896
49
+ cocotb/libs/cocotbvhpi_aldec.exp,sha256=8UuL8y8_Bh9AsW7rrhwNtKa3Fo-WW8dl0KiUXGvix_E,1074
50
+ cocotb/libs/cocotbvhpi_aldec.lib,sha256=CBGC1zj2-H8Y981pOaqgDPVQIyZuKd8PJ4osrJbpfCM,2448
51
+ cocotb/libs/cocotbvhpi_modelsim.dll,sha256=gnEvPBQ9E3_OC2hNIfM3qXI3cHC6SH6H6wDsVbqq9Io,80896
52
+ cocotb/libs/cocotbvhpi_modelsim.exp,sha256=aICtnqPNNo9dFNluS4p5wzV4klMO2JD7FF8CMAeHs6c,1081
53
+ cocotb/libs/cocotbvhpi_modelsim.lib,sha256=ELpc0X6wJyvhYxe8UdkRjTWdwyNwr_XrOCWSEkb23p0,2492
54
+ cocotb/libs/cocotbvhpi_nvc.dll,sha256=J6SxD3JMRNDbjwboKesXvQ2qOb0sFNDECdI95GG20_g,80896
55
+ cocotb/libs/cocotbvhpi_nvc.exp,sha256=rSk6qWEnZLOVtnhXyS9iWszqZs5rLlWuKemydXH0S7c,1070
56
+ cocotb/libs/cocotbvhpi_nvc.lib,sha256=HIvoWbKXZNaPdLQsUv6tqCLvKPo4vTcOAOLPfgU0Nqg,2418
57
+ cocotb/libs/cocotbvpi_aldec.dll,sha256=jGuxRnmctY8v7kFqCPs-8yrjOSzO8X5d7ttvUk5NNQk,72192
58
+ cocotb/libs/cocotbvpi_aldec.exp,sha256=ooRshMgBj9db_aoEDwie-dKlJkx2NAAV6cHicZBJiYE,1069
59
+ cocotb/libs/cocotbvpi_aldec.lib,sha256=d8fFOF3HHXx40J7r-3BLdMp5XdVDSMOaw6d_lH8LQcw,2428
60
+ cocotb/libs/cocotbvpi_ghdl.dll,sha256=ZwBMe7WT-wIzFCjAKnmIB_qdWdh8SGNbixvWdev55ng,72192
61
+ cocotb/libs/cocotbvpi_ghdl.exp,sha256=nAWKSN37RPp0PkeUAI7u4DnIOOboi-tPI3oEZLn4xv8,1068
62
+ cocotb/libs/cocotbvpi_ghdl.lib,sha256=0HJ9rFcs_dQcz_aA_2gz5Xw6onku0pa5JzYZDdQkxJg,2412
63
+ cocotb/libs/cocotbvpi_icarus.exp,sha256=pAzzrpw2rn-maKc2AH9Tkx7ygzGkzhaL5ZnIzIzOIL4,1072
64
+ cocotb/libs/cocotbvpi_icarus.lib,sha256=6T6mZWs5VvZnccZ5VBweiaHRNFZ6hHzpRY4rjjzl1J4,2442
65
+ cocotb/libs/cocotbvpi_icarus.vpl,sha256=yolcczEoPXs6KpKphM01CJqyqYX4uwzykqyBkn_OflI,71680
66
+ cocotb/libs/cocotbvpi_modelsim.dll,sha256=gEabuiHeM5aUbZHPoTzQyypQIOqpG3zjFN3FdZ2SkkU,72192
67
+ cocotb/libs/cocotbvpi_modelsim.exp,sha256=HRZnjt00li4VEtny-sC_6Cz-q_E27rFtJO8N1SCranI,1076
68
+ cocotb/libs/cocotbvpi_modelsim.lib,sha256=kzUX-HAv9ALiEMrEeyEIU0mD0C1BEmKY7_yksBDtCUQ,2472
69
+ cocotb/libs/embed.dll,sha256=QDENT8iw5Q7WUv1lcJOIjAQ9L2RAn4IMERY5EvCMpgU,10752
70
+ cocotb/libs/embed.exp,sha256=eyLSZ-jlPnAqyU2aFrG6EyqHXK5W6TzVbyH5nAPe-I8,1099
71
+ cocotb/libs/embed.lib,sha256=KpULDLaaNNO1z6wDQ6UIwYH9uMU80UEd_T9TjrVMj6k,2336
72
+ cocotb/libs/gpi.dll,sha256=tIOaKp5e6JoEWgTmJ4l4v_mTVdurCnY0DJ7UBS7c5XM,50688
73
+ cocotb/libs/gpi.exp,sha256=b5OBEDfhclSw5Jpu3_9ARJ1N3J8MfJ6-s1CNSP0Q5SY,18385
74
+ cocotb/libs/gpi.lib,sha256=av_FBfDyAcu89KuC4OcJ2BZueMigwYLF1_2RGM0L780,30238
75
+ cocotb/libs/gpilog.dll,sha256=-KXWrNASoAFA7B9HDp8GIjjADPgSjVEpOYx0sLBIAdU,15872
76
+ cocotb/libs/gpilog.exp,sha256=3Vf67nTotligI5TUrMyQNj6jAKEXcavFW3mdFmiEppg,2224
77
+ cocotb/libs/gpilog.lib,sha256=1vJ1Uub8h77QtLh7rlexJDYk5xxvDISSjDTKNCPYR_w,4206
78
+ cocotb/libs/pygpilog.dll,sha256=IHAwuDnNZOzzLPEWOSQmAeZvjQvyqwDz-GrxoqGO1EI,17408
79
+ cocotb/libs/pygpilog.exp,sha256=mRLxBTtAmYLxT6JQRfQgBg2Qb20abl5j3qE2aL9U-E8,998
80
+ cocotb/libs/pygpilog.lib,sha256=ZPqtMZ31G7O1LvAN_Ks9hTgphtg8QyAwf4S0_vFqsWU,2180
81
+ cocotb/share/def/.gitignore,sha256=JYPaHghbqtLFl-9QtOWaAHvoDOhVxEewSYwHgoYYgf8,46
82
+ cocotb/share/def/README.md,sha256=dptv3zHQGzMqLt3Zv4XOd5IZeGqQS7Lwcq1XCs3BcR0,380
83
+ cocotb/share/def/aldec.def,sha256=ItgxVlRaVuD20jGTN3JpkbHEO8jPfU5XjFlUqDUXzlU,991
84
+ cocotb/share/def/aldec.exp,sha256=-URvTcVrSG67F5EwpdCJze5u4Y1z9bDjqS8g5zge2yw,7810
85
+ cocotb/share/def/aldec.lib,sha256=Uh0rL3GzgPj45Ghng4hmdogZUdwasZf62ps9pgow3g4,13212
86
+ cocotb/share/def/ghdl.def,sha256=ETQh5VI72dWSJi_ig5m163GfLrxScYUamt5BjHjoKsY,705
87
+ cocotb/share/def/ghdl.exp,sha256=3668xTcDjWjpYqvPu2bPTZWzc2QTGDgwj4O3x_XMzRA,5678
88
+ cocotb/share/def/ghdl.lib,sha256=RmBj4eEKtP5xTqbNWKzWN9nLUJK8pjPYThR0MpRpItU,9780
89
+ cocotb/share/def/icarus.def,sha256=VRqkgUyzR2sa916Ra56cZVIb4kzbqDlJVWIOc3389qY,698
90
+ cocotb/share/def/icarus.exp,sha256=MoP4so2gxTKZux_9zttlQIQASVgnQaTVk9CrZvmnAMs,5672
91
+ cocotb/share/def/icarus.lib,sha256=KS7GdpzlRU1kV_4FN1nbltlbZUiajuaJvN40Qmvdm5M,9412
92
+ cocotb/share/def/modelsim.def,sha256=HncvdEzVllbzFR21Nqcbsr-oXMWIfx3YsVi-RK4sbpk,2402
93
+ cocotb/share/def/modelsim.exp,sha256=YHLGS45SeQmWzZ1lA_66puJcKGxYxQLKevq2Y-elcMA,16750
94
+ cocotb/share/def/modelsim.lib,sha256=9x6VL4vUSPKFGdYIJc4oRi-tR9tSnx4iyAk8prTwcx8,27736
95
+ cocotb/share/def/nvcvhpi.def,sha256=NKir2FbtVOaEB8teNON8Bqtr2-F8gzXZWPKwDGX0NwI,283
96
+ cocotb/share/def/nvcvhpi.exp,sha256=BvADWxt0hupatGUatOZB_uHd0-REyt8ZyRz0CVw757s,2663
97
+ cocotb/share/def/nvcvhpi.lib,sha256=T8karivWkyrhNEQW46zLaeOm7-x9PDbvtBE7GHoh_54,4552
98
+ cocotb/share/include/cocotb_utils.h,sha256=6lHffujs9KVTMMMu08r-ClbaZeyRUHHK-S1QnwH54Lg,2477
99
+ cocotb/share/include/embed.h,sha256=I5PXIcyNRQH3I6A81trsGJ-ksGDQt3tvJsrzht5ux_U,894
100
+ cocotb/share/include/exports.h,sha256=RRDg9diMCUUJxdzKX0B6TGmQBNttcoVMBVCCLUUKsrA,677
101
+ cocotb/share/include/gpi.h,sha256=g3wIG_jtdVvIchXTE50wiAkqvYE4AuL-LzXswRV066w,15576
102
+ cocotb/share/include/gpi_logging.h,sha256=sBgvpiYjJfrFIKKLGh8oVMBHGGNz93rIILjA9N6VheQ,13560
103
+ cocotb/share/include/py_gpi_logging.h,sha256=24ZP1aRMNz4HRLpX6Mt3f-pkvEKK-EFZ1cKUaqA548w,722
104
+ cocotb/share/include/vhpi_user_ext.h,sha256=VLXbA-oeO83mL1vR0e4Ye0zMe5ijIaXnvT2FRFgsYDY,654
105
+ cocotb/share/include/vpi_user_ext.h,sha256=uJd-wKgKyVpoBVgagiPjND0WjciUNZaoqSa9Js_3UhU,970
106
+ cocotb/share/lib/verilator/verilator.cpp,sha256=LsFSuJdrZGenJVDOA-UFDBsukInK3gYVmUgNskhKGs8,6284
107
+ cocotb/types/__init__.py,sha256=B7pA3EAY6q1tnK60NcDcAJTYXT41N8_mPS5fz2vG0dc,957
108
+ cocotb/types/_abstract_array.py,sha256=mP94zSDRKHxsZTb5nUAHEYjp43Klx-8RT3DS5r1Vm_4,4059
109
+ cocotb/types/_array.py,sha256=GM28ZMY4ncqgrThSFY2td_OHAF0BEskw0x_vYoBsads,11273
110
+ cocotb/types/_indexing.py,sha256=OHxwlnEVNEc0JOO7XQr6DZNfPBJTeTjYno8Y60OiCIk,543
111
+ cocotb/types/_logic.py,sha256=wWJsoCzENu3tbJKEil4FjMryjpiJr-owkYMfH9NQ-tU,11365
112
+ cocotb/types/_logic_array.py,sha256=lmMzEvlg1lM0EYEti2LHIjP0EvlU7D4XCDmc5wAL_5E,34375
113
+ cocotb/types/_range.py,sha256=hfUuB7vIqg9SHVucjqwwVozW20-gCYJGUaKeNGoJXrU,6421
114
+ cocotb/types/_resolve.py,sha256=bdxyDw1ViQbtjTalszemARE4s8-KQgJmvGhNrFYd448,2129
115
+ cocotb_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
+ cocotb_tools/_coverage.py,sha256=cZBUbdVed99jcBA60t0U4XcLfq_8rkJVvk5Bdqlqhns,1265
117
+ cocotb_tools/check_results.py,sha256=nnn7k2jTTvDOzRmZ5Lk2fBbKvq_vEBw204FG61Rd-bw,1769
118
+ cocotb_tools/combine_results.py,sha256=_1vi7bglTlnWpsLr4IRrN779GpWN3wQDBXGLpicPbHE,5290
119
+ cocotb_tools/config.py,sha256=CNJvQ-vP0B38i9fGulLbd2T3nVk2EizrThk-I2aLl4o,7967
120
+ cocotb_tools/ipython_support.py,sha256=xjEOUgRbP9vHgMDy53eA0rBbGzb4v7O-aT0_6TwKHmM,3444
121
+ cocotb_tools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
+ cocotb_tools/runner.py,sha256=Ta1y_y5hjCCbEooHSg1exDGi9BenAb87BJ7qydkR3-g,74771
123
+ cocotb_tools/sim_versions.py,sha256=KwXJ93B2hARVtTwShQjdvcytNcMWle43FJ5sgtqfXyA,4007
124
+ cocotb_tools/_vendor/__init__.py,sha256=-fGisWAvaqm1aSSA9GAUNT44xDHmASVhSo1Lg46OB6I,142
125
+ cocotb_tools/_vendor/distutils_version.py,sha256=k4Zipnnw88hyoE5MLBbgcXh9iu7iYGK3K5s97wVpOFE,13185
126
+ cocotb_tools/makefiles/Makefile.deprecations,sha256=HbmEQOwkp8XiWO_-Q43KnkqGbFxmlx_aIs4DoYIls6A,886
127
+ cocotb_tools/makefiles/Makefile.inc,sha256=PFf0Phe6P1q-2ovz0dGl6EAJI0OKqQADfiOv6P3Obww,5446
128
+ cocotb_tools/makefiles/Makefile.sim,sha256=exzBV6KRE8Xt9nuefvmhSRWqEh6V1pGrEDD5hl7HEt4,4171
129
+ cocotb_tools/makefiles/simulators/Makefile.activehdl,sha256=u2_EuY-c6OH4_h9aw1TCUH04GyH9EblduUy1-xAKqSs,3068
130
+ cocotb_tools/makefiles/simulators/Makefile.cvc,sha256=B6LadqK-NUhhnh2bI3bt6zueKcmR5DFQZ7wAobpnpck,2968
131
+ cocotb_tools/makefiles/simulators/Makefile.dsim,sha256=iNwQ_9JlV8z7TaN6-mllA_PBjH4h-xltoNDBQodofg4,1519
132
+ cocotb_tools/makefiles/simulators/Makefile.ghdl,sha256=FIIOlC-4R0KNi_Xtj4gu71Blxs87VcGlmdxT0UGnHAU,3452
133
+ cocotb_tools/makefiles/simulators/Makefile.icarus,sha256=Hu8Kmp6c5ssi1bXeb-2nqKUUrDKUvzwleY1R_eErS4c,3226
134
+ cocotb_tools/makefiles/simulators/Makefile.ius,sha256=koC6rhvuO5Lf2qET24TQIrAuFHP3CizXZJ8H6wTnz2k,3665
135
+ cocotb_tools/makefiles/simulators/Makefile.modelsim,sha256=JK9P_d1HsOO61O8Rm6qeLSPZdNQ_mQNe8nf-2f8nzk0,355
136
+ cocotb_tools/makefiles/simulators/Makefile.nvc,sha256=qJocV32rwFXTGwP6HKZjKClN0QrjfWMiUHW_ZNWV0Ac,2643
137
+ cocotb_tools/makefiles/simulators/Makefile.questa,sha256=iLdtpBOwSAdeuSBa-TCY-GtDXdEDPVgM5pgLgdKNXmY,1504
138
+ cocotb_tools/makefiles/simulators/Makefile.questa-compat,sha256=upoFF9NsQ_2bwP6_cvd66Zn3YnRYVrPLLO6FiVl6Jbw,5165
139
+ cocotb_tools/makefiles/simulators/Makefile.questa-qisqrun,sha256=aHSRmQny4EXvqH8SLD5HPAzs_NuN-CwurLlf27Rc5zo,5017
140
+ cocotb_tools/makefiles/simulators/Makefile.riviera,sha256=iqaoWq6-j_eQbL_eJY4m8tjayjMX_9L413jmUiUSiJM,5495
141
+ cocotb_tools/makefiles/simulators/Makefile.vcs,sha256=xSxfmsPruSu4wvy_IydNIXdh74ewjM_McZs8AFGtmuY,2219
142
+ cocotb_tools/makefiles/simulators/Makefile.verilator,sha256=kgV50lZsGwrc_Fc1b5Gw9FcSYgZv0LLYa6rGO9DpyLI,2830
143
+ cocotb_tools/makefiles/simulators/Makefile.xcelium,sha256=vIKcGasyQv6wGH07MnOH3gXCZ_anC5c9azT_-5irDws,4354
144
+ pygpi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
+ pygpi/entry.py,sha256=dvFSzT1MeGZOThD5r3gRFU-g2fDL4sUETsHu4unyL2U,1644
146
+ pygpi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
+ cocotb-2.0.1.dist-info/LICENSE,sha256=8mwxMGzbfTp55fmZ9K18_4yuclcePI7u1fPvmxa9LVo,1601
148
+ cocotb-2.0.1.dist-info/METADATA,sha256=ufj6yFI8S_IXSfs4UFarwTWH7m0LBQi_ZpY2dIvCGX8,2577
149
+ cocotb-2.0.1.dist-info/WHEEL,sha256=BsoMMMHJGneA25n2FDquZW143lDYOuIAMJ0po_3Su94,95
150
+ cocotb-2.0.1.dist-info/entry_points.txt,sha256=LQ3GHF3csyQTVmUZ1aLtd2y5DG1GgYUHZ_xntnGO5jg,59
151
+ cocotb-2.0.1.dist-info/top_level.txt,sha256=BmIsdh7lnfZPCQrP_tJIXx4V8GSa3KyHq68_luxzu2k,436
152
+ cocotb-2.0.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (75.3.2)
3
+ Root-Is-Purelib: false
4
+ Tag: cp38-cp38-win32
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ cocotb-config = cocotb_tools.config:main
@@ -0,0 +1,18 @@
1
+ cocotb
2
+ cocotb\libs\libcocotb
3
+ cocotb\libs\libcocotbfli_modelsim
4
+ cocotb\libs\libcocotbutils
5
+ cocotb\libs\libcocotbvhpi_aldec
6
+ cocotb\libs\libcocotbvhpi_modelsim
7
+ cocotb\libs\libcocotbvhpi_nvc
8
+ cocotb\libs\libcocotbvpi_aldec
9
+ cocotb\libs\libcocotbvpi_ghdl
10
+ cocotb\libs\libcocotbvpi_icarus
11
+ cocotb\libs\libcocotbvpi_modelsim
12
+ cocotb\libs\libembed
13
+ cocotb\libs\libgpi
14
+ cocotb\libs\libgpilog
15
+ cocotb\libs\libpygpilog
16
+ cocotb\simulator
17
+ cocotb_tools
18
+ pygpi
File without changes