cocotb: Python-based chip (RTL) verification
This report summarizes scanner evidence for cocotb/cocotb, a Python project with 2,538 GitHub stars. SynthScan examined 69,992 lines of code across 320 source files, recording 945 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 17.3 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 617 finding(s).
Are imports declared and package/API names verified? 262 finding(s).
Are wrappers, guards, and repeated structures necessary? 431 finding(s).
Which changes need focused human review? 945 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 945 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | noxfile.py | 107 | def build_cocotb_for_dev_test(session: nox.Session) -> None: | CODE |
| LOW | noxfile.py | 452 | def release_install_from_sdist(session: nox.Session) -> None: | CODE |
| LOW | noxfile.py | 498 | def release_install_from_wheel(session: nox.Session) -> None: | CODE |
| LOW | tests/pytest_plugin/test_fixture.py | 33 | async def x_async_generator_fixture() -> AsyncGenerator[int, None]: | CODE |
| LOW | tests/pytest_plugin/test_fixture.py | 48 | async def test_fixture_asynchronous_value(dut, x_async: int) -> None: | CODE |
| LOW | tests/pytest_plugin/test_fixture.py | 53 | async def test_fixture_asynchronous_generator(dut, x_async_generator: int) -> None: | CODE |
| LOW | tests/pytest_plugin/test_timeout.py | 16 | async def test_timeout_with_positional_arguments(dut) -> None: | CODE |
| LOW | tests/pytest_plugin/test_timeout.py | 24 | async def test_timeout_with_named_arguments(dut) -> None: | CODE |
| LOW⚡ | tests/pytest_plugin/test_cocotb.py | 94 | async def test_xfail_condition_false(dut) -> None: | CODE |
| LOW⚡ | tests/pytest_plugin/test_cocotb.py | 99 | async def test_xfail_condition_true(dut) -> None: | CODE |
| LOW⚡ | tests/pytest_plugin/test_cocotb.py | 105 | async def test_xfail_reason_message(dut) -> None: | CODE |
| LOW | tests/pytest_plugin/test_sample_module.py | 81 | def test_sample_module_parametrize(sample_module: HDL, int_param: int) -> None: | CODE |
| LOW | tests/pytest/test_ipython_support.py | 65 | def test_ipython_support_interactive(tmp_path: Path) -> None: | CODE |
| LOW | tests/pytest/test_logging_with_envs.py | 23 | def _restore_root_handler_filters() -> Iterator[None]: | CODE |
| LOW | tests/pytest/test_logging_with_envs.py | 80 | def test_logging_boolean_envs( | CODE |
| LOW | tests/pytest/test_logging_with_envs.py | 113 | def test_default_config_no_simulator(caplog: LogCaptureFixture) -> None: | CODE |
| LOW | tests/pytest/test_xunit_reporter.py | 279 | def test_file_outside_workspace(tmp_path: Path) -> None: | CODE |
| LOW | tests/pytest/test_preview.py | 109 | def test_envvar_empty_feature(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_preview.py | 118 | def test_envvar_unknown_feature(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_array.py | 13 | def test_value_only_construction(): | CODE |
| LOW | tests/pytest/test_array.py | 30 | def test_range_int_construction(): | CODE |
| LOW | tests/pytest/test_array.py | 137 | def test_slicing_infered_start_stop(): | CODE |
| LOW⚡ | tests/pytest/test_array.py | 151 | def test_slice_direction_mismatch(): | CODE |
| LOW⚡ | tests/pytest/test_array.py | 159 | def test_set_slice_wrong_length(): | CODE |
| LOW⚡ | tests/pytest/test_array.py | 165 | def test_slice_correct_infered(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 13 | def test_logic_array_str_construction(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 31 | def test_logic_array_iterable_construction(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 53 | def test_logic_array_int_construction(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 71 | def test_logic_array_copy_construction(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 87 | def test_logic_array_bad_construction(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 98 | def test_logic_array_unsigned_conversion(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 121 | def test_logic_array_signed_conversion(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 148 | def test_logic_array_bytes_conversion(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 171 | def test_logic_array_properties(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 176 | def test_logic_array_properties_deprecated(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 278 | def test_logic_array_literal_casts(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 283 | def test_logic_array_index_casts(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 391 | def test_slicing_infered_start_stop(): | CODE |
| LOW⚡ | tests/pytest/test_logic_array.py | 405 | def test_slice_direction_mismatch(): | CODE |
| LOW⚡ | tests/pytest/test_logic_array.py | 413 | def test_set_slice_wrong_length(): | CODE |
| LOW⚡ | tests/pytest/test_logic_array.py | 419 | def test_slice_correct_infered(): | CODE |
| LOW | tests/pytest/test_env.py | 45 | def test_env_exists_undefined(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 224 | def test_env_cocotb_testcase_deprecated(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 235 | def test_env_cocotb_test_modules_empty(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 249 | def test_env_cocotb_test_modules_undefined(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 263 | def test_env_cocotb_testcase_with_cocotb_test_filter(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 277 | def test_env_cocotb_random_seed(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 288 | def test_env_random_seed_deprecated(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 300 | def test_plusargs_ntb_random_seed_deprecated(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 313 | def test_plusargs_seed_deprecated(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 326 | def test_env_cocotb_enable_profiling(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 338 | def test_env_cocotb_resolve_x_weak(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 352 | def test_env_cocotb_resolve_x_value_error(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 363 | def test_env_cocotb_resolve_x_invalid(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/pytest/test_env.py | 377 | def test_env_cocotb_resolve_x_logic_conversion(resolver: str, tmp_path: Path) -> None: | CODE |
| LOW | tests/pytest/test_gpi.py | 16 | def test_gpi_impl_missing_entry_point() -> None: | CODE |
| LOW | tests/pytest/test_runner.py | 55 | def test_sv_literal_conversion(): | CODE |
| LOW | tests/pytest/test_runner.py | 79 | def test_vhdl_literal_conversion(): | CODE |
| LOW | tests/pytest/test_bootstrap.py | 33 | def test_bootstrap_entry_point_failure(entry_point: str, expected_message: str) -> None: | CODE |
| LOW | tests/pytest/test_parameterize.py | 44 | def test_parametrize_bad_args(): | CODE |
| 296 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 5 | CODE | |
| LOW | noxfile.py | 4 | CODE | |
| LOW | tests/pytest_plugin/conftest.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_fixture.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_timeout.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_cocotb.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_session.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_xfail.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_parametrize.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_sample_module_1.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_caplog.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_sample_module_2.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_cocotb_top.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_end_test.py | 7 | CODE | |
| LOW | tests/pytest_plugin/test_sample_module.py | 7 | CODE | |
| LOW | tests/pytest/test_ipython_support.py | 4 | CODE | |
| LOW | tests/pytest/test_logging_with_envs.py | 7 | CODE | |
| LOW | tests/pytest/test_vhdl_libraries_multiple.py | 4 | CODE | |
| LOW | tests/pytest/test_plusargs.py | 4 | CODE | |
| LOW | tests/pytest/test_xunit_reporter.py | 7 | CODE | |
| LOW | tests/pytest/test_timescale.py | 1 | CODE | |
| LOW | tests/pytest/test_preview.py | 4 | CODE | |
| LOW | tests/pytest/test_cocotb.py | 4 | CODE | |
| LOW | tests/pytest/test_waves.py | 1 | CODE | |
| LOW | tests/pytest/test_array.py | 4 | CODE | |
| LOW | tests/pytest/test_logic_array.py | 4 | CODE | |
| LOW | tests/pytest/test_env.py | 8 | CODE | |
| LOW | tests/pytest/test_env.py | 30 | CODE | |
| LOW | tests/pytest/test_gpi.py | 7 | CODE | |
| LOW | tests/pytest/test_runner.py | 4 | CODE | |
| LOW | tests/pytest/test_logs.py | 4 | CODE | |
| LOW | tests/pytest/test_lib_metadata.py | 4 | CODE | |
| LOW | tests/pytest/test_bootstrap.py | 7 | CODE | |
| LOW | tests/pytest/test_parameterize.py | 4 | CODE | |
| LOW | tests/pytest/test_range.py | 4 | CODE | |
| LOW | tests/pytest/test_parallel_cocotb.py | 4 | CODE | |
| LOW | tests/pytest/test_logic.py | 4 | CODE | |
| LOW | tests/pytest/test_no_previews.py | 4 | CODE | |
| LOW | …ses/test_verilator_timing_c/test_verilator_timing_c.py | 4 | CODE | |
| LOW | …test_cases/test_iteration_verilog/test_iteration_es.py | 5 | CODE | |
| LOW | …ses/test_verilator_timing_d/test_verilator_timing_d.py | 4 | CODE | |
| LOW | …_cases/test_indexing_warning/indexing_warning_tests.py | 4 | CODE | |
| LOW | …t_cases/test_indexing_warning/test_indexing_warning.py | 4 | CODE | |
| LOW | tests/test_cases/test_select_testcase_error/x_tests.py | 4 | CODE | |
| LOW | tests/test_cases/test_skip/test_skip.py | 4 | CODE | |
| LOW | tests/test_cases/test_exit_error/test_exit.py | 1 | CODE | |
| LOW | tests/test_cases/test_plusargs/plusargs.py | 11 | CODE | |
| LOW | tests/test_cases/test_deadlock/test_deadlock.py | 5 | CODE | |
| LOW | tests/test_cases/test_array/test_array.py | 5 | CODE | |
| LOW | …ses/test_verilator_timing_b/test_verilator_timing_b.py | 4 | CODE | |
| LOW | …_skipped_explicitly_run/test_skipped_explicitly_run.py | 4 | CODE | |
| LOW | tests/test_cases/test_vhdl_integer/test_vhdl_integer.py | 4 | CODE | |
| LOW | tests/test_cases/test_max_failures/test_max_failures.py | 4 | CODE | |
| LOW | tests/test_cases/test_select_testcase/y_tests.py | 4 | CODE | |
| LOW | tests/test_cases/test_select_testcase/x_tests.py | 4 | CODE | |
| LOW | tests/test_cases/test_select_testcase/y_tests_again.py | 4 | CODE | |
| LOW | …incident_triggers/test_first_on_coincident_triggers.py | 4 | CODE | |
| LOW | tests/test_cases/test_null_ranges/test_null_ranges.py | 4 | CODE | |
| LOW | tests/test_cases/test_iteration_vhdl/test_iteration.py | 5 | CODE | |
| LOW | …t_cases/test_forked_exception/test_forked_exception.py | 11 | CODE | |
| 202 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 221 | # - CPython on Linux x86_64 with glibc | COMMENT |
| LOW | noxfile.py | 381 | ) | COMMENT |
| LOW | noxfile.py | 841 | ) | COMMENT |
| LOW | tests/test_cases/test_discovery/test_discovery.py | 521 | COMMENT | |
| LOW | docs/source/conf.py | 161 | # non-false value, then it is used: | COMMENT |
| LOW | docs/source/conf.py | 181 | # add_function_parentheses = True | COMMENT |
| LOW | docs/source/conf.py | 221 | }, | COMMENT |
| LOW | docs/source/conf.py | 241 | # html_theme_path = [] | COMMENT |
| LOW | docs/source/conf.py | 261 | html_js_files = ["cocotb.js"] | COMMENT |
| LOW | docs/source/conf.py | 281 | # If false, no index is generated. | COMMENT |
| LOW | docs/source/conf.py | 301 | # This is the file name suffix for HTML files (e.g. ".xhtml"). | COMMENT |
| LOW | docs/source/conf.py | 321 | latex_documents = [ | COMMENT |
| LOW | docs/source/conf.py | 341 | COMMENT | |
| LOW | docs/source/_static/cocotb.css | 401 | // dl.field-list.simple ~ *:not(.versionadded):not(.versionchanged):not(.deprecated):not(.versionremoved) { | COMMENT |
| LOW | .github/workflows/backport.yml | 1 | # Copyright cocotb contributors | COMMENT |
| LOW | .github/workflows/ecosystem-compat.yml | 1 | # Copyright cocotb contributors | COMMENT |
| LOW | .github/workflows/release-3-backport-notes.yml | 1 | # Copyright cocotb contributors | COMMENT |
| LOW | .github/workflows/release-1-prepare.yml | 1 | # Copyright cocotb contributors | COMMENT |
| LOW | .github/workflows/release-1-prepare.yml | 21 | # Always pass the *final* version here, even when the plan is to tag one or | COMMENT |
| LOW | .github/workflows/release-2-tag.yml | 1 | # Copyright cocotb contributors | COMMENT |
| LOW | src/cocotb_tools/_vendor/__init__.py | 1 | # Copyright cocotb contributors | COMMENT |
| LOW | src/cocotb_tools/_vendor/distutils_version.py | 1 | # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, | COMMENT |
| LOW | src/cocotb_tools/_vendor/distutils_version.py | 81 | COMMENT | |
| LOW | src/cocotb_tools/_vendor/distutils_version.py | 201 | assert False, "never get here" | COMMENT |
| LOW | src/cocotb_tools/_vendor/distutils_version.py | 221 | # However, people insist on putting letters into their version numbers; | COMMENT |
| LOW | src/cocotb_tools/_vendor/distutils_version.py | 241 | # Two possible solutions come to mind. The first is to tie the | COMMENT |
| LOW | src/cocotb_tools/_pytest/_controller.py | 61 | """ | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_compatibility.h | 21 | #if VPI_COMPATIBILITY_VERSION_1800v2017 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_compatibility.h | 41 | #define vpi_put_value vpi_put_value_1364v1995 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_compatibility.h | 61 | #define vpi_put_value vpi_put_value_1364v2001 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_compatibility.h | 81 | #define vpi_put_value vpi_put_value_1364v2005 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_compatibility.h | 101 | #define vpi_put_value vpi_put_value_1800v2005 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_compatibility.h | 121 | #define vpi_put_value vpi_put_value_1800v2009 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_compatibility.h | 141 | #define vpi_put_value vpi_put_value_1800v2012 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 21 | * - properties | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 41 | #define vpiModport 606 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 61 | #define vpiClassObj 621 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 81 | #define vpiUnionTypespec 639 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 101 | #define vpiThread 647 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 121 | #define vpiSequenceDecl 661 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 141 | #define vpiForeachStmt 675 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 161 | #define vpiStructNet 683 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 181 | #define vpiIndexTypespec 702 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 201 | COMMENT | |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 241 | #define vpiExternAcc 2 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 261 | #define vpiModportPort 2 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 281 | COMMENT | |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 301 | #define vpiMethod 645 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 321 | #define vpiMode1364v2001 2 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 341 | #define vpiDPIContext 666 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 361 | #define vpiUntilOp 92 /* until operator */ | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 381 | #define vpiIffOp 68 /* iff operator */ | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 441 | #define vpiAssertCoverage 760 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 461 | #define vpiFsmStates 775 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 481 | #define cbAssertionUnlock 662 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 501 | #define cbAssertionSysReset 619 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/sv_vpi_user.h | 521 | #define vpiAssertionSysOn 627 | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_user.h | 61 | #ifndef PLI_DLLISPEC | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_user.h | 81 | #ifndef PLI_EXTERN | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_user.h | 101 | COMMENT | |
| 98 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/cocotb_tools/runner.py | 501 | Run the tests. Args: test_module: Name(s) of the Python module(s) containing the tests to run. | STRING |
| HIGH | src/cocotb_tools/sim_versions.py | 132 | Parse the output of ``verilator --version``. Example: >>> cmdline = "Verilator 5.041 devel rev v5.0 | STRING |
| HIGH | src/cocotb_tools/_env.py | 47 | Convert value of environment variable to Python boolean type. Function is case-insensitive. Args: name | STRING |
| HIGH | src/cocotb_tools/_pytest/mark.py | 81 | Mark coroutine function with simulation time duration before the test is forced to fail. Example usage: .. cod | STRING |
| HIGH | src/cocotb_tools/_pytest/hdl.py | 337 | Test HDL design. Args: test_module: Name(s) of the Python module(s) containing the | STRING |
| HIGH | src/cocotb/_concurrent_waiters.py | 70 | Await on all given *awaitables* concurrently and block until the *return_when* condition is met. Every :class:`~col | STRING |
| HIGH | src/cocotb/_concurrent_waiters.py | 209 | Await on all given *awaitables* concurrently and return the index and result of the first to complete. After the fi | STRING |
| HIGH | src/cocotb/handle.py | 367 | Translate a discovered child object name into a key. Args: name: The GPI name of the child object. | STRING |
| HIGH | src/cocotb/handle.py | 485 | Query the simulator for an object with the specified *name*. If *extended* is ``True``, run the query only for | STRING |
| HIGH | src/cocotb/handle.py | 1897 | Factory function to create the correct type of `SimHandle` object. Args: handle: The GPI handle to the simu | STRING |
| HIGH | src/cocotb/clock.py | 275 | Start driving the clock signal. You can later stop the clock by calling :meth:`stop`. Args: | STRING |
| HIGH | src/cocotb/_extended_awaitables.py | 302 | Wait on any awaitable, throw an exception if it waits longer than the given time. When a :term:`python:coroutine` i | STRING |
| HIGH | src/cocotb/_test_manager.py | 226 | Schedule a :term:`coroutine` to be run concurrently in a :class:`~cocotb.task.Task`. Note that this is not an | STRING |
| HIGH | src/cocotb/_bridge.py | 37 | Converts a coroutine function into a blocking function. This allows a :term:`coroutine function` that awaits cocotb | STRING |
| HIGH | src/cocotb/utils.py | 36 | Calculate simulation time in the specified *unit* from the *steps* based on the simulator precision. Args: | STRING |
| HIGH | src/cocotb/utils.py | 72 | Calculates the number of simulation time steps for a given amount of *time*. When *round_mode* is ``"error"``, a :e | STRING |
| HIGH | src/cocotb/simtime.py | 127 | Retrieve the simulation time from the simulator. Args: unit: String specifying the unit of the result | STRING |
| HIGH | src/cocotb/simtime.py | 227 | Retrieve the ``log10()`` of the scale factor for a given time unit. Args: unit: String specifying the unit | STRING |
| HIGH | src/cocotb/types/_logic_array.py | 364 | Construct a :class:`!LogicArray` from an :class:`int` with unsigned representation. The :class:`int` is treated | STRING |
| HIGH | src/cocotb/types/_logic_array.py | 442 | Construct a :class:`!LogicArray` from an :class:`int` with two's complement representation. The :class:`int` is | STRING |
| HIGH | src/cocotb/types/_logic_array.py | 523 | Construct a :class:`!LogicArray` from :class:`bytes`. The :class:`bytes` is first converted to an unsigned inte | STRING |
| HIGH | src/cocotb/types/_logic_array.py | 980 | Resolves non-0/1 values to 0/1. The possible values of the *resolver* argument are: * ``"weak"``: | STRING |
| HIGH | src/cocotb/types/_logic.py | 271 | Resolve non-``0``/``1`` values to ``0``/``1``. The possible values of the *resolver* argument are: * ` | STRING |
| HIGH | src/cocotb/types/_abstract_array.py | 95 | Find first occurrence of value. Args: value: Value to search for. start: Index to start | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …incident_triggers/test_first_on_coincident_triggers.py | 30 | except AssertionError: | CODE |
| HIGH | tests/test_cases/test_cocotb/test_task_manager.py | 892 | except CancelledError: | CODE |
| HIGH | tests/test_cases/test_cocotb/test_task_manager.py | 906 | except CancelledError: | CODE |
| HIGH | tests/test_cases/test_cocotb/test_task_manager.py | 817 | except CancelledError: | CODE |
| HIGH | tests/test_cases/test_cocotb/test_task_manager.py | 867 | except CancelledError: | CODE |
| HIGH | tests/test_cases/test_cocotb/test_task_manager.py | 1363 | except CancelledError: | CODE |
| HIGH | tests/test_cases/test_cocotb/test_task_manager.py | 1411 | except CancelledError: | CODE |
| HIGH | tests/test_cases/test_cocotb/test_task_manager.py | 1493 | except CancelledError: | CODE |
| HIGH | tests/test_cases/test_cocotb/test_async_coroutines.py | 36 | except MyException: | CODE |
| HIGH | …t_cases/test_cocotb/test_synchronization_primitives.py | 69 | except RuntimeError: | CODE |
| HIGH | src/cocotb_tools/combine_results.py | 137 | except ValueError: | CODE |
| HIGH | src/cocotb_tools/_vendor/distutils_version.py | 318 | except ValueError: | CODE |
| HIGH | src/cocotb_tools/_pytest/_logging.py | 73 | except RecursionError: | CODE |
| HIGH | src/cocotb_tools/_pytest/_regression.py | 921 | except Exit: | CODE |
| HIGH | src/cocotb_tools/_pytest/_regression.py | 788 | except StopAsyncIteration: | CODE |
| HIGH | src/cocotb/handle.py | 1914 | except KeyError: | CODE |
| HIGH | src/cocotb/handle.py | 326 | except KeyError: | CODE |
| HIGH | src/cocotb/handle.py | 1093 | except KeyError: | CODE |
| HIGH | src/cocotb/handle.py | 1381 | except KeyError: | CODE |
| HIGH | src/cocotb/_xunit_reporter.py | 248 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_cases/test_cocotb/test_edge_triggers.py | 483 | # Create a fresh trigger (not the cached dut.clk.rising_edge) so that | COMMENT |
| MEDIUM | docs/source/conf.py | 5 | # This file is execfile()d with the current directory set to its containing dir. | COMMENT |
| MEDIUM | examples/analog_model/afe.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/analog_model/test_analog_model.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/simple_dff/test_dff.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/simple_dff/test_dff.py | 24 | # Create a 10us period clock driver on port `clk` | COMMENT |
| MEDIUM | examples/mixed_signal/tests/test_rescap.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/mixed_signal/tests/test_regulator_plot.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/mixed_signal/tests/test_regulator_trim.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/mixed_signal/tests/test_rescap_minimalist.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/adder/tests/test_adder.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/adder/model/adder_model.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | examples/first_steps/counter_tests.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | …les/matrix_multiplier/tests/matrix_multiplier_tests.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | …les/matrix_multiplier/tests/matrix_multiplier_tests.py | 442 | # Create the testbench, start it and go through reset | COMMENT |
| MEDIUM | …ples/matrix_multiplier/tests/test_matrix_multiplier.py | 1 | # This file is public domain, it can be freely copied without restrictions. | COMMENT |
| MEDIUM | src/cocotb_tools/_pytest/_regression.py | 163 | # Initialize configuration object needed for pytest | COMMENT |
| MEDIUM | src/cocotb/_task_manager.py | 111 | # Create the Task and tie it to this TaskManager via the done callback. | STRING |
| MEDIUM⚡ | src/cocotb/_bridge.py | 255 | # Create a thread | COMMENT |
| MEDIUM⚡ | src/cocotb/_bridge.py | 256 | # Create a trigger that is called as a result of the thread finishing | COMMENT |
| MEDIUM⚡ | src/cocotb/_bridge.py | 257 | # Create an Event object that the caller can await on | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/pytest/test_waves.py | 77 | CODE | |
| LOW | tests/test_cases/test_array/test_array.py | 191 | CODE | |
| LOW | …les/matrix_multiplier/tests/matrix_multiplier_tests.py | 182 | CODE | |
| LOW | …ples/matrix_multiplier/tests/test_matrix_multiplier.py | 18 | CODE | |
| LOW | src/cocotb_tools/runner.py | 119 | CODE | |
| LOW | src/cocotb_tools/runner.py | 236 | CODE | |
| LOW | src/cocotb_tools/runner.py | 1478 | CODE | |
| LOW | src/cocotb_tools/runner.py | 1666 | CODE | |
| LOW | src/cocotb_tools/config.py | 306 | CODE | |
| LOW | src/cocotb_tools/combine_results.py | 82 | CODE | |
| LOW | src/cocotb_tools/_vendor/distutils_version.py | 167 | CODE | |
| LOW | src/cocotb_tools/_pytest/hdl.py | 438 | CODE | |
| LOW | src/cocotb_tools/_pytest/_regression.py | 750 | CODE | |
| LOW | src/cocotb_tools/_pytest/_controller.py | 244 | CODE | |
| LOW | src/cocotb_tools/_pytest/_controller.py | 362 | CODE | |
| LOW | src/cocotb_tools/_pytest/plugin.py | 671 | CODE | |
| LOW | src/cocotb_tools/_pytest/plugin.py | 739 | CODE | |
| LOW | src/cocotb_tools/_pytest/_option.py | 68 | CODE | |
| LOW | src/cocotb/task.py | 107 | CODE | |
| LOW | src/cocotb/task.py | 232 | CODE | |
| LOW | src/cocotb/task.py | 326 | CODE | |
| LOW | src/cocotb/task.py | 455 | CODE | |
| LOW | src/cocotb/task.py | 586 | CODE | |
| LOW | src/cocotb/_task_manager.py | 228 | CODE | |
| LOW | src/cocotb/regression.py | 246 | CODE | |
| LOW | src/cocotb/regression.py | 511 | CODE | |
| LOW | src/cocotb/regression.py | 979 | CODE | |
| LOW | src/cocotb/_init.py | 169 | CODE | |
| LOW | src/cocotb/_extended_awaitables.py | 240 | CODE | |
| LOW | src/cocotb/_bridge.py | 162 | CODE | |
| LOW | src/cocotb/_decorators.py | 245 | CODE | |
| LOW | src/cocotb/_decorators.py | 446 | CODE | |
| LOW | src/cocotb/_decorators.py | 608 | CODE | |
| LOW | src/cocotb/_decorators.py | 168 | CODE | |
| LOW | src/cocotb/_decorators.py | 650 | CODE | |
| LOW | src/cocotb/simtime.py | 195 | CODE | |
| LOW | src/cocotb/_event_loop.py | 44 | CODE | |
| LOW | src/cocotb/_test_factory.py | 140 | CODE | |
| LOW | src/cocotb/types/_logic_array.py | 241 | CODE | |
| LOW | src/cocotb/types/_logic_array.py | 589 | CODE | |
| LOW | src/cocotb/types/_logic_array.py | 1023 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_cases/test_cocotb/test_testfactory.py | 121 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_cases/test_cocotb/test_testfactory.py | 123 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_cases/test_cocotb/test_testfactory.py | 174 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_cases/test_cocotb/test_testfactory.py | 176 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/cocotb/types/_logic.py | 154 | # ----------------------------------------------------- | COMMENT |
| MEDIUM | src/cocotb/types/_logic.py | 156 | # ----------------------------------------------------- | COMMENT |
| MEDIUM | src/cocotb/types/_logic.py | 177 | # ----------------------------------------------------- | COMMENT |
| MEDIUM | src/cocotb/types/_logic.py | 179 | # ----------------------------------------------------- | COMMENT |
| MEDIUM | src/cocotb/types/_logic.py | 200 | # ----------------------------------------------------- | COMMENT |
| MEDIUM | src/cocotb/types/_logic.py | 202 | # ----------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/mixed_language/tests/test_mixed_language.py | 0 | simulate the matrix_multiplier example using the python runner. this file can be run directly or via pytest discovery. | STRING |
| HIGH | examples/adder/tests/test_adder.py | 0 | simulate the matrix_multiplier example using the python runner. this file can be run directly or via pytest discovery. | STRING |
| HIGH | …ples/matrix_multiplier/tests/test_matrix_multiplier.py | 0 | simulate the matrix_multiplier example using the python runner. this file can be run directly or via pytest discovery. | STRING |
| HIGH | src/cocotb/_extended_awaitables.py | 0 | a collection of triggers which a testbench can :keyword:`await`. | STRING |
| HIGH | src/cocotb/_gpi_triggers.py | 0 | a collection of triggers which a testbench can :keyword:`await`. | STRING |
| HIGH | src/cocotb/_base_triggers.py | 0 | a collection of triggers which a testbench can :keyword:`await`. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/pytest/test_logging_with_envs.py | 60 | def _set_env(monkeypatch: MonkeyPatch, name: str, value: str | None) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 276 | def _set_env_common(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 308 | def _set_env_build(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 311 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 789 | def _set_vhdl_sources(self, sources: Sequence[PathLike | VHDL]) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 837 | def _set_build_args(self, build_args: Sequence[str | Verilog | VHDL]) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 913 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 1407 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 1554 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 1651 | def _set_env_build(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 1878 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 2189 | def _set_env_build(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 2195 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 2299 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/_pytest/_regression.py | 391 | def _setup_completed(self) -> None: | CODE |
| LOW | src/cocotb/logging.py | 157 | def set_level(logger_name: str, envvar: str) -> None: | CODE |
| LOW | src/cocotb/logging.py | 180 | def _setup_gpi_logger() -> None: | CODE |
| LOW | src/cocotb/task.py | 191 | def set_name(self, value: object) -> None: | STRING |
| LOW | src/cocotb/regression.py | 300 | def set_mode(self, mode: RegressionMode) -> None: | CODE |
| LOW | src/cocotb/regression.py | 1144 | def _setup_regression_manager() -> None: | CODE |
| LOW | src/cocotb/_init.py | 169 | def _setup_random_seed() -> None: | CODE |
| LOW | src/cocotb/_init.py | 206 | def _setup_root_handle() -> None: | CODE |
| LOW | src/cocotb/_deprecation.py | 14 | __all__ = ["deprecated"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_cases/test_async_bridge/test_async_bridge.py | 188 | CODE | |
| LOW | tests/test_cases/test_async_bridge/test_async_bridge.py | 192 | CODE | |
| LOW | src/cocotb_tools/runner.py | 338 | CODE | |
| LOW | src/cocotb_tools/runner.py | 476 | CODE | |
| LOW | src/cocotb_tools/_pytest/hdl.py | 218 | CODE | |
| LOW | src/cocotb_tools/_pytest/hdl.py | 316 | CODE | |
| LOW | src/cocotb_tools/_pytest/_regression.py | 91 | CODE | |
| LOW | src/cocotb/_decorators.py | 282 | CODE | |
| LOW | src/cocotb/_test_factory.py | 140 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/cocotb_tools/_pytest/_regression.py | 763 | except Exception: # noqa: BLE001 | CODE |
| LOW | src/pygpi/entry.py | 32 | except Exception as e: | CODE |
| LOW | src/cocotb/task.py | 445 | except Exception as e: # noqa: BLE001 | STRING |
| LOW | src/cocotb/regression.py | 411 | except Exception: # noqa: BLE001 | CODE |
| MEDIUM | src/cocotb/_decorators.py | 336 | def my_test(dut): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ts/test_cases/test_force_release/test_force_release.py | 209 | # Check if the driven signal is actually released. | COMMENT |
| LOW | src/cocotb_tools/_pytest/_runner.py | 55 | # Check if test_module exists as Python file | COMMENT |
| LOW | src/cocotb/task.py | 382 | # Print the message only if it exists | STRING |
| LOW | src/cocotb/task.py | 560 | # Set state to do cancel | STRING |
| LOW | src/cocotb/task.py | 609 | # Set state to do cancel | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_cases/test_kill_sim/kill_sim_tests.py | 59 | CODE | |
| MEDIUM | tests/test_cases/test_kill_sim/kill_sim_tests.py | 86 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_cases/test_discovery/test_discovery.py | 330 | # TODO: add tests for Verilog "string_input_port" and "STRING_LOCALPARAM" (see issue #802) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/cocotb_tools/config.py | 56 | # NOTE: make sure to keep "helpmsg" aligned with docs/source/library_reference.rst | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_cases/test_cocotb/test_deprecated.py | 178 | async def do_something(): | CODE |