cocotb 1.9.1__cp37-cp37m-win32.whl → 2.0.0b1__cp37-cp37m-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.

Potentially problematic release.


This version of cocotb might be problematic. Click here for more details.

Files changed (153) hide show
  1. cocotb/{ANSI.py → _ANSI.py} +5 -25
  2. cocotb/__init__.py +76 -315
  3. cocotb/_base_triggers.py +513 -0
  4. cocotb/_bridge.py +187 -0
  5. cocotb/_decorators.py +515 -0
  6. cocotb/_deprecation.py +3 -3
  7. cocotb/_exceptions.py +7 -0
  8. cocotb/_extended_awaitables.py +419 -0
  9. cocotb/_gpi_triggers.py +382 -0
  10. cocotb/_init.py +295 -0
  11. cocotb/_outcomes.py +54 -0
  12. cocotb/_profiling.py +46 -0
  13. cocotb/_py_compat.py +100 -29
  14. cocotb/_scheduler.py +454 -0
  15. cocotb/_test.py +245 -0
  16. cocotb/_test_factory.py +309 -0
  17. cocotb/_test_functions.py +42 -0
  18. cocotb/_typing.py +7 -0
  19. cocotb/_utils.py +296 -0
  20. cocotb/_version.py +3 -7
  21. cocotb/_xunit_reporter.py +66 -0
  22. cocotb/clock.py +271 -108
  23. cocotb/handle.py +1342 -795
  24. cocotb/libs/cocotb.dll +0 -0
  25. cocotb/libs/cocotb.exp +0 -0
  26. cocotb/libs/cocotb.lib +0 -0
  27. cocotb/libs/cocotbfli_modelsim.dll +0 -0
  28. cocotb/libs/cocotbfli_modelsim.exp +0 -0
  29. cocotb/libs/cocotbfli_modelsim.lib +0 -0
  30. cocotb/libs/cocotbutils.dll +0 -0
  31. cocotb/libs/cocotbutils.exp +0 -0
  32. cocotb/libs/cocotbutils.lib +0 -0
  33. cocotb/libs/cocotbvhpi_aldec.dll +0 -0
  34. cocotb/libs/cocotbvhpi_aldec.exp +0 -0
  35. cocotb/libs/cocotbvhpi_aldec.lib +0 -0
  36. cocotb/libs/cocotbvhpi_modelsim.dll +0 -0
  37. cocotb/libs/cocotbvhpi_modelsim.exp +0 -0
  38. cocotb/libs/cocotbvhpi_modelsim.lib +0 -0
  39. cocotb/libs/cocotbvpi_aldec.dll +0 -0
  40. cocotb/libs/cocotbvpi_aldec.exp +0 -0
  41. cocotb/libs/cocotbvpi_aldec.lib +0 -0
  42. cocotb/libs/cocotbvpi_ghdl.dll +0 -0
  43. cocotb/libs/cocotbvpi_ghdl.exp +0 -0
  44. cocotb/libs/cocotbvpi_ghdl.lib +0 -0
  45. cocotb/libs/cocotbvpi_icarus.exp +0 -0
  46. cocotb/libs/cocotbvpi_icarus.lib +0 -0
  47. cocotb/libs/cocotbvpi_icarus.vpl +0 -0
  48. cocotb/libs/cocotbvpi_modelsim.dll +0 -0
  49. cocotb/libs/cocotbvpi_modelsim.exp +0 -0
  50. cocotb/libs/cocotbvpi_modelsim.lib +0 -0
  51. cocotb/libs/embed.dll +0 -0
  52. cocotb/libs/embed.exp +0 -0
  53. cocotb/libs/embed.lib +0 -0
  54. cocotb/libs/gpi.dll +0 -0
  55. cocotb/libs/gpi.exp +0 -0
  56. cocotb/libs/gpi.lib +0 -0
  57. cocotb/libs/gpilog.dll +0 -0
  58. cocotb/libs/gpilog.exp +0 -0
  59. cocotb/libs/gpilog.lib +0 -0
  60. cocotb/libs/pygpilog.dll +0 -0
  61. cocotb/libs/pygpilog.exp +0 -0
  62. cocotb/libs/pygpilog.lib +0 -0
  63. cocotb/{log.py → logging.py} +105 -110
  64. cocotb/queue.py +103 -57
  65. cocotb/regression.py +667 -716
  66. cocotb/result.py +17 -188
  67. cocotb/share/def/aldec.exp +0 -0
  68. cocotb/share/def/aldec.lib +0 -0
  69. cocotb/share/def/ghdl.exp +0 -0
  70. cocotb/share/def/ghdl.lib +0 -0
  71. cocotb/share/def/icarus.exp +0 -0
  72. cocotb/share/def/icarus.lib +0 -0
  73. cocotb/share/def/modelsim.def +1 -0
  74. cocotb/share/def/modelsim.exp +0 -0
  75. cocotb/share/def/modelsim.lib +0 -0
  76. cocotb/share/include/cocotb_utils.h +6 -29
  77. cocotb/share/include/embed.h +5 -28
  78. cocotb/share/include/gpi.h +137 -92
  79. cocotb/share/include/gpi_logging.h +221 -142
  80. cocotb/share/include/py_gpi_logging.h +7 -4
  81. cocotb/share/include/vpi_user_ext.h +4 -26
  82. cocotb/share/lib/verilator/verilator.cpp +59 -54
  83. cocotb/simulator.cp37-win32.exp +0 -0
  84. cocotb/simulator.cp37-win32.lib +0 -0
  85. cocotb/simulator.cp37-win32.pyd +0 -0
  86. cocotb/task.py +434 -212
  87. cocotb/triggers.py +55 -1092
  88. cocotb/types/__init__.py +25 -47
  89. cocotb/types/_abstract_array.py +151 -0
  90. cocotb/types/_array.py +264 -0
  91. cocotb/types/_logic.py +296 -0
  92. cocotb/types/_logic_array.py +834 -0
  93. cocotb/types/{range.py → _range.py} +36 -44
  94. cocotb/types/_resolve.py +76 -0
  95. cocotb/utils.py +119 -587
  96. cocotb-2.0.0b1.dist-info/METADATA +46 -0
  97. cocotb-2.0.0b1.dist-info/RECORD +139 -0
  98. cocotb-2.0.0b1.dist-info/entry_points.txt +2 -0
  99. {cocotb-1.9.1.dist-info → cocotb-2.0.0b1.dist-info}/top_level.txt +1 -0
  100. cocotb_tools/_coverage.py +33 -0
  101. cocotb_tools/_vendor/__init__.py +3 -0
  102. cocotb_tools/check_results.py +65 -0
  103. cocotb_tools/combine_results.py +152 -0
  104. cocotb_tools/config.py +241 -0
  105. {cocotb → cocotb_tools}/ipython_support.py +29 -22
  106. cocotb_tools/makefiles/Makefile.deprecations +27 -0
  107. {cocotb/share → cocotb_tools}/makefiles/Makefile.inc +82 -54
  108. {cocotb/share → cocotb_tools}/makefiles/Makefile.sim +8 -33
  109. {cocotb/share → cocotb_tools}/makefiles/simulators/Makefile.activehdl +18 -18
  110. cocotb_tools/makefiles/simulators/Makefile.cvc +61 -0
  111. cocotb_tools/makefiles/simulators/Makefile.dsim +39 -0
  112. {cocotb/share → cocotb_tools}/makefiles/simulators/Makefile.ghdl +13 -42
  113. cocotb_tools/makefiles/simulators/Makefile.icarus +80 -0
  114. cocotb_tools/makefiles/simulators/Makefile.ius +93 -0
  115. cocotb_tools/makefiles/simulators/Makefile.modelsim +9 -0
  116. cocotb_tools/makefiles/simulators/Makefile.nvc +60 -0
  117. cocotb_tools/makefiles/simulators/Makefile.questa +29 -0
  118. cocotb_tools/makefiles/simulators/Makefile.questa-compat +143 -0
  119. cocotb_tools/makefiles/simulators/Makefile.questa-qisqrun +149 -0
  120. cocotb_tools/makefiles/simulators/Makefile.riviera +144 -0
  121. cocotb_tools/makefiles/simulators/Makefile.vcs +65 -0
  122. {cocotb/share → cocotb_tools}/makefiles/simulators/Makefile.verilator +15 -22
  123. {cocotb/share → cocotb_tools}/makefiles/simulators/Makefile.xcelium +20 -52
  124. {cocotb → cocotb_tools}/runner.py +794 -361
  125. cocotb/_sim_versions.py → cocotb_tools/sim_versions.py +16 -21
  126. pygpi/entry.py +34 -17
  127. cocotb/binary.py +0 -858
  128. cocotb/config.py +0 -289
  129. cocotb/decorators.py +0 -332
  130. cocotb/memdebug.py +0 -35
  131. cocotb/outcomes.py +0 -56
  132. cocotb/scheduler.py +0 -1099
  133. cocotb/share/makefiles/Makefile.deprecations +0 -12
  134. cocotb/share/makefiles/simulators/Makefile.cvc +0 -94
  135. cocotb/share/makefiles/simulators/Makefile.icarus +0 -111
  136. cocotb/share/makefiles/simulators/Makefile.ius +0 -125
  137. cocotb/share/makefiles/simulators/Makefile.modelsim +0 -32
  138. cocotb/share/makefiles/simulators/Makefile.nvc +0 -64
  139. cocotb/share/makefiles/simulators/Makefile.questa +0 -168
  140. cocotb/share/makefiles/simulators/Makefile.riviera +0 -177
  141. cocotb/share/makefiles/simulators/Makefile.vcs +0 -98
  142. cocotb/types/array.py +0 -309
  143. cocotb/types/logic.py +0 -292
  144. cocotb/types/logic_array.py +0 -298
  145. cocotb/wavedrom.py +0 -199
  146. cocotb/xunit_reporter.py +0 -80
  147. cocotb-1.9.1.dist-info/METADATA +0 -166
  148. cocotb-1.9.1.dist-info/RECORD +0 -121
  149. cocotb-1.9.1.dist-info/entry_points.txt +0 -2
  150. {cocotb-1.9.1.dist-info → cocotb-2.0.0b1.dist-info}/LICENSE +0 -0
  151. {cocotb-1.9.1.dist-info → cocotb-2.0.0b1.dist-info}/WHEEL +0 -0
  152. {cocotb/_vendor → cocotb_tools}/__init__.py +0 -0
  153. {cocotb → cocotb_tools}/_vendor/distutils_version.py +0 -0
