cocotb 2.0.0b1__cp39-cp39-win32.whl → 2.0.0rc2__cp39-cp39-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 (95) hide show
  1. cocotb/_ANSI.py +47 -54
  2. cocotb/__init__.py +12 -2
  3. cocotb/_base_triggers.py +11 -9
  4. cocotb/_bridge.py +8 -9
  5. cocotb/_extended_awaitables.py +1 -1
  6. cocotb/_gpi_triggers.py +4 -1
  7. cocotb/_init.py +17 -11
  8. cocotb/_py_compat.py +24 -10
  9. cocotb/_scheduler.py +25 -31
  10. cocotb/_test.py +6 -3
  11. cocotb/_test_factory.py +4 -1
  12. cocotb/_utils.py +1 -23
  13. cocotb/_version.py +1 -1
  14. cocotb/clock.py +98 -16
  15. cocotb/debug.py +24 -0
  16. cocotb/handle.py +62 -32
  17. cocotb/libs/cocotb.dll +0 -0
  18. cocotb/libs/cocotb.exp +0 -0
  19. cocotb/libs/cocotb.lib +0 -0
  20. cocotb/libs/cocotbfli_modelsim.dll +0 -0
  21. cocotb/libs/cocotbfli_modelsim.exp +0 -0
  22. cocotb/libs/cocotbfli_modelsim.lib +0 -0
  23. cocotb/libs/cocotbutils.dll +0 -0
  24. cocotb/libs/cocotbutils.exp +0 -0
  25. cocotb/libs/cocotbutils.lib +0 -0
  26. cocotb/libs/cocotbvhpi_aldec.dll +0 -0
  27. cocotb/libs/cocotbvhpi_aldec.exp +0 -0
  28. cocotb/libs/cocotbvhpi_aldec.lib +0 -0
  29. cocotb/libs/cocotbvhpi_modelsim.dll +0 -0
  30. cocotb/libs/cocotbvhpi_modelsim.exp +0 -0
  31. cocotb/libs/cocotbvhpi_modelsim.lib +0 -0
  32. cocotb/libs/cocotbvpi_aldec.dll +0 -0
  33. cocotb/libs/cocotbvpi_aldec.exp +0 -0
  34. cocotb/libs/cocotbvpi_aldec.lib +0 -0
  35. cocotb/libs/cocotbvpi_ghdl.dll +0 -0
  36. cocotb/libs/cocotbvpi_ghdl.exp +0 -0
  37. cocotb/libs/cocotbvpi_ghdl.lib +0 -0
  38. cocotb/libs/cocotbvpi_icarus.exp +0 -0
  39. cocotb/libs/cocotbvpi_icarus.lib +0 -0
  40. cocotb/libs/cocotbvpi_icarus.vpl +0 -0
  41. cocotb/libs/cocotbvpi_modelsim.dll +0 -0
  42. cocotb/libs/cocotbvpi_modelsim.exp +0 -0
  43. cocotb/libs/cocotbvpi_modelsim.lib +0 -0
  44. cocotb/libs/embed.dll +0 -0
  45. cocotb/libs/embed.exp +0 -0
  46. cocotb/libs/embed.lib +0 -0
  47. cocotb/libs/gpi.dll +0 -0
  48. cocotb/libs/gpi.exp +0 -0
  49. cocotb/libs/gpi.lib +0 -0
  50. cocotb/libs/gpilog.dll +0 -0
  51. cocotb/libs/gpilog.exp +0 -0
  52. cocotb/libs/gpilog.lib +0 -0
  53. cocotb/libs/pygpilog.dll +0 -0
  54. cocotb/libs/pygpilog.exp +0 -0
  55. cocotb/libs/pygpilog.lib +0 -0
  56. cocotb/logging.py +243 -117
  57. cocotb/regression.py +43 -35
  58. cocotb/share/def/aldec.exp +0 -0
  59. cocotb/share/def/aldec.lib +0 -0
  60. cocotb/share/def/ghdl.exp +0 -0
  61. cocotb/share/def/ghdl.lib +0 -0
  62. cocotb/share/def/icarus.exp +0 -0
  63. cocotb/share/def/icarus.lib +0 -0
  64. cocotb/share/def/modelsim.exp +0 -0
  65. cocotb/share/def/modelsim.lib +0 -0
  66. cocotb/share/include/cocotb_utils.h +3 -3
  67. cocotb/share/include/embed.h +2 -2
  68. cocotb/share/include/gpi.h +258 -109
  69. cocotb/share/include/py_gpi_logging.h +3 -3
  70. cocotb/share/lib/verilator/verilator.cpp +23 -15
  71. cocotb/simtime.py +230 -0
  72. cocotb/simulator.cp39-win32.exp +0 -0
  73. cocotb/simulator.cp39-win32.lib +0 -0
  74. cocotb/simulator.cp39-win32.pyd +0 -0
  75. cocotb/task.py +54 -11
  76. cocotb/types/__init__.py +4 -1
  77. cocotb/types/_array.py +33 -2
  78. cocotb/types/_indexing.py +17 -0
  79. cocotb/types/_logic.py +96 -59
  80. cocotb/types/_logic_array.py +56 -22
  81. cocotb/types/_range.py +12 -5
  82. cocotb/utils.py +9 -129
  83. {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/METADATA +1 -1
  84. cocotb-2.0.0rc2.dist-info/RECORD +146 -0
  85. {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/licenses/LICENSE +1 -0
  86. cocotb_tools/config.py +5 -5
  87. cocotb_tools/makefiles/Makefile.inc +3 -9
  88. cocotb_tools/makefiles/Makefile.sim +9 -1
  89. cocotb_tools/makefiles/simulators/Makefile.vcs +1 -1
  90. cocotb_tools/runner.py +94 -59
  91. pygpi/entry.py +5 -6
  92. cocotb-2.0.0b1.dist-info/RECORD +0 -143
  93. {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/WHEEL +0 -0
  94. {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/entry_points.txt +0 -0
  95. {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cocotb
3
- Version: 2.0.0b1
3
+ Version: 2.0.0rc2
4
4
  Summary: cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.
5
5
  Home-page: https://www.cocotb.org
6
6
  Author: Chris Higgs, Stuart Hodgson
@@ -0,0 +1,146 @@
1
+ cocotb/_ANSI.py,sha256=LIywDKSZXT5TuKq24YO4_c0lF-02wJYbQ50Ko_T4PJY,2272
2
+ cocotb/__init__.py,sha256=ytXW8EBeHwDddWwPArzeq8tNWy1tRShpU1UEte3_NgQ,3254
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=av_8OUaDUpMIuf6weE-gYxgmNqiA1z4ry7brzGl5fuY,3880
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=8b5YwveFmhXomHhjDgTw28Qkz6vsEjAuoL7UkoZD3lU,98
21
+ cocotb/_xunit_reporter.py,sha256=1Su41GFrI55Tz9GSuXQHpFjao8F_RVGTbNsTnEYa4BU,2516
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=Y5pQbP3MVwJabIp9VMKI5jD93xD5PUWlj4cwCQjuE8g,14247
26
+ cocotb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ cocotb/queue.py,sha256=i9jYA5r3ihpVF8LmZd-O7s7MMtOvJoZeNm5NzF6Ln8o,6698
28
+ cocotb/regression.py,sha256=llXaAHZCcMS_gqr4O7FFPfwmWSF-rrHbB44TDaYWyog,29786
29
+ cocotb/result.py,sha256=-Np4hFX9qMJsZ8KtTAfMWOpBim_funkViV0oRc0xo3I,1203
30
+ cocotb/simtime.py,sha256=wHg07UBDwiCbVqS9CjzTP3-Zvh0FKvLBntvIveTCrc8,6668
31
+ cocotb/simulator.cp39-win32.exp,sha256=MuZG-jJvWD8_-opVz6VzUuByhxV8duIc3_228Nw8MjA,745
32
+ cocotb/simulator.cp39-win32.lib,sha256=jLa640j8Zb_j_qAYlM_Om6VBrWb6p9JYcCpGDFNtW8Y,1982
33
+ cocotb/simulator.cp39-win32.pyd,sha256=NddnpIsbqOLw1vmNdww-tl_etE6T8duxD4E3qNEIovg,33792
34
+ cocotb/simulator.cp39-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=HhrLa0eF8ld_mJGVfs-KSWJpksmP5kRiuBP7Wv6lFrc,15360
40
+ cocotb/libs/cocotb.exp,sha256=vqF4Pf3qol42xg3bQIUYmC1vRPS8wsK10u0fWTsbqXM,1112
41
+ cocotb/libs/cocotb.lib,sha256=WZEmuOm4okiJ164TUbyrsv8ZLC9Zjk_tDSGd1mPWqYw,2372
42
+ cocotb/libs/cocotbfli_modelsim.dll,sha256=v_L0o0l3qizVyOpKmGPUwbu0IcQYq5w4LePf6GodX-A,82432
43
+ cocotb/libs/cocotbfli_modelsim.exp,sha256=CSAI9gfo5wMS1RSmIi4m0fJu4RbLWNVE33K2xa10nPU,874
44
+ cocotb/libs/cocotbfli_modelsim.lib,sha256=nZaczewE_6R8DIpWmH-xGjZU7RjeyfhrWqDQc22bxls,2176
45
+ cocotb/libs/cocotbutils.dll,sha256=PRaZ29bPfJmgxuy7q9TCdBIqiw4NyYq31O7fWKMNA10,9728
46
+ cocotb/libs/cocotbutils.exp,sha256=aDLBqlY6h5D7_g78Tpy8RhkgturSu_B5WgeIseUzRyk,975
47
+ cocotb/libs/cocotbutils.lib,sha256=ffsEqjx9uAOaE50t8bML3hEAQhMtIucxpyxyl_RoTmU,2154
48
+ cocotb/libs/cocotbvhpi_aldec.dll,sha256=T1SNfrCUYge4TQDMU606stSEzoLNJGl_YOmVleWJ5VU,80896
49
+ cocotb/libs/cocotbvhpi_aldec.exp,sha256=gQIdNwgZ7ZAcwUucWmGV6BrsKtobE_5W5gfeTpG7w7o,1074
50
+ cocotb/libs/cocotbvhpi_aldec.lib,sha256=OLJxZBwL8dRmZKdhbIU2I3lbNGX-jNX2yFplRTkSKy0,2448
51
+ cocotb/libs/cocotbvhpi_modelsim.dll,sha256=rm0yGyd5Oh6zkKXiN1FjfbtTHdtpnAeDNeSwGj1oKiI,80896
52
+ cocotb/libs/cocotbvhpi_modelsim.exp,sha256=_5MJWbnjQCuOToSviNHlXnClSIVd-GnAPFzmtRs8kxI,1081
53
+ cocotb/libs/cocotbvhpi_modelsim.lib,sha256=XLbtTImWjHbnC8PM5X_U0K_DeNCR17uw_CQyWV7tfmc,2492
54
+ cocotb/libs/cocotbvpi_aldec.dll,sha256=Yo4sNiHQPT_gs3sr4Nk2gA5mjBtJSTaL-FtIMbmsuhs,72192
55
+ cocotb/libs/cocotbvpi_aldec.exp,sha256=0sMPtWcRvAUIblwF5LB_Bg2lCu97IaRhog7VyaAXCEc,1069
56
+ cocotb/libs/cocotbvpi_aldec.lib,sha256=fG2PzXPRR_QK0pxqALh1LHDWEoWkO1nTlLXT3Na9QQE,2428
57
+ cocotb/libs/cocotbvpi_ghdl.dll,sha256=vqckU8IRiMwpx18oYaHyrLnAPCTSoZ3Q3BLW_ytuAL8,72192
58
+ cocotb/libs/cocotbvpi_ghdl.exp,sha256=NnYj_FxVi4j_lrVOIWfAq4MhFw_vDEwgyxPz2NQw53Q,1068
59
+ cocotb/libs/cocotbvpi_ghdl.lib,sha256=viFoIURkFec0F8Ne-zc7SBzGqEQbwU_kcJ2man9Sdek,2412
60
+ cocotb/libs/cocotbvpi_icarus.exp,sha256=Z05ji6uqbJ-4jPduipXFw7TDGLmqus0zzGGGThZwOK8,1072
61
+ cocotb/libs/cocotbvpi_icarus.lib,sha256=UY5GFXxu84Vmn3MpiKRt-ZsBKxkv5_H-u_s6HoS6aWo,2442
62
+ cocotb/libs/cocotbvpi_icarus.vpl,sha256=FO7Cn872h14zYE8MsNvFUQjq1-t1BQJJsjlGcgwSHoo,71680
63
+ cocotb/libs/cocotbvpi_modelsim.dll,sha256=1-1iD96HRwI2JLFylOz9dHUcVpdV72yhlJvkNGj3MpU,72192
64
+ cocotb/libs/cocotbvpi_modelsim.exp,sha256=kVEQZU2PToY0IoNQ4WlIKeF49x2jo1nTPY9TVV98FCo,1076
65
+ cocotb/libs/cocotbvpi_modelsim.lib,sha256=MzgjtCw0_PlcnnMxA7LxPUzRYe0cXShq3THcoAoxNNE,2472
66
+ cocotb/libs/embed.dll,sha256=ZAB7J25nbu-CgXQQA9p_UWQpljk3q1ZCdOrvw_3fTWg,10752
67
+ cocotb/libs/embed.exp,sha256=wzbTvcLEgx4uZAKf1d7Rd6EsJsDeOTBlQgQAjs9HF5Q,1099
68
+ cocotb/libs/embed.lib,sha256=tksz2vxjfYtYXEgs_4zQCm9DtnlUc2cPh5uDv2VQDRM,2336
69
+ cocotb/libs/gpi.dll,sha256=8cnfLvpZf9pNgibwBTK0zNLfQUtLVrFymMzY32PNtrw,50688
70
+ cocotb/libs/gpi.exp,sha256=inGZm3KX6wnKrIE3yZkI-8qT8L4ALkOFX-9gsGBIyOk,18385
71
+ cocotb/libs/gpi.lib,sha256=q5c6eEF8Nt2dKlwcLqMYNyoE-EkEaMb8DRZfyxNFzrg,30238
72
+ cocotb/libs/gpilog.dll,sha256=8jJ-rO03YRRQdHemo2lQZaqVBzGEmjN9bdBsHrXznfY,15872
73
+ cocotb/libs/gpilog.exp,sha256=cJ-f7n-cPqHyrY7iFvKHxaOQ1Y-fHLPcnxNSqHVEXas,2224
74
+ cocotb/libs/gpilog.lib,sha256=CknuQ4dRlZIKMSEf8ouBnNkOWTVxW1Ib08r1UMj1hBQ,4206
75
+ cocotb/libs/pygpilog.dll,sha256=I-eb4UQHpupYiS4owhRiYia3jAM3tt2AtT_PVsJGC4Q,17408
76
+ cocotb/libs/pygpilog.exp,sha256=NMZEy9EYiqUT74vT3lmGJGYbRnRRDCi01YzawgJjGNY,998
77
+ cocotb/libs/pygpilog.lib,sha256=BNSKcMVAYwyNKlw2KXMymFluKBdUXkUBhfvQLvuJ5zI,2180
78
+ cocotb/share/def/.gitignore,sha256=JYPaHghbqtLFl-9QtOWaAHvoDOhVxEewSYwHgoYYgf8,46
79
+ cocotb/share/def/README.md,sha256=dptv3zHQGzMqLt3Zv4XOd5IZeGqQS7Lwcq1XCs3BcR0,380
80
+ cocotb/share/def/aldec.def,sha256=ItgxVlRaVuD20jGTN3JpkbHEO8jPfU5XjFlUqDUXzlU,991
81
+ cocotb/share/def/aldec.exp,sha256=htzENlcy9V5pmEss-e5SXwQX7yIxVlgdz9Z6THvdRLU,7810
82
+ cocotb/share/def/aldec.lib,sha256=gSExc3pRJxK6qnIpNeBljGOc-5KB0HcTawTg51H2IQg,13212
83
+ cocotb/share/def/ghdl.def,sha256=ETQh5VI72dWSJi_ig5m163GfLrxScYUamt5BjHjoKsY,705
84
+ cocotb/share/def/ghdl.exp,sha256=YDk8KVDtD4ANOV1W7tnQDYOnpxXmgG9hcd0D0v64EMo,5678
85
+ cocotb/share/def/ghdl.lib,sha256=CKYpQvA1UiF9yHGGAe7RoPRP9DWiUFYvmzAlAp5memk,9780
86
+ cocotb/share/def/icarus.def,sha256=VRqkgUyzR2sa916Ra56cZVIb4kzbqDlJVWIOc3389qY,698
87
+ cocotb/share/def/icarus.exp,sha256=t5bbmQTRI-UsRrVisUN7RyCu8p-emfqFH_P6FQF15Rs,5672
88
+ cocotb/share/def/icarus.lib,sha256=lNyfcPE7qjQQH5Ssnj3Ur-bUtAVpBm2D00xoaoGQ2-I,9412
89
+ cocotb/share/def/modelsim.def,sha256=HncvdEzVllbzFR21Nqcbsr-oXMWIfx3YsVi-RK4sbpk,2402
90
+ cocotb/share/def/modelsim.exp,sha256=A4OxHsG4wYleMJn6JFp6A6ELhye_7kCwc2ufJSPWVuE,16750
91
+ cocotb/share/def/modelsim.lib,sha256=TgolkaZTcO0vdTOd-Mj9WB41TQZZddfeiKiz_p1a_c8,27736
92
+ cocotb/share/include/cocotb_utils.h,sha256=6lHffujs9KVTMMMu08r-ClbaZeyRUHHK-S1QnwH54Lg,2477
93
+ cocotb/share/include/embed.h,sha256=I5PXIcyNRQH3I6A81trsGJ-ksGDQt3tvJsrzht5ux_U,894
94
+ cocotb/share/include/exports.h,sha256=RRDg9diMCUUJxdzKX0B6TGmQBNttcoVMBVCCLUUKsrA,677
95
+ cocotb/share/include/gpi.h,sha256=g3wIG_jtdVvIchXTE50wiAkqvYE4AuL-LzXswRV066w,15576
96
+ cocotb/share/include/gpi_logging.h,sha256=sBgvpiYjJfrFIKKLGh8oVMBHGGNz93rIILjA9N6VheQ,13560
97
+ cocotb/share/include/py_gpi_logging.h,sha256=24ZP1aRMNz4HRLpX6Mt3f-pkvEKK-EFZ1cKUaqA548w,722
98
+ cocotb/share/include/vhpi_user_ext.h,sha256=VLXbA-oeO83mL1vR0e4Ye0zMe5ijIaXnvT2FRFgsYDY,654
99
+ cocotb/share/include/vpi_user_ext.h,sha256=uJd-wKgKyVpoBVgagiPjND0WjciUNZaoqSa9Js_3UhU,970
100
+ cocotb/share/lib/verilator/verilator.cpp,sha256=LsFSuJdrZGenJVDOA-UFDBsukInK3gYVmUgNskhKGs8,6284
101
+ cocotb/types/__init__.py,sha256=B7pA3EAY6q1tnK60NcDcAJTYXT41N8_mPS5fz2vG0dc,957
102
+ cocotb/types/_abstract_array.py,sha256=mP94zSDRKHxsZTb5nUAHEYjp43Klx-8RT3DS5r1Vm_4,4059
103
+ cocotb/types/_array.py,sha256=Pql7dtXc9NQXN1OMddLuZG_t5SThgaToejKYOnGC1NI,11171
104
+ cocotb/types/_indexing.py,sha256=OHxwlnEVNEc0JOO7XQr6DZNfPBJTeTjYno8Y60OiCIk,543
105
+ cocotb/types/_logic.py,sha256=wWJsoCzENu3tbJKEil4FjMryjpiJr-owkYMfH9NQ-tU,11365
106
+ cocotb/types/_logic_array.py,sha256=7y3lQBE0_YbpBzw5AV2o7vbZr3heRDZJfmSV_hyASHY,33629
107
+ cocotb/types/_range.py,sha256=hfUuB7vIqg9SHVucjqwwVozW20-gCYJGUaKeNGoJXrU,6421
108
+ cocotb/types/_resolve.py,sha256=bdxyDw1ViQbtjTalszemARE4s8-KQgJmvGhNrFYd448,2129
109
+ cocotb-2.0.0rc2.dist-info/licenses/LICENSE,sha256=8mwxMGzbfTp55fmZ9K18_4yuclcePI7u1fPvmxa9LVo,1601
110
+ cocotb_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
+ cocotb_tools/_coverage.py,sha256=cZBUbdVed99jcBA60t0U4XcLfq_8rkJVvk5Bdqlqhns,1265
112
+ cocotb_tools/check_results.py,sha256=nnn7k2jTTvDOzRmZ5Lk2fBbKvq_vEBw204FG61Rd-bw,1769
113
+ cocotb_tools/combine_results.py,sha256=_1vi7bglTlnWpsLr4IRrN779GpWN3wQDBXGLpicPbHE,5290
114
+ cocotb_tools/config.py,sha256=UEuv72qTQBfDYY3J3-FEc87zMe4MZOPG2fwFK5h3Ct8,7945
115
+ cocotb_tools/ipython_support.py,sha256=xjEOUgRbP9vHgMDy53eA0rBbGzb4v7O-aT0_6TwKHmM,3444
116
+ cocotb_tools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
+ cocotb_tools/runner.py,sha256=uNVkLEp3-BR-nvK54RPfihVBnKVOfqIjO0cAwsypgDs,70355
118
+ cocotb_tools/sim_versions.py,sha256=KwXJ93B2hARVtTwShQjdvcytNcMWle43FJ5sgtqfXyA,4007
119
+ cocotb_tools/_vendor/__init__.py,sha256=-fGisWAvaqm1aSSA9GAUNT44xDHmASVhSo1Lg46OB6I,142
120
+ cocotb_tools/_vendor/distutils_version.py,sha256=k4Zipnnw88hyoE5MLBbgcXh9iu7iYGK3K5s97wVpOFE,13185
121
+ cocotb_tools/makefiles/Makefile.deprecations,sha256=HbmEQOwkp8XiWO_-Q43KnkqGbFxmlx_aIs4DoYIls6A,886
122
+ cocotb_tools/makefiles/Makefile.inc,sha256=PFf0Phe6P1q-2ovz0dGl6EAJI0OKqQADfiOv6P3Obww,5446
123
+ cocotb_tools/makefiles/Makefile.sim,sha256=exzBV6KRE8Xt9nuefvmhSRWqEh6V1pGrEDD5hl7HEt4,4171
124
+ cocotb_tools/makefiles/simulators/Makefile.activehdl,sha256=u2_EuY-c6OH4_h9aw1TCUH04GyH9EblduUy1-xAKqSs,3068
125
+ cocotb_tools/makefiles/simulators/Makefile.cvc,sha256=B6LadqK-NUhhnh2bI3bt6zueKcmR5DFQZ7wAobpnpck,2968
126
+ cocotb_tools/makefiles/simulators/Makefile.dsim,sha256=iNwQ_9JlV8z7TaN6-mllA_PBjH4h-xltoNDBQodofg4,1519
127
+ cocotb_tools/makefiles/simulators/Makefile.ghdl,sha256=FIIOlC-4R0KNi_Xtj4gu71Blxs87VcGlmdxT0UGnHAU,3452
128
+ cocotb_tools/makefiles/simulators/Makefile.icarus,sha256=joxeAbIkzDVNCjlyHKnXMHWmyi25CitsIgeVXN0AsDo,3208
129
+ cocotb_tools/makefiles/simulators/Makefile.ius,sha256=koC6rhvuO5Lf2qET24TQIrAuFHP3CizXZJ8H6wTnz2k,3665
130
+ cocotb_tools/makefiles/simulators/Makefile.modelsim,sha256=JK9P_d1HsOO61O8Rm6qeLSPZdNQ_mQNe8nf-2f8nzk0,355
131
+ cocotb_tools/makefiles/simulators/Makefile.nvc,sha256=qJocV32rwFXTGwP6HKZjKClN0QrjfWMiUHW_ZNWV0Ac,2643
132
+ cocotb_tools/makefiles/simulators/Makefile.questa,sha256=iLdtpBOwSAdeuSBa-TCY-GtDXdEDPVgM5pgLgdKNXmY,1504
133
+ cocotb_tools/makefiles/simulators/Makefile.questa-compat,sha256=upoFF9NsQ_2bwP6_cvd66Zn3YnRYVrPLLO6FiVl6Jbw,5165
134
+ cocotb_tools/makefiles/simulators/Makefile.questa-qisqrun,sha256=aHSRmQny4EXvqH8SLD5HPAzs_NuN-CwurLlf27Rc5zo,5017
135
+ cocotb_tools/makefiles/simulators/Makefile.riviera,sha256=iqaoWq6-j_eQbL_eJY4m8tjayjMX_9L413jmUiUSiJM,5495
136
+ cocotb_tools/makefiles/simulators/Makefile.vcs,sha256=xSxfmsPruSu4wvy_IydNIXdh74ewjM_McZs8AFGtmuY,2219
137
+ cocotb_tools/makefiles/simulators/Makefile.verilator,sha256=kgV50lZsGwrc_Fc1b5Gw9FcSYgZv0LLYa6rGO9DpyLI,2830
138
+ cocotb_tools/makefiles/simulators/Makefile.xcelium,sha256=vIKcGasyQv6wGH07MnOH3gXCZ_anC5c9azT_-5irDws,4354
139
+ pygpi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
+ pygpi/entry.py,sha256=dvFSzT1MeGZOThD5r3gRFU-g2fDL4sUETsHu4unyL2U,1644
141
+ pygpi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
+ cocotb-2.0.0rc2.dist-info/METADATA,sha256=EyJKsXmPLqlAmkJGh1Np4jPJR4HhUFV3Fv9r1CjDUws,3065
143
+ cocotb-2.0.0rc2.dist-info/WHEEL,sha256=Q3uEVTFw-CqGed7ywmQZcdvBC5FiRV941NvAhTjjkOQ,95
144
+ cocotb-2.0.0rc2.dist-info/entry_points.txt,sha256=LQ3GHF3csyQTVmUZ1aLtd2y5DG1GgYUHZ_xntnGO5jg,59
145
+ cocotb-2.0.0rc2.dist-info/top_level.txt,sha256=1wga6LXtoeDGlL2GXjX4-w8Qt0y18HKevHn5PD7U2ZA,406
146
+ cocotb-2.0.0rc2.dist-info/RECORD,,
@@ -1,3 +1,4 @@
1
+ Copyright cocotb contributors
1
2
  Copyright (c) 2013 Potential Ventures Ltd
2
3
  Copyright (c) 2013 SolarFlare Communications Inc
3
4
  All rights reserved.
cocotb_tools/config.py CHANGED
@@ -47,16 +47,16 @@ def _get_version() -> str:
47
47
 
48
48
  def _help_vars_text() -> str:
49
49
  if "dev" in _get_version():
50
- doclink = "https://docs.cocotb.org/en/development/building.html"
50
+ doclink = "https://docs.cocotb.org/en/development/library_reference.html"
51
51
  else:
52
- doclink = f"https://docs.cocotb.org/en/v{_get_version()}/building.html"
52
+ doclink = f"https://docs.cocotb.org/en/v{_get_version()}/library_reference.html"
53
53
 
54
- # NOTE: make sure to keep "helpmsg" aligned with ../../docs/source/building.rst
54
+ # NOTE: make sure to keep "helpmsg" aligned with docs/source/library_reference.rst
55
55
  helpmsg = textwrap.dedent(
56
56
  """\
57
57
  The following variables are environment variables:
58
58
 
59
- Cocotb
59
+ cocotb
60
60
  ------
61
61
  COCOTB_TOPLEVEL Instance in the hierarchy to use as the DUT
62
62
  COCOTB_RANDOM_SEED Random seed, to recreate a previous test stimulus
@@ -75,7 +75,7 @@ def _help_vars_text() -> str:
75
75
  COCOTB_TESTCASE Test function(s) to run (comma-separated list)
76
76
  COCOTB_RESULTS_FILE File name for xUnit XML tests results
77
77
  COCOTB_USER_COVERAGE Collect Python user coverage (HDL for some simulators)
78
- COCOTB_COVERAGE_RCFILE Configuration for user code coverage
78
+ COVERAGE_RCFILE Configuration for user code coverage
79
79
 
80
80
  GPI
81
81
  ---
@@ -27,15 +27,6 @@ else ifneq (, $(findstring MSYS, $(OS)))
27
27
  endif
28
28
  export OS
29
29
 
30
- # this ensures we use the same python as the one cocotb was installed into
31
- # attempts to use cocotb_config entry script to get that info, falls back to "python"
32
- PYTHON_BIN_RES := $(shell cocotb-config --python-bin 2>>/dev/null; echo $$?)
33
- PYTHON_BIN_RC := $(lastword $(PYTHON_BIN_RES))
34
- PYTHON_BIN := $(strip $(subst $(PYTHON_BIN_RC)QQQQ,,$(PYTHON_BIN_RES)QQQQ))
35
- ifneq ($(PYTHON_BIN_RC),0)
36
- PYTHON_BIN := python3
37
- endif
38
-
39
30
  export PYGPI_PYTHON_BIN := $(shell $(PYTHON_BIN) -m cocotb_tools.config --python-bin)
40
31
 
41
32
  # Directory containing the cocotb Makefiles
@@ -138,6 +129,9 @@ define check_lib_order
138
129
  fi;
139
130
  endef
140
131
 
132
+ # NOTE: if the following simulator list is modified, update the sentence
133
+ # "This flag is enabled by default for the GHDL, NVC and Verilator simulators."
134
+ # in docs/source/building.rst accordingly.
141
135
  ifneq ($(filter $(SIM),nvc ghdl verilator),)
142
136
  COCOTB_TRUST_INERTIAL_WRITES ?= 1
143
137
  else
@@ -57,6 +57,15 @@ define newline
57
57
 
58
58
  endef
59
59
 
60
+ # this ensures we use the same python as the one cocotb was installed into
61
+ # attempts to use cocotb_config entry script to get that info, falls back to "python"
62
+ PYTHON_BIN_RES := $(shell cocotb-config --python-bin 2>>/dev/null; echo $$?)
63
+ PYTHON_BIN_RC := $(lastword $(PYTHON_BIN_RES))
64
+ PYTHON_BIN := $(strip $(subst $(PYTHON_BIN_RC)QQQQ,,$(PYTHON_BIN_RES)QQQQ))
65
+ ifneq ($(PYTHON_BIN_RC),0)
66
+ PYTHON_BIN := python3
67
+ endif
68
+
60
69
  # this cannot be a regular target because of the way Makefile.$(SIM) is included
61
70
  ifeq ($(MAKECMDGOALS),help)
62
71
  $(info $(help_targets))
@@ -69,7 +78,6 @@ ifeq ($(MAKECMDGOALS),help)
69
78
  $(error Stopping after printing help)
70
79
  endif
71
80
 
72
- PYTHON_BIN ?= python
73
81
  include $(shell $(PYTHON_BIN) -m cocotb_tools.config --makefiles)/Makefile.inc
74
82
 
75
83
  # Default to Icarus if no simulator is defined
@@ -30,7 +30,7 @@ ifeq ($(PYTHON_ARCH),64bit)
30
30
  endif
31
31
 
32
32
  ifeq ($(GUI),1)
33
- EXTRA_ARGS += -gui
33
+ EXTRA_ARGS += -gui -kdb
34
34
  endif
35
35
 
36
36
  # Avoid linker "undefined reference to" error
cocotb_tools/runner.py CHANGED
@@ -89,7 +89,7 @@ for i in range(32):
89
89
  _sv_escape_translate_table = str.maketrans(_sv_escapes)
90
90
 
91
91
 
92
- def _as_sv_literal(value: str) -> str:
92
+ def _as_sv_literal(value: object) -> str:
93
93
  if isinstance(value, (int, float)):
94
94
  return str(value)
95
95
  elif isinstance(value, str):
@@ -277,7 +277,7 @@ class Runner(ABC):
277
277
  clean: Delete *build_dir* before building.
278
278
  verbose: Enable verbose messages.
279
279
  timescale: Tuple containing time unit and time precision for simulation.
280
- waves: Record signal traces. Overridden by the ``WAVES`` environment variable.
280
+ waves: Record signal traces. Overridden by the :envvar:`WAVES` environment variable.
281
281
  log_file: File to write the build log to.
282
282
 
283
283
  .. deprecated:: 2.0
@@ -370,14 +370,14 @@ class Runner(ABC):
370
370
  test_args: A list of extra arguments for the simulator.
371
371
  plusargs: 'plusargs' to set for the simulator.
372
372
  extra_env: Extra environment variables to set.
373
- waves: Record signal traces. Overridden by the ``WAVES`` environment variable.
374
- gui: Run with simulator GUI. Overridden by the ``GUI`` environment variable.
373
+ waves: Record signal traces. Overridden by the :envvar:`WAVES` environment variable.
374
+ gui: Run with simulator GUI. Overridden by the :envvar:`GUI` environment variable.
375
375
  parameters: Verilog parameters or VHDL generics.
376
376
  build_dir: Directory the build step has been run in.
377
377
  test_dir: Directory to run the tests in.
378
378
  results_xml: Name of xUnit XML file to store test results in.
379
379
  If an absolute path is provided it will be used as-is,
380
- ``{build_dir}/results.xml`` otherwise.
380
+ :file:`{build_dir}/results.xml` otherwise.
381
381
  This argument should not be set when run with ``pytest``.
382
382
  verbose: Enable verbose messages.
383
383
  pre_cmd: Commands to run before simulation begins.
@@ -656,12 +656,14 @@ def is_verilog_source(source: PathLike) -> bool:
656
656
 
657
657
 
658
658
  class Icarus(Runner):
659
- """Implementation of :class:`Runner` for Icarus.
659
+ """Implementation of :class:`Runner` for Icarus Verilog.
660
660
 
661
- * ``hdl_toplevel`` argument to :meth:`.build` is *required*.
662
- * ``waves=True`` *must* be given to :meth:`.build` if either ``waves`` or ``gui`` are to be used during :meth:`.test`.
663
- * ``timescale`` argument to :meth:`.build` must be given to support dumping the command file.
664
- * Does not support the ``pre_cmd`` argument to :meth:`.test`.
661
+ .. admonition:: Simulator-specific Usage
662
+
663
+ * ``hdl_toplevel`` argument to :meth:`.build` is *required*.
664
+ * ``waves=True`` *must* be given to :meth:`.build` if either ``waves`` or ``gui`` are to be used during :meth:`.test`.
665
+ * ``timescale`` argument to :meth:`.build` must be given to support dumping the command file.
666
+ * Does not support the ``pre_cmd`` argument to :meth:`.test`.
665
667
  """
666
668
 
667
669
  supported_gpi_interfaces = {"verilog": ["vpi"]}
@@ -695,7 +697,7 @@ class Icarus(Runner):
695
697
  f.write("+timescale+{}/{}\n".format(*self.timescale))
696
698
 
697
699
  def _create_iverilog_dump_file(self) -> None:
698
- dumpfile_path = Path(self.build_dir, f"{self.hdl_toplevel}.fst").as_posix()
700
+ dumpfile_path = _as_sv_literal(str(self.build_dir / f"{self.hdl_toplevel}.fst"))
699
701
  with open(self.iverilog_dump_file, "w") as f:
700
702
  f.write("module cocotb_iverilog_dump();\n")
701
703
  f.write("initial begin\n")
@@ -705,7 +707,7 @@ class Icarus(Runner):
705
707
  )
706
708
  f.write(" $dumpfile(dumpfile_path);\n")
707
709
  f.write(" end else begin\n")
708
- f.write(f' $dumpfile("{dumpfile_path}");\n')
710
+ f.write(f" $dumpfile({dumpfile_path});\n")
709
711
  f.write(" end\n")
710
712
  f.write(f" $dumpvars(0, {self.hdl_toplevel});\n")
711
713
  f.write("end\n")
@@ -723,30 +725,6 @@ class Icarus(Runner):
723
725
  def cmds_file(self) -> Path:
724
726
  return self.build_dir / "cmds.f"
725
727
 
726
- def _test_command(self) -> List[_Command]:
727
- plusargs = self.plusargs
728
- if self.waves or self.gui:
729
- plusargs += ["-fst"]
730
- else:
731
- # Disable waveform output
732
- plusargs += ["-none"]
733
-
734
- if self.pre_cmd is not None:
735
- raise ValueError("WARNING: pre_cmd is not implemented for Icarus Verilog.")
736
-
737
- return [
738
- [
739
- "vvp",
740
- "-M",
741
- str(cocotb_tools.config.libs_dir),
742
- "-m",
743
- cocotb_tools.config.lib_name("vpi", "icarus"),
744
- *self.test_args,
745
- str(self.sim_file),
746
- *plusargs,
747
- ]
748
- ]
749
-
750
728
  def _build_command(self) -> List[_Command]:
751
729
  assert self.hdl_toplevel is not None
752
730
 
@@ -801,11 +779,37 @@ class Icarus(Runner):
801
779
 
802
780
  return cmds
803
781
 
782
+ def _test_command(self) -> List[_Command]:
783
+ if self.pre_cmd is not None:
784
+ raise RuntimeError("pre_cmd is not implemented for Icarus Verilog.")
785
+
786
+ plusargs = self.plusargs
787
+ if self.waves or self.gui:
788
+ plusargs += ["-fst"]
789
+ else:
790
+ # Disable waveform output
791
+ plusargs += ["-none"]
792
+
793
+ return [
794
+ [
795
+ "vvp",
796
+ "-M",
797
+ str(cocotb_tools.config.libs_dir),
798
+ "-m",
799
+ cocotb_tools.config.lib_name("vpi", "icarus"),
800
+ *self.test_args,
801
+ str(self.sim_file),
802
+ *plusargs,
803
+ ]
804
+ ]
805
+
804
806
 
805
807
  class Questa(Runner):
806
- """Implementation of :class:`Runner` for Questa.
808
+ """Implementation of :class:`Runner` for Siemens Questa.
807
809
 
808
- * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
810
+ .. admonition:: Simulator-specific Usage
811
+
812
+ * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
809
813
  """
810
814
 
811
815
  supported_gpi_interfaces = {"verilog": ["vpi"], "vhdl": ["fli", "vhpi"]}
@@ -934,7 +938,9 @@ class Questa(Runner):
934
938
  class Ghdl(Runner):
935
939
  """Implementation of :class:`Runner` for GHDL.
936
940
 
937
- * Does not support the ``pre_cmd`` argument to :meth:`.test`.
941
+ .. admonition:: Simulator-specific Usage
942
+
943
+ * Does not support the ``pre_cmd`` argument to :meth:`.test`.
938
944
  """
939
945
 
940
946
  supported_gpi_interfaces = {"vhdl": ["vpi"]}
@@ -1057,8 +1063,10 @@ class Ghdl(Runner):
1057
1063
  class Nvc(Runner):
1058
1064
  """Implementation of :class:`Runner` for NVC.
1059
1065
 
1060
- * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1061
- * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
1066
+ .. admonition:: Simulator-specific Usage
1067
+
1068
+ * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1069
+ * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
1062
1070
  """
1063
1071
 
1064
1072
  supported_gpi_interfaces = {"vhdl": ["vhpi"]}
@@ -1154,11 +1162,13 @@ class Nvc(Runner):
1154
1162
 
1155
1163
 
1156
1164
  class Riviera(Runner):
1157
- """Implementation of :class:`Runner` for Riviera-PRO.
1165
+ """Implementation of :class:`Runner` for Aldec Riviera-PRO.
1166
+
1167
+ .. admonition:: Simulator-specific Usage
1158
1168
 
1159
- * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1160
- * Does not support the ``gui`` argument to :meth:`.test`.
1161
- * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
1169
+ * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1170
+ * Does not support the ``gui`` argument to :meth:`.test`.
1171
+ * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
1162
1172
  """
1163
1173
 
1164
1174
  supported_gpi_interfaces = {"verilog": ["vpi"], "vhdl": ["vhpi"]}
@@ -1313,8 +1323,10 @@ class Riviera(Runner):
1313
1323
  class Verilator(Runner):
1314
1324
  """Implementation of :class:`Runner` for Verilator.
1315
1325
 
1316
- * ``waves=True`` *must* be given to :meth:`.build` if either ``waves`` or ``gui`` are to be used during :meth:`.test`.
1317
- * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1326
+ .. admonition:: Simulator-specific Usage
1327
+
1328
+ * ``waves=True`` *must* be given to :meth:`.build` if either ``waves`` or ``gui`` are to be used during :meth:`.test`.
1329
+ * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1318
1330
  """
1319
1331
 
1320
1332
  supported_gpi_interfaces = {"verilog": ["vpi"]}
@@ -1365,7 +1377,7 @@ class Verilator(Runner):
1365
1377
 
1366
1378
  if self.hdl_toplevel is None:
1367
1379
  raise ValueError(
1368
- f"{type(self).__qualname__} requires the hdl_toplevel parameter to be specified"
1380
+ f"{type(self).__qualname__} requires the hdl_toplevel parameter to be specified."
1369
1381
  )
1370
1382
 
1371
1383
  # TODO: set "--debug" if self.verbose
@@ -1439,10 +1451,13 @@ class Verilator(Runner):
1439
1451
 
1440
1452
 
1441
1453
  class Xcelium(Runner):
1442
- """Implementation of :class:`Runner` for Xcelium.
1454
+ """Implementation of :class:`Runner` for Cadence Xcelium.
1455
+
1456
+ .. admonition:: Simulator-specific Usage
1443
1457
 
1444
- * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1445
- * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
1458
+ * Does not support the ``waves`` argument to :meth:`.build` (must be set in :meth:`.test` instead).
1459
+ * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1460
+ * Does not support the ``timescale`` argument to :meth:`.test`.
1446
1461
  """
1447
1462
 
1448
1463
  supported_gpi_interfaces = {"verilog": ["vpi"], "vhdl": ["vhpi"]}
@@ -1481,6 +1496,11 @@ class Xcelium(Runner):
1481
1496
  def _build_command(self) -> List[_Command]:
1482
1497
  self.env["CDS_AUTO_64BIT"] = "all"
1483
1498
 
1499
+ if self.waves:
1500
+ raise RuntimeError(
1501
+ "waves is not supported in the build step. Please set it in the test step."
1502
+ )
1503
+
1484
1504
  assert self.hdl_toplevel, "A HDL toplevel is required in all Xcelium compiles."
1485
1505
 
1486
1506
  verbosity_opts = []
@@ -1524,6 +1544,11 @@ class Xcelium(Runner):
1524
1544
  ]
1525
1545
  + vhpi_opts
1526
1546
  + [f"-work {self.hdl_library}"]
1547
+ + (
1548
+ ["-timescale", "{}/{}".format(*self.timescale)]
1549
+ if self.timescale is not None
1550
+ else []
1551
+ )
1527
1552
  + self.build_args
1528
1553
  + self._get_include_options(self.includes)
1529
1554
  + self._get_define_options(self.defines)
@@ -1543,6 +1568,11 @@ class Xcelium(Runner):
1543
1568
  if self.pre_cmd is not None:
1544
1569
  raise RuntimeError("pre_cmd is not implemented for Xcelium.")
1545
1570
 
1571
+ if self.timescale is not None:
1572
+ raise RuntimeError(
1573
+ "timescale is not supported in the test step. Please set it in the build step."
1574
+ )
1575
+
1546
1576
  self.env["CDS_AUTO_64BIT"] = "all"
1547
1577
 
1548
1578
  verbosity_opts = []
@@ -1612,11 +1642,13 @@ class Xcelium(Runner):
1612
1642
 
1613
1643
 
1614
1644
  class Vcs(Runner):
1615
- """Implementation of :class:`Runner` for VCS.
1645
+ """Implementation of :class:`Runner` for Synopsys VCS.
1646
+
1647
+ .. admonition:: Simulator-specific Usage
1616
1648
 
1617
- * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1618
- * Does not support VHDL.
1619
- * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
1649
+ * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1650
+ * Does not support VHDL.
1651
+ * Does not support the ``timescale`` argument to :meth:`.build` or :meth:`.test`.
1620
1652
  """
1621
1653
 
1622
1654
  supported_gpi_interfaces = {"verilog": ["vpi"]}
@@ -1700,9 +1732,11 @@ class Vcs(Runner):
1700
1732
 
1701
1733
 
1702
1734
  class Dsim(Runner):
1703
- """Implementation of :class:`Runner` for DSim.
1735
+ """Implementation of :class:`Runner` for Siemens DSim.
1704
1736
 
1705
- * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1737
+ .. admonition:: Simulator-specific Usage
1738
+
1739
+ * Does not support the ``pre_cmd`` argument to :meth:`.test`.
1706
1740
  """
1707
1741
 
1708
1742
  supported_gpi_interfaces = {"verilog": ["vpi"]}
@@ -1736,14 +1770,15 @@ class Dsim(Runner):
1736
1770
  return "file.vcd"
1737
1771
 
1738
1772
  def _test_command(self) -> List[_Command]:
1773
+ if self.pre_cmd is not None:
1774
+ raise RuntimeError("pre_cmd is not implemented for DSim.")
1775
+
1739
1776
  plusargs = self.plusargs
1740
1777
  if self.waves or self.gui:
1741
1778
  plusargs += [f"-waves {self._waves_file()}"]
1742
1779
 
1743
1780
  if self.timescale:
1744
1781
  plusargs += ["-timescale {}/{}".format(*self.timescale)]
1745
- if self.pre_cmd is not None:
1746
- raise ValueError("WARNING: pre_cmd is not implemented for DSim.")
1747
1782
 
1748
1783
  return [
1749
1784
  [
pygpi/entry.py CHANGED
@@ -1,7 +1,7 @@
1
1
  import importlib
2
+ import operator
2
3
  import os
3
- from functools import reduce
4
- from typing import Any, Callable, List, Tuple, cast
4
+ from typing import Callable, List, Tuple
5
5
 
6
6
 
7
7
  def load_entry(argv: List[str]) -> None:
@@ -12,8 +12,7 @@ def load_entry(argv: List[str]) -> None:
12
12
  ",".join(
13
13
  (
14
14
  "cocotb_tools._coverage:start_cocotb_library_coverage",
15
- "cocotb.logging:_init",
16
- "cocotb.logging:_setup_formatter",
15
+ "cocotb.logging:_configure",
17
16
  "cocotb._init:init_package_from_simulation",
18
17
  "cocotb._init:run_regression",
19
18
  )
@@ -37,7 +36,7 @@ def load_entry(argv: List[str]) -> None:
37
36
  # Expect failure to stop the loading of any additional entry points.
38
37
  for entry_module_str, entry_func_str in entry_points:
39
38
  entry_module = importlib.import_module(entry_module_str)
40
- entry_func: Callable[[List[str]], object] = reduce(
41
- getattr, entry_func_str.split("."), cast("Any", entry_module)
39
+ entry_func: Callable[[List[str]], object] = operator.attrgetter(entry_func_str)(
40
+ entry_module
42
41
  )
43
42
  entry_func(argv)