cocotb 2.0.0b1__cp313-cp313-win32.whl → 2.0.0rc2__cp313-cp313-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.
- cocotb/_ANSI.py +47 -54
- cocotb/__init__.py +12 -2
- cocotb/_base_triggers.py +11 -9
- cocotb/_bridge.py +8 -9
- cocotb/_extended_awaitables.py +1 -1
- cocotb/_gpi_triggers.py +4 -1
- cocotb/_init.py +17 -11
- cocotb/_py_compat.py +24 -10
- cocotb/_scheduler.py +25 -31
- cocotb/_test.py +6 -3
- cocotb/_test_factory.py +4 -1
- cocotb/_utils.py +1 -23
- cocotb/_version.py +1 -1
- cocotb/clock.py +98 -16
- cocotb/debug.py +24 -0
- cocotb/handle.py +62 -32
- cocotb/libs/cocotb.dll +0 -0
- cocotb/libs/cocotb.exp +0 -0
- cocotb/libs/cocotb.lib +0 -0
- cocotb/libs/cocotbfli_modelsim.dll +0 -0
- cocotb/libs/cocotbfli_modelsim.exp +0 -0
- cocotb/libs/cocotbfli_modelsim.lib +0 -0
- cocotb/libs/cocotbutils.dll +0 -0
- cocotb/libs/cocotbutils.exp +0 -0
- cocotb/libs/cocotbutils.lib +0 -0
- cocotb/libs/cocotbvhpi_aldec.dll +0 -0
- cocotb/libs/cocotbvhpi_aldec.exp +0 -0
- cocotb/libs/cocotbvhpi_aldec.lib +0 -0
- cocotb/libs/cocotbvhpi_modelsim.dll +0 -0
- cocotb/libs/cocotbvhpi_modelsim.exp +0 -0
- cocotb/libs/cocotbvhpi_modelsim.lib +0 -0
- cocotb/libs/cocotbvpi_aldec.dll +0 -0
- cocotb/libs/cocotbvpi_aldec.exp +0 -0
- cocotb/libs/cocotbvpi_aldec.lib +0 -0
- cocotb/libs/cocotbvpi_ghdl.dll +0 -0
- cocotb/libs/cocotbvpi_ghdl.exp +0 -0
- cocotb/libs/cocotbvpi_ghdl.lib +0 -0
- cocotb/libs/cocotbvpi_icarus.exp +0 -0
- cocotb/libs/cocotbvpi_icarus.lib +0 -0
- cocotb/libs/cocotbvpi_icarus.vpl +0 -0
- cocotb/libs/cocotbvpi_modelsim.dll +0 -0
- cocotb/libs/cocotbvpi_modelsim.exp +0 -0
- cocotb/libs/cocotbvpi_modelsim.lib +0 -0
- cocotb/libs/embed.dll +0 -0
- cocotb/libs/embed.exp +0 -0
- cocotb/libs/embed.lib +0 -0
- cocotb/libs/gpi.dll +0 -0
- cocotb/libs/gpi.exp +0 -0
- cocotb/libs/gpi.lib +0 -0
- cocotb/libs/gpilog.dll +0 -0
- cocotb/libs/gpilog.exp +0 -0
- cocotb/libs/gpilog.lib +0 -0
- cocotb/libs/pygpilog.dll +0 -0
- cocotb/libs/pygpilog.exp +0 -0
- cocotb/libs/pygpilog.lib +0 -0
- cocotb/logging.py +243 -117
- cocotb/regression.py +43 -35
- cocotb/share/def/aldec.exp +0 -0
- cocotb/share/def/aldec.lib +0 -0
- cocotb/share/def/ghdl.exp +0 -0
- cocotb/share/def/ghdl.lib +0 -0
- cocotb/share/def/icarus.exp +0 -0
- cocotb/share/def/icarus.lib +0 -0
- cocotb/share/def/modelsim.exp +0 -0
- cocotb/share/def/modelsim.lib +0 -0
- cocotb/share/include/cocotb_utils.h +3 -3
- cocotb/share/include/embed.h +2 -2
- cocotb/share/include/gpi.h +258 -109
- cocotb/share/include/py_gpi_logging.h +3 -3
- cocotb/share/lib/verilator/verilator.cpp +23 -15
- cocotb/simtime.py +230 -0
- cocotb/simulator.cp313-win32.exp +0 -0
- cocotb/simulator.cp313-win32.lib +0 -0
- cocotb/simulator.cp313-win32.pyd +0 -0
- cocotb/task.py +54 -11
- cocotb/types/__init__.py +4 -1
- cocotb/types/_array.py +33 -2
- cocotb/types/_indexing.py +17 -0
- cocotb/types/_logic.py +96 -59
- cocotb/types/_logic_array.py +56 -22
- cocotb/types/_range.py +12 -5
- cocotb/utils.py +9 -129
- {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/METADATA +1 -1
- cocotb-2.0.0rc2.dist-info/RECORD +146 -0
- {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/licenses/LICENSE +1 -0
- cocotb_tools/config.py +5 -5
- cocotb_tools/makefiles/Makefile.inc +3 -9
- cocotb_tools/makefiles/Makefile.sim +9 -1
- cocotb_tools/makefiles/simulators/Makefile.vcs +1 -1
- cocotb_tools/runner.py +94 -59
- pygpi/entry.py +5 -6
- cocotb-2.0.0b1.dist-info/RECORD +0 -143
- {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/WHEEL +0 -0
- {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/entry_points.txt +0 -0
- {cocotb-2.0.0b1.dist-info → cocotb-2.0.0rc2.dist-info}/top_level.txt +0 -0
|
@@ -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.cp313-win32.exp,sha256=8Mp90IzrhKqsws-Cyq8P3FqMfxu8ZX7CgZNrQ2xwtac,749
|
|
32
|
+
cocotb/simulator.cp313-win32.lib,sha256=BWWlE3HpPY6dKTbzUvHER5GPK36o5IpvL8fha4u0ph4,1992
|
|
33
|
+
cocotb/simulator.cp313-win32.pyd,sha256=8ijZ2clER_HaelicGiL30l5UOIcgDoKffXhTPRVl_Yg,33792
|
|
34
|
+
cocotb/simulator.cp313-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=nDXFoMdgQfc-Bvgbg2LgpvHUjGtu_UBT1PAoM-1zus4,15360
|
|
40
|
+
cocotb/libs/cocotb.exp,sha256=dRV-dWfBx11G7OOKa7BX5QMNCy6I_aELaRqo4v2mMW4,1113
|
|
41
|
+
cocotb/libs/cocotb.lib,sha256=WZEmuOm4okiJ164TUbyrsv8ZLC9Zjk_tDSGd1mPWqYw,2372
|
|
42
|
+
cocotb/libs/cocotbfli_modelsim.dll,sha256=169HOAjRGeRcrMmzjyKirs0MGiqOBleFMUSlROs7lDU,82432
|
|
43
|
+
cocotb/libs/cocotbfli_modelsim.exp,sha256=lHUdwLZD-nypFiNgs4Qp2Q1YUADUBN4l62jDeriCWYs,875
|
|
44
|
+
cocotb/libs/cocotbfli_modelsim.lib,sha256=nZaczewE_6R8DIpWmH-xGjZU7RjeyfhrWqDQc22bxls,2176
|
|
45
|
+
cocotb/libs/cocotbutils.dll,sha256=1fO4o0-7mHwlkGN3y2BOhTbDEobeKILShHja_NspWuI,9728
|
|
46
|
+
cocotb/libs/cocotbutils.exp,sha256=P1FZ0yo_VXdsz6MgOJdU5uLm0Ek_e5yZg_0XFyreHPg,976
|
|
47
|
+
cocotb/libs/cocotbutils.lib,sha256=ffsEqjx9uAOaE50t8bML3hEAQhMtIucxpyxyl_RoTmU,2154
|
|
48
|
+
cocotb/libs/cocotbvhpi_aldec.dll,sha256=Tg_qIB2R-LX7UMGWM0n7o9cS9-05gTIfgLhGztHfbvc,80896
|
|
49
|
+
cocotb/libs/cocotbvhpi_aldec.exp,sha256=jcZtNMjgdOVdUupIWUuC6qyF_OA_gWNELiC81Divkt8,1075
|
|
50
|
+
cocotb/libs/cocotbvhpi_aldec.lib,sha256=OLJxZBwL8dRmZKdhbIU2I3lbNGX-jNX2yFplRTkSKy0,2448
|
|
51
|
+
cocotb/libs/cocotbvhpi_modelsim.dll,sha256=dLSmgxRk67WCSXKFlqKSjLDrZ9oGJXbOS0K7jSD-asw,80896
|
|
52
|
+
cocotb/libs/cocotbvhpi_modelsim.exp,sha256=pKtrW0w66HELkVUcU1IsrhLfyZ6oOe09c6QKFVS3KDY,1082
|
|
53
|
+
cocotb/libs/cocotbvhpi_modelsim.lib,sha256=XLbtTImWjHbnC8PM5X_U0K_DeNCR17uw_CQyWV7tfmc,2492
|
|
54
|
+
cocotb/libs/cocotbvpi_aldec.dll,sha256=VwtTi3lnBsDKCSvnonAMd1sa-kUoF9tjoRsLXiIRQws,72192
|
|
55
|
+
cocotb/libs/cocotbvpi_aldec.exp,sha256=RYLL1-FoXwBb4MnBw0anL_cq9K1ym7qqwuKTsiy-zS0,1070
|
|
56
|
+
cocotb/libs/cocotbvpi_aldec.lib,sha256=fG2PzXPRR_QK0pxqALh1LHDWEoWkO1nTlLXT3Na9QQE,2428
|
|
57
|
+
cocotb/libs/cocotbvpi_ghdl.dll,sha256=cR1gEQ81TRpFeyyv8sU4qa9mvXpKkE99mqlcVfdQmic,72192
|
|
58
|
+
cocotb/libs/cocotbvpi_ghdl.exp,sha256=aG71rmW9VNs1HHfAhXfK2Cf6nCuj9R6M6NCdwBixUaE,1069
|
|
59
|
+
cocotb/libs/cocotbvpi_ghdl.lib,sha256=viFoIURkFec0F8Ne-zc7SBzGqEQbwU_kcJ2man9Sdek,2412
|
|
60
|
+
cocotb/libs/cocotbvpi_icarus.exp,sha256=Fp-HRux8LQ4GBTPuDEPVIzUWQBF69B4J4UH39udDSsw,1073
|
|
61
|
+
cocotb/libs/cocotbvpi_icarus.lib,sha256=UY5GFXxu84Vmn3MpiKRt-ZsBKxkv5_H-u_s6HoS6aWo,2442
|
|
62
|
+
cocotb/libs/cocotbvpi_icarus.vpl,sha256=UOHwDyPVMiqM60lA7fh8J4A_qJhec_imqGa1Cz3HbqA,71680
|
|
63
|
+
cocotb/libs/cocotbvpi_modelsim.dll,sha256=eGkG9VXYrzcEn73JqEg96jVvdHuCc59DxIa_QABj2_Y,72192
|
|
64
|
+
cocotb/libs/cocotbvpi_modelsim.exp,sha256=2bpqghzHJ8ZbD_s97U4kU8vOxs4B9l-xZOn6X0tSN6U,1077
|
|
65
|
+
cocotb/libs/cocotbvpi_modelsim.lib,sha256=MzgjtCw0_PlcnnMxA7LxPUzRYe0cXShq3THcoAoxNNE,2472
|
|
66
|
+
cocotb/libs/embed.dll,sha256=dA7mepuEjyBmYiMWz4awdX0MfViwew4I9-KtBDD64hs,10752
|
|
67
|
+
cocotb/libs/embed.exp,sha256=_5TgiGfT5rplH-beQqx7U5Er8xlrLR5bFFqa82heyZo,1100
|
|
68
|
+
cocotb/libs/embed.lib,sha256=tksz2vxjfYtYXEgs_4zQCm9DtnlUc2cPh5uDv2VQDRM,2336
|
|
69
|
+
cocotb/libs/gpi.dll,sha256=1CTqPP-xY9xXiC-v8G3mIHl0zsLwAqr2nCW7h1NvqHc,50688
|
|
70
|
+
cocotb/libs/gpi.exp,sha256=EH-sLYzKCvjEmJGY8h_8cB7y0gTgyhmGddpY8taeJW8,18386
|
|
71
|
+
cocotb/libs/gpi.lib,sha256=q5c6eEF8Nt2dKlwcLqMYNyoE-EkEaMb8DRZfyxNFzrg,30238
|
|
72
|
+
cocotb/libs/gpilog.dll,sha256=0I03jmH0LDtJulmA9zkt68oi0Fc-iJJ1_Vbp038uFoM,15872
|
|
73
|
+
cocotb/libs/gpilog.exp,sha256=vHm0O5cIu3GvmAcvNaENHoFffVF8VS5yEzmMLYKmkTY,2225
|
|
74
|
+
cocotb/libs/gpilog.lib,sha256=CknuQ4dRlZIKMSEf8ouBnNkOWTVxW1Ib08r1UMj1hBQ,4206
|
|
75
|
+
cocotb/libs/pygpilog.dll,sha256=hvJAnfM5eX15BFogxyrtCUQ1q-Q_5s0gS_G9i9m-IuE,17920
|
|
76
|
+
cocotb/libs/pygpilog.exp,sha256=WejEicUWQOzfcaUTPwO-Yugeym9-zvxNaP1UT7vZ4uw,999
|
|
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=So5rgJy5jEoe6RyRn8EQoumkXPXFccvwWdWPS1ekQOU,7810
|
|
82
|
+
cocotb/share/def/aldec.lib,sha256=auCYvZAWdMqq5Ih3y5adzWz51ebiFlgpThLjHKy_8ys,13212
|
|
83
|
+
cocotb/share/def/ghdl.def,sha256=ETQh5VI72dWSJi_ig5m163GfLrxScYUamt5BjHjoKsY,705
|
|
84
|
+
cocotb/share/def/ghdl.exp,sha256=4rTPWaAUQqK7bxfzN38Mhdf84YpM-dySPxYF_dmo6S0,5678
|
|
85
|
+
cocotb/share/def/ghdl.lib,sha256=eH1xwfaBSbzMXkqZG9Ub_IhGZx4ifYOoO3XpEDAsmJQ,9780
|
|
86
|
+
cocotb/share/def/icarus.def,sha256=VRqkgUyzR2sa916Ra56cZVIb4kzbqDlJVWIOc3389qY,698
|
|
87
|
+
cocotb/share/def/icarus.exp,sha256=JT2cbYeiDJEgeNwYom3kr1t1ZjtZnhqx5HD842hSwt0,5672
|
|
88
|
+
cocotb/share/def/icarus.lib,sha256=QyK1Wy5S8Bp6sThgMbGcYMp7nHcp8aQM6lMaJL_3_cM,9412
|
|
89
|
+
cocotb/share/def/modelsim.def,sha256=HncvdEzVllbzFR21Nqcbsr-oXMWIfx3YsVi-RK4sbpk,2402
|
|
90
|
+
cocotb/share/def/modelsim.exp,sha256=GX-UUawGaK37x9X9--RPd72GSK-8Ys8JRvjfIqvSp5w,16750
|
|
91
|
+
cocotb/share/def/modelsim.lib,sha256=jbRz6FSEIXzQ6Y8U0k_TRS-XZYCN2240FVnduA6ybew,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=0ABLuJ37exXk5N_efmYNs2NU9NK1K2Qlod_6bYkofEA,97
|
|
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,,
|
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/
|
|
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()}/
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
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:
|
|
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
|
|
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
|
|
374
|
-
gui: Run with simulator GUI. Overridden by the
|
|
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
|
-
|
|
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
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1061
|
-
|
|
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
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
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
|
-
|
|
1317
|
-
|
|
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
|
-
|
|
1445
|
-
|
|
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
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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] =
|
|
41
|
-
|
|
39
|
+
entry_func: Callable[[List[str]], object] = operator.attrgetter(entry_func_str)(
|
|
40
|
+
entry_module
|
|
42
41
|
)
|
|
43
42
|
entry_func(argv)
|