@@ -0,0 +1,46 @@
1
+ Metadata-Version: 2.1
2
+ Name: cocotb
3
+ Version: 2.0.0b1
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)
45
+
46
+ **Note: The current `master` branch of the cocotb repository is expected to be released as cocotb 2.0, which contains API-breaking changes from previous 1.x releases.**
@@ -0,0 +1,139 @@
1
+ cocotb/_ANSI.py,sha256=PvJYPrQzMSIFnC4ZKfEaHnWogrMjDkS5BwKPqIT0Rt8,2017
2
+ cocotb/__init__.py,sha256=7Qfo07pLI2Vjfog3OIgGm8pRGhbDnhSiy5lBQvZpjuE,3053
3
+ cocotb/_base_triggers.py,sha256=dQwG_jUY0QFP1bnzNKWjzRvY2vceSK33fWCfMyj73YM,15986
4
+ cocotb/_bridge.py,sha256=juvD7A4gwaGIn-FeqF5cawuLq47Dn0-3s7Y68AWkltE,6296
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=OVbhgx_RGE0mnl-2wyy5HjZ1bLNkJjd25SFfRP6IT94,13897
9
+ cocotb/_gpi_triggers.py,sha256=WnMG1rynfqsTiFcSy2jZGlER2WrWpCeY1obmAfmA8V4,13522
10
+ cocotb/_init.py,sha256=slvzktZG_yzV1eGacCuPsPf41qwNH4Cm4Gzkwy4UtkQ,10513
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=C_dkYXReswez2fk-rMUO7jDDW_gXcBAxictlwKuYm5k,3590
14
+ cocotb/_scheduler.py,sha256=oa0JhuYz2ZzMBNH1SiI8DTJHizJhYY1npqfkRzGpzl8,20368
15
+ cocotb/_test.py,sha256=em0geRUt_PxGU4VCooXORMXKof6fLyvOtVhcoGbyFHw,8343
16
+ cocotb/_test_factory.py,sha256=kAuyB9Ye41SxeaUnp9naIgYrW2kxXPPZV2WG-zli7FA,11882
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=EXX861K87J_Jk4pnJEhmlTazd8pOiA-vTmFRYBcyLIs,9194
20
+ cocotb/_version.py,sha256=5CNQAu1nCp0CUgqcu33hgozmS4PCEHIkimHy0PR9D3Q,97
21
+ cocotb/_xunit_reporter.py,sha256=1Su41GFrI55Tz9GSuXQHpFjao8F_RVGTbNsTnEYa4BU,2516
22
+ cocotb/clock.py,sha256=sF_vishhVxF1DUvbGf1wcuKLuxvieveGA0ODfkgUuok,11262
23
+ cocotb/handle.py,sha256=vFfEMwUVSlWBdrenEQd0MC5atS4U65HTYhKrrffRq5U,61460
24
+ cocotb/logging.py,sha256=VO0AXFE1XgRl5wxEZx3F4GNzqsDgAtYrA90uZK9StCk,9817
25
+ cocotb/queue.py,sha256=i9jYA5r3ihpVF8LmZd-O7s7MMtOvJoZeNm5NzF6Ln8o,6698
26
+ cocotb/regression.py,sha256=NH6QjPBoveYxcVOq98bTXZbW-eBRcEtivv7zTLXtatU,29644
27
+ cocotb/result.py,sha256=-Np4hFX9qMJsZ8KtTAfMWOpBim_funkViV0oRc0xo3I,1203
28
+ cocotb/simulator.cp37-win32.exp,sha256=F6pE83DIgGUmvSO9Ml7hbgXfiBa-GgqxiS19pZ1m4MQ,745
29
+ cocotb/simulator.cp37-win32.lib,sha256=izg1ANe5XI5yuUnnGpEb0BgT91k-44632BdSLtDQNJ0,1982
30
+ cocotb/simulator.cp37-win32.pyd,sha256=mG2n3rNsPHnRr-8ClC7yoQXGJsVqjTz-YxGynyfPiyU,34304
31
+ cocotb/simulator.cp37-win32.pyd.2.config,sha256=JGoavZmGw71REMRGu8DrBlQezZSCkQx7E3GOzGIf9_o,263
32
+ cocotb/task.py,sha256=OoWkVKozlbJYO4u02i30InCh_ToJAxmbePzec01-1ZU,19732
33
+ cocotb/triggers.py,sha256=_AnYLLtlcwliRvqXu3qKmlSGgu-yercYwpOFZfrZd4w,1450
34
+ cocotb/utils.py,sha256=K45_k52Y8SMkXzBqH00q7glmjhkDvkCPltViQX6yo0U,7326
35
+ cocotb/libs/cocotb.dll,sha256=N96uXP0KuSuQ-AS5KT2LMnzp38Nj4t5NU75dYF48pYA,14848
36
+ cocotb/libs/cocotb.exp,sha256=cJ9LR0FIqHjqX10MkiILn_egzkA0HMvO6a4fBC7XHMA,1112
37
+ cocotb/libs/cocotb.lib,sha256=GpsRceHUu5TS86pQcTQ6Tghd2ELDYgS2LUorLlsUcJM,2372
38
+ cocotb/libs/cocotbfli_modelsim.dll,sha256=V1b1zupN23J7AgPYzTu-2DKtNp2klrVFeTwfzem5vls,82432
39
+ cocotb/libs/cocotbfli_modelsim.exp,sha256=Semtvr_3T8hs48M_eTAx3FYETxpS7YoxwewLCkP_Txg,874
40
+ cocotb/libs/cocotbfli_modelsim.lib,sha256=oFSXmaKcyu0-gD4z06418qm5CrtHqa8_qEvVncwVVAM,2176
41
+ cocotb/libs/cocotbutils.dll,sha256=AAsavWpTwv-qB5p1aKKlQKEsCGoC-HOqh15heIKB17g,9728
42
+ cocotb/libs/cocotbutils.exp,sha256=BiHiR8Her_z_W0Sb0pXkBiBRx8kWYvY-3Xm4odnXGDY,975
43
+ cocotb/libs/cocotbutils.lib,sha256=DfrY194S_np9GtKY_nqu8ZUJAa00t7CHlfskeQiXsco,2154
44
+ cocotb/libs/cocotbvhpi_aldec.dll,sha256=7p2mQ79Lrg0hz7N0ZY94i67lpu99I4rbHQAgO2xpaA0,80896
45
+ cocotb/libs/cocotbvhpi_aldec.exp,sha256=jnV__Vi0cn_mwzTCUmMwtZRvH60ueB4hOF4a5rk0giw,1074
46
+ cocotb/libs/cocotbvhpi_aldec.lib,sha256=QVijT5crMt-bXsJcmkAVS6otZ6cL7HHqpcYRPFgdVRw,2448
47
+ cocotb/libs/cocotbvhpi_modelsim.dll,sha256=r3V9MrYqvpAmVzAIcLiTApXGBw5_XCWVYSZrfUCbin0,80896
48
+ cocotb/libs/cocotbvhpi_modelsim.exp,sha256=2fdYWLP22KAwIQu43KJvCUv-YtGmXbh8da_fhd_jcLU,1081
49
+ cocotb/libs/cocotbvhpi_modelsim.lib,sha256=UeBfKTtzsaxRVEVidT82QBG-3Lpz_kpmDuiZ8Y5DoYU,2492
50
+ cocotb/libs/cocotbvpi_aldec.dll,sha256=JaZez2iqeY2hqA3a52QMHSjNz_hKLeZ_X0DR00bbiTc,72192
51
+ cocotb/libs/cocotbvpi_aldec.exp,sha256=zHB0syxSXD-4UhFN0YH0AkJB0DcULcmGb0ajoNG49l4,1069
52
+ cocotb/libs/cocotbvpi_aldec.lib,sha256=dUExonavm0w-4i3eHobOETe_lcscsBl0Izxu1a7FyI8,2428
53
+ cocotb/libs/cocotbvpi_ghdl.dll,sha256=WxTeMMHClTUiXb4TDToRTmnZ0Tpj1s9XZUeh2_N5F3I,72192
54
+ cocotb/libs/cocotbvpi_ghdl.exp,sha256=SSd0e826cqnJtjrfgScoL24xXndlPuPZp74MyKf-gMg,1068
55
+ cocotb/libs/cocotbvpi_ghdl.lib,sha256=oDAw12ZNa46ecI8IQZVGbSPFAEnW8AJAVhDPAU2iZbA,2412
56
+ cocotb/libs/cocotbvpi_icarus.exp,sha256=w3-4PLiXiDnzFNJBAb_iX9BkWx89Kj2c6fTqlxyoBAU,1072
57
+ cocotb/libs/cocotbvpi_icarus.lib,sha256=JX4G6sN7Y0j3y43nY8yNrkfKOo8OCTwIAWGkkMt1mA0,2442
58
+ cocotb/libs/cocotbvpi_icarus.vpl,sha256=zl6QeABazEmYt18Q5KNGyTWjF3GO9Pv-Mp2MPtLmVDc,71680
59
+ cocotb/libs/cocotbvpi_modelsim.dll,sha256=V3JxQ_FO2U3JEPe5Hfqmjev6aaUWHT9BvfXIiEObSU4,72192
60
+ cocotb/libs/cocotbvpi_modelsim.exp,sha256=OcukFBVnr3AKzhN4SxHOhn1GtTKhBDsIbA0XBxdAm0I,1076
61
+ cocotb/libs/cocotbvpi_modelsim.lib,sha256=XR_szWKxEBgW5QTFRuc1OqGj_DX532Vj5HA3JGhPuSI,2472
62
+ cocotb/libs/embed.dll,sha256=rtFe76NzcD6_q0ErRK46QrBontMqJPdu5WoQ_ZBE0HA,10752
63
+ cocotb/libs/embed.exp,sha256=y1KFa0vrkrIGqtfUGskDd9jdx4xfACZlXbTlihwJFsQ,1099
64
+ cocotb/libs/embed.lib,sha256=uk3_gs1Nc2IbYsdHB_8YarfZbr4xV0_KAHBn0VWA94Q,2336
65
+ cocotb/libs/gpi.dll,sha256=MRgwTyoMMoGWbCOlFv91qck6Vl9i8dx9KrB0GsJ65SY,50688
66
+ cocotb/libs/gpi.exp,sha256=bUSSZdm_lwKW2BjvbKYbV18z9PjRr8_yWT4W-URVklc,18385
67
+ cocotb/libs/gpi.lib,sha256=TDx9xsud5mlLlDnga2GNeGjehNcqfDN646N97oHUc9g,30238
68
+ cocotb/libs/gpilog.dll,sha256=CWAPGy3MYqC2d_SBN292xwn7XasU7uADeOFEPs_Pxo8,15872
69
+ cocotb/libs/gpilog.exp,sha256=TUuzPi2mI3jufmlfIZnS95VZbF_GTEWSNGmxSqZzIVs,2224
70
+ cocotb/libs/gpilog.lib,sha256=Vip4GSMQgCmU-JEVNDL0OVSbESBh1cPM1kGfcS7UMVQ,4206
71
+ cocotb/libs/pygpilog.dll,sha256=j6CwUfRj2NXEDEFPKfaS8kxhcuIf9haEGsL9CUYw56A,17920
72
+ cocotb/libs/pygpilog.exp,sha256=ed3yzh0Bf2BsYaPXhLHsx3QMi4HKszpjHCPIUFW1uQY,998
73
+ cocotb/libs/pygpilog.lib,sha256=zPXSIvDgzsyPHH9UHnfAxwMADgCgrt2gst4SIxiCuIA,2180
74
+ cocotb/share/def/.gitignore,sha256=JYPaHghbqtLFl-9QtOWaAHvoDOhVxEewSYwHgoYYgf8,46
75
+ cocotb/share/def/README.md,sha256=dptv3zHQGzMqLt3Zv4XOd5IZeGqQS7Lwcq1XCs3BcR0,380
76
+ cocotb/share/def/aldec.def,sha256=ItgxVlRaVuD20jGTN3JpkbHEO8jPfU5XjFlUqDUXzlU,991
77
+ cocotb/share/def/aldec.exp,sha256=51G5oiR0kQkQ3HbFH0Z9Z7vg-EJpwyt2gKCPs2P4kh4,7810
78
+ cocotb/share/def/aldec.lib,sha256=XW2qQWFlRx_4GN3WP9VmLZ4hXSXIz7k2Y3Y1lUg_mTw,13212
79
+ cocotb/share/def/ghdl.def,sha256=ETQh5VI72dWSJi_ig5m163GfLrxScYUamt5BjHjoKsY,705
80
+ cocotb/share/def/ghdl.exp,sha256=i4V4bOja26JATPvqPIyhOpLfjM7OZjLCkTcl-_moRCg,5678
81
+ cocotb/share/def/ghdl.lib,sha256=xQ97dNiBDqeBYl0FsBbZm-KmJWpUQjx7myicvIogg9w,9780
82
+ cocotb/share/def/icarus.def,sha256=VRqkgUyzR2sa916Ra56cZVIb4kzbqDlJVWIOc3389qY,698
83
+ cocotb/share/def/icarus.exp,sha256=tAi4KfWUiRGPMTD2O58UH_BHVsMWV5MwXHiP3a42OvM,5672
84
+ cocotb/share/def/icarus.lib,sha256=pU6AS92GPfEPpCkZmabfYF9sEDDCcrJMpuezorhpTok,9412
85
+ cocotb/share/def/modelsim.def,sha256=HncvdEzVllbzFR21Nqcbsr-oXMWIfx3YsVi-RK4sbpk,2402
86
+ cocotb/share/def/modelsim.exp,sha256=E71H2SOxRabog4_ZmIlANN-eQurS4g-Y2VzG6-atx5I,16750
87
+ cocotb/share/def/modelsim.lib,sha256=x8pC32Q_tB_Fq31EfQ1O56cgWpcd9rf1Fnv8AMtBzJg,27736
88
+ cocotb/share/include/cocotb_utils.h,sha256=vmdd8RbtYRFayw13e43G21xCmtIfMXViv2Rlx5NGUTo,2477
89
+ cocotb/share/include/embed.h,sha256=zSY6XUUZbIzYH6m5i15ejot6utpsq5I2QMU_LYhbsag,894
90
+ cocotb/share/include/exports.h,sha256=RRDg9diMCUUJxdzKX0B6TGmQBNttcoVMBVCCLUUKsrA,677
91
+ cocotb/share/include/gpi.h,sha256=qLnSMOzPyR_TH_ByUY9fhacbiPKI9aLpdhL9-gR-eDw,9782
92
+ cocotb/share/include/gpi_logging.h,sha256=sBgvpiYjJfrFIKKLGh8oVMBHGGNz93rIILjA9N6VheQ,13560
93
+ cocotb/share/include/py_gpi_logging.h,sha256=kWhJemucpl6iADC63_r6HGqp3sUEZX2DD_IjO6KdLiA,722
94
+ cocotb/share/include/vhpi_user_ext.h,sha256=VLXbA-oeO83mL1vR0e4Ye0zMe5ijIaXnvT2FRFgsYDY,654
95
+ cocotb/share/include/vpi_user_ext.h,sha256=uJd-wKgKyVpoBVgagiPjND0WjciUNZaoqSa9Js_3UhU,970
96
+ cocotb/share/lib/verilator/verilator.cpp,sha256=tTTk-Fz_3r9ihrGjYCSZ0uSuwcxwsqXwhEQXvEc6kvA,6027
97
+ cocotb/types/__init__.py,sha256=fN-CRmQjQhoedzS_t3sW8Nt0q7vWRlIz04bmGh6nnU0,862
98
+ cocotb/types/_abstract_array.py,sha256=mP94zSDRKHxsZTb5nUAHEYjp43Klx-8RT3DS5r1Vm_4,4059
99
+ cocotb/types/_array.py,sha256=7Yh3-lJEEyfgbZDd8jI-akAed4y2BmDofit3O_G52ps,9975
100
+ cocotb/types/_logic.py,sha256=7mCSrgSrNxxe3oMMdyAAiodk-ujyZjIQpNGWQ8BacMI,10294
101
+ cocotb/types/_logic_array.py,sha256=AvFbRYFMxjZfdJrulFwWVbSY7_gjDdMoDc_CZVP6jgk,32266
102
+ cocotb/types/_range.py,sha256=Hed-cC9dZRHJgX9c-P3KWvGss-jyGMmot81ha0nyaZs,6170
103
+ cocotb/types/_resolve.py,sha256=bdxyDw1ViQbtjTalszemARE4s8-KQgJmvGhNrFYd448,2129
104
+ cocotb_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
+ cocotb_tools/_coverage.py,sha256=cZBUbdVed99jcBA60t0U4XcLfq_8rkJVvk5Bdqlqhns,1265
106
+ cocotb_tools/check_results.py,sha256=nnn7k2jTTvDOzRmZ5Lk2fBbKvq_vEBw204FG61Rd-bw,1769
107
+ cocotb_tools/combine_results.py,sha256=_1vi7bglTlnWpsLr4IRrN779GpWN3wQDBXGLpicPbHE,5290
108
+ cocotb_tools/config.py,sha256=S86lbErlO3wsMCL34X1AZ-iLSypaLexcXwyJNLjeUDg,7924
109
+ cocotb_tools/ipython_support.py,sha256=xjEOUgRbP9vHgMDy53eA0rBbGzb4v7O-aT0_6TwKHmM,3444
110
+ cocotb_tools/runner.py,sha256=iyN0TJIE9cOw30FrwKsfWN2kOrEBTmd6rtzokDchy9M,69189
111
+ cocotb_tools/sim_versions.py,sha256=KwXJ93B2hARVtTwShQjdvcytNcMWle43FJ5sgtqfXyA,4007
112
+ cocotb_tools/_vendor/__init__.py,sha256=-fGisWAvaqm1aSSA9GAUNT44xDHmASVhSo1Lg46OB6I,142
113
+ cocotb_tools/_vendor/distutils_version.py,sha256=k4Zipnnw88hyoE5MLBbgcXh9iu7iYGK3K5s97wVpOFE,13185
114
+ cocotb_tools/makefiles/Makefile.deprecations,sha256=HbmEQOwkp8XiWO_-Q43KnkqGbFxmlx_aIs4DoYIls6A,886
115
+ cocotb_tools/makefiles/Makefile.inc,sha256=08dSS4N467Xcwu9rlie2qsSBn4BwIEuj9QOLuHDggOk,5677
116
+ cocotb_tools/makefiles/Makefile.sim,sha256=5AtfiB08_BPs2qn5kHJ_kILE6eyjcTq_w2V57xsstUU,3763
117
+ cocotb_tools/makefiles/simulators/Makefile.activehdl,sha256=u2_EuY-c6OH4_h9aw1TCUH04GyH9EblduUy1-xAKqSs,3068
118
+ cocotb_tools/makefiles/simulators/Makefile.cvc,sha256=B6LadqK-NUhhnh2bI3bt6zueKcmR5DFQZ7wAobpnpck,2968
119
+ cocotb_tools/makefiles/simulators/Makefile.dsim,sha256=iNwQ_9JlV8z7TaN6-mllA_PBjH4h-xltoNDBQodofg4,1519
120
+ cocotb_tools/makefiles/simulators/Makefile.ghdl,sha256=FIIOlC-4R0KNi_Xtj4gu71Blxs87VcGlmdxT0UGnHAU,3452
121
+ cocotb_tools/makefiles/simulators/Makefile.icarus,sha256=joxeAbIkzDVNCjlyHKnXMHWmyi25CitsIgeVXN0AsDo,3208
122
+ cocotb_tools/makefiles/simulators/Makefile.ius,sha256=koC6rhvuO5Lf2qET24TQIrAuFHP3CizXZJ8H6wTnz2k,3665
123
+ cocotb_tools/makefiles/simulators/Makefile.modelsim,sha256=JK9P_d1HsOO61O8Rm6qeLSPZdNQ_mQNe8nf-2f8nzk0,355
124
+ cocotb_tools/makefiles/simulators/Makefile.nvc,sha256=qJocV32rwFXTGwP6HKZjKClN0QrjfWMiUHW_ZNWV0Ac,2643
125
+ cocotb_tools/makefiles/simulators/Makefile.questa,sha256=iLdtpBOwSAdeuSBa-TCY-GtDXdEDPVgM5pgLgdKNXmY,1504
126
+ cocotb_tools/makefiles/simulators/Makefile.questa-compat,sha256=upoFF9NsQ_2bwP6_cvd66Zn3YnRYVrPLLO6FiVl6Jbw,5165
127
+ cocotb_tools/makefiles/simulators/Makefile.questa-qisqrun,sha256=aHSRmQny4EXvqH8SLD5HPAzs_NuN-CwurLlf27Rc5zo,5017
128
+ cocotb_tools/makefiles/simulators/Makefile.riviera,sha256=iqaoWq6-j_eQbL_eJY4m8tjayjMX_9L413jmUiUSiJM,5495
129
+ cocotb_tools/makefiles/simulators/Makefile.vcs,sha256=KtZL_m4OxBdm4Q93sFfmR1neW48IlAok9CBs8jwKfwI,2214
130
+ cocotb_tools/makefiles/simulators/Makefile.verilator,sha256=kgV50lZsGwrc_Fc1b5Gw9FcSYgZv0LLYa6rGO9DpyLI,2830
131
+ cocotb_tools/makefiles/simulators/Makefile.xcelium,sha256=vIKcGasyQv6wGH07MnOH3gXCZ_anC5c9azT_-5irDws,4354
132
+ pygpi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
+ pygpi/entry.py,sha256=byPVFAe3A8dLlQGPvMf-wDtYUt81BGZmSOoiQLn_FnI,1735
134
+ cocotb-2.0.0b1.dist-info/LICENSE,sha256=oBp8aKF9rhLjG78uW4zxmiVsjA8Viwwdyj3nSbEXpmc,1570
135
+ cocotb-2.0.0b1.dist-info/METADATA,sha256=y3ibPboZU-8LO7nSmALRj0qkDvYruTk2_RoDtYoF61Y,2751
136
+ cocotb-2.0.0b1.dist-info/WHEEL,sha256=-4e2_5zQjKFRyJsP6SfWXi5m1fmK3VBANPdPzrOxl7c,97
137
+ cocotb-2.0.0b1.dist-info/entry_points.txt,sha256=LQ3GHF3csyQTVmUZ1aLtd2y5DG1GgYUHZ_xntnGO5jg,59
138
+ cocotb-2.0.0b1.dist-info/top_level.txt,sha256=1wga6LXtoeDGlL2GXjX4-w8Qt0y18HKevHn5PD7U2ZA,406
139
+ cocotb-2.0.0b1.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ cocotb-config = cocotb_tools.config:main
@@ -13,4 +13,5 @@ cocotb\libs\libgpi
13
13
  cocotb\libs\libgpilog
14
14
  cocotb\libs\libpygpilog
15
15
  cocotb\simulator
16
+ cocotb_tools
16
17
  pygpi
@@ -0,0 +1,33 @@
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
+
6
+
7
+ def start_cocotb_library_coverage(_: object) -> None: # pragma: no cover
8
+ if "COCOTB_LIBRARY_COVERAGE" not in os.environ:
9
+ return
10
+ try:
11
+ import coverage # noqa: PLC0415
12
+ except (ImportError, ModuleNotFoundError):
13
+ raise RuntimeError(
14
+ "cocotb library coverage collection requested but coverage package not available. Install it using `pip install coverage`."
15
+ ) from None
16
+ else:
17
+ library_coverage = coverage.coverage(
18
+ data_file=".coverage.cocotb",
19
+ config_file=False,
20
+ branch=True,
21
+ source=["cocotb"],
22
+ )
23
+ library_coverage.start()
24
+
25
+ def stop_library_coverage() -> None:
26
+ library_coverage.stop()
27
+ library_coverage.save() # pragma: no cover
28
+
29
+ # This must come after `library_coverage.start()` to ensure coverage is being
30
+ # collected on the cocotb library before importing from it.
31
+ from cocotb._init import _register_shutdown_callback # noqa: PLC0415
32
+
33
+ _register_shutdown_callback(stop_library_coverage)
@@ -0,0 +1,3 @@
1
+ # Copyright cocotb contributors
2
+ # Licensed under the Revised BSD License, see LICENSE for details.
3
+ # SPDX-License-Identifier: BSD-3-Clause
@@ -0,0 +1,65 @@
1
+ # Copyright cocotb contributors
2
+ # Licensed under the Revised BSD License, see LICENSE for details.
3
+ # SPDX-License-Identifier: BSD-3-Clause
4
+ """Checks if a JUnit results file exists and whether there was failing tests."""
5
+
6
+ import argparse
7
+ import sys
8
+ from pathlib import Path
9
+ from typing import Tuple
10
+ from xml.etree import ElementTree
11
+
12
+
13
+ def get_results(results_xml_file: Path) -> Tuple[int, int]:
14
+ """Return number of tests and fails in *results_xml_file*.
15
+
16
+ Returns:
17
+ Tuple of number of tests and number of fails.
18
+
19
+ Raises:
20
+ RuntimeError: If *results_xml_file* is non-existent.
21
+ """
22
+
23
+ __tracebackhide__ = True # Hide the traceback when using PyTest.
24
+
25
+ if not results_xml_file.is_file():
26
+ raise RuntimeError(
27
+ f"ERROR: Simulation terminated abnormally. Results file {results_xml_file} not found."
28
+ )
29
+
30
+ num_tests = 0
31
+ num_failed = 0
32
+
33
+ tree = ElementTree.parse(results_xml_file)
34
+ for ts in tree.iter("testsuite"):
35
+ for tc in ts.iter("testcase"):
36
+ num_tests += 1
37
+ for _ in tc.iter("failure"):
38
+ num_failed += 1
39
+
40
+ return (num_tests, num_failed)
41
+
42
+
43
+ def _get_parser() -> argparse.ArgumentParser:
44
+ """Return the cmdline parser"""
45
+ parser = argparse.ArgumentParser(description=__doc__)
46
+ parser.add_argument(
47
+ "results_file", help="Path to XML file holding JUnit test results.", type=Path
48
+ )
49
+ return parser
50
+
51
+
52
+ def main() -> int:
53
+ parser = _get_parser()
54
+ args = parser.parse_args()
55
+
56
+ try:
57
+ (_, num_failed) = get_results(args.results_file)
58
+ except RuntimeError:
59
+ return 1
60
+ return num_failed
61
+
62
+
63
+ if __name__ == "__main__":
64
+ rc = main()
65
+ sys.exit(rc)
@@ -0,0 +1,152 @@
1
+ # Copyright cocotb contributors
2
+ # Licensed under the Revised BSD License, see LICENSE for details.
3
+ # SPDX-License-Identifier: BSD-3-Clause
4
+ #!/usr/bin/env python
5
+ """
6
+ Simple script to combine JUnit test results into a single XML file.
7
+ """
8
+
9
+ import argparse
10
+ import os
11
+ import re
12
+ import sys
13
+ from pathlib import Path
14
+ from typing import Iterable, Pattern
15
+ from xml.etree import ElementTree as ET
16
+
17
+
18
+ def _find_all(name: Pattern, path: Path) -> Iterable[Path]:
19
+ for obj in path.iterdir():
20
+ if obj.is_file() and re.match(name, obj.name):
21
+ yield obj
22
+ elif obj.is_dir():
23
+ yield from _find_all(name, obj)
24
+
25
+
26
+ def _get_parser() -> argparse.ArgumentParser:
27
+ """Return the cmdline parser"""
28
+ parser = argparse.ArgumentParser(
29
+ description=__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter
30
+ )
31
+ parser.add_argument(
32
+ "directories",
33
+ nargs="*",
34
+ type=lambda args: [Path(arg) for arg in args],
35
+ default=[Path()],
36
+ help="Directories to search for input files.",
37
+ )
38
+ parser.add_argument(
39
+ "-i",
40
+ "--input-filename",
41
+ default=r"results.*\.xml",
42
+ help="A regular expression to match input filenames.",
43
+ )
44
+ parser.add_argument(
45
+ "-o",
46
+ "--output-file",
47
+ default="combined_results.xml",
48
+ help="Path of output XML file.",
49
+ )
50
+ parser.add_argument(
51
+ "--output-testsuites-name",
52
+ default="results",
53
+ help="Name of 'testsuites' element in output XML file.",
54
+ )
55
+ parser.add_argument(
56
+ "--verbose",
57
+ action="store_true",
58
+ help="Enables verbose output.",
59
+ )
60
+ parser.add_argument(
61
+ "--repo-root",
62
+ type=Path,
63
+ help="Specify root of cocotb repo the regression is run from (CI only).",
64
+ )
65
+ return parser
66
+
67
+
68
+ def main() -> int:
69
+ parser = _get_parser()
70
+ args = parser.parse_args()
71
+ rc = 0
72
+
73
+ result = ET.Element("testsuites", name=args.output_testsuites_name)
74
+
75
+ input_pattern = re.compile(args.input_filename)
76
+
77
+ for directory in args.directories:
78
+ if args.verbose:
79
+ print(f"Searching in {directory} for results.xml files.")
80
+ for fname in _find_all(input_pattern, directory):
81
+ if args.verbose:
82
+ print(f"Reading file {fname}.")
83
+ tree = ET.parse(fname)
84
+ for ts in tree.iter("testsuite"):
85
+ if args.verbose:
86
+ print(
87
+ "Testsuite name: {!r}, package: {!r}".format(
88
+ ts.get("name"), ts.get("package")
89
+ )
90
+ )
91
+ for existing in result:
92
+ if (existing.get("name") == ts.get("name")) and (
93
+ existing.get("package") == ts.get("package")
94
+ ):
95
+ if args.verbose:
96
+ print(
97
+ "Testsuite already exists in combined results. Extending it."
98
+ )
99
+ existing.extend(list(ts))
100
+ break
101
+ else:
102
+ if args.verbose:
103
+ print(
104
+ "Testsuite does not already exist in combined results. Adding it."
105
+ )
106
+ result.append(ts)
107
+
108
+ testsuite_count = 0
109
+ testcase_count = 0
110
+ for testsuite in result.iter("testsuite"):
111
+ testsuite_count += 1
112
+ for testcase in testsuite.iter("testcase"):
113
+ testcase_count += 1
114
+ for _ in testcase.iter("failure"):
115
+ rc = 1
116
+ print(
117
+ "Failure in testsuite: '{}' classname: '{}' testcase: '{}' with parameters '{}'".format(
118
+ testsuite.get("name"),
119
+ testcase.get("classname"),
120
+ testcase.get("name"),
121
+ testsuite.get("package"),
122
+ )
123
+ )
124
+ if (
125
+ os.getenv("GITHUB_ACTIONS") is not None
126
+ and args.repo_root is not None
127
+ ):
128
+ # Get test file relative to root of repo
129
+ file = testcase.get("file")
130
+ # if this file was output by cocotb, it has this attribute
131
+ assert file is not None
132
+ relative_file = Path(file).relative_to(args.repo_root)
133
+ print(
134
+ "::error file={},line={}::Test {}:{} failed".format(
135
+ relative_file,
136
+ testcase.get("lineno"),
137
+ testcase.get("classname"),
138
+ testcase.get("name"),
139
+ )
140
+ )
141
+
142
+ print(f"Ran a total of {testsuite_count} TestSuites and {testcase_count} TestCases")
143
+
144
+ if args.verbose:
145
+ print(f"Writing combined results to {args.output_file}")
146
+ ET.ElementTree(result).write(args.output_file, encoding="UTF-8")
147
+ return rc
148
+
149
+
150
+ if __name__ == "__main__":
151
+ rc = main()
152
+ sys.exit(rc)