cocotb: Python-based chip (RTL) verification
This report presents the forensic synthetic code analysis of cocotb/cocotb, a Python project with 2,441 GitHub stars. SynthScan v2.0 examined 67,239 lines of code across 304 source files, recording 878 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 15.8 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 878 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cocotb_build_libs.py | 53 | def create_sxs_assembly_manifest( | CODE |
| LOW | cocotb_build_libs.py | 377 | def copy_extensions_to_source(self): | CODE |
| LOW | noxfile.py | 101 | def build_cocotb_for_dev_test(session: nox.Session) -> None: | CODE |
| LOW | noxfile.py | 446 | def release_install_from_sdist(session: nox.Session) -> None: | CODE |
| LOW | noxfile.py | 492 | 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_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 | 165 | def test_logic_array_properties(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 170 | def test_logic_array_properties_deprecated(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 272 | def test_logic_array_literal_casts(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 277 | def test_logic_array_index_casts(): | CODE |
| LOW | tests/pytest/test_logic_array.py | 385 | def test_slicing_infered_start_stop(): | CODE |
| LOW⚡ | tests/pytest/test_logic_array.py | 399 | def test_slice_direction_mismatch(): | CODE |
| LOW⚡ | tests/pytest/test_logic_array.py | 407 | def test_set_slice_wrong_length(): | CODE |
| LOW⚡ | tests/pytest/test_logic_array.py | 413 | def test_slice_correct_infered(): | CODE |
| LOW | tests/pytest/test_futures.py | 118 | def test_envvar_unknown_future(monkeypatch: pytest.MonkeyPatch) -> None: | 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_runner.py | 54 | def test_sv_literal_conversion(): | CODE |
| LOW | tests/pytest/test_runner.py | 78 | def test_vhdl_literal_conversion(): | CODE |
| LOW | tests/pytest/test_parameterize.py | 44 | def test_parametrize_bad_args(): | CODE |
| LOW | tests/pytest/test_range.py | 57 | def test_range_index_from_class(): | CODE |
| 270 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 7 | CODE | |
| LOW | cocotb_build_libs.py | 4 | 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_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_futures.py | 4 | CODE | |
| LOW | tests/pytest/test_env.py | 8 | CODE | |
| LOW | tests/pytest/test_env.py | 30 | 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_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 | …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 | |
| LOW | …/test_cases/test_one_empty_test/test_one_empty_test.py | 4 | CODE | |
| LOW | tests/test_cases/test_vhdl_libraries/test_ab.py | 1 | CODE | |
| 195 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .codecov.yml | 1 | # Copyright cocotb contributors | COMMENT |
| LOW | pyproject.toml | 181 | # - CPython on macOS x86_64 and arm64 | COMMENT |
| LOW | noxfile.py | 81 | session.env["PYGPI_DEBUG"] = "1" | COMMENT |
| LOW | tests/test_cases/test_discovery/test_discovery.py | 501 | 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 | 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 | |
| LOW | src/cocotb/_vendor/vpi/vpi_user.h | 121 | #define vpiForce 16 /* force statement */ | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_user.h | 141 | #define vpiNet 36 /* scalar or vector net */ | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_user.h | 161 | #define vpiSysFuncCall 56 /* system function call */ | COMMENT |
| LOW | src/cocotb/_vendor/vpi/vpi_user.h | 181 | #define vpiCallback 107 /* callback object */ | COMMENT |
| 90 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/cocotb_tools/runner.py | 495 | 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 | 69 | 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 | 192 | 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 | 355 | Translate a discovered child object name into a key. Args: name: The GPI name of the child object. | STRING |
| HIGH | src/cocotb/handle.py | 473 | 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 | 1812 | Factory function to create the correct type of `SimHandle` object. Args: handle: The GPI handle to the simu | STRING |
| HIGH | src/cocotb/clock.py | 277 | Start driving the clock signal. You can later stop the clock by calling :meth:`stop`. Args: | STRING |
| HIGH | src/cocotb/_extended_awaitables.py | 309 | 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 | 36 | 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 |
|---|---|---|---|---|
| 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 | 244 | # Create a thread | COMMENT |
| MEDIUM⚡ | src/cocotb/_bridge.py | 245 | # Create a trigger that is called as a result of the thread finishing | COMMENT |
| MEDIUM⚡ | src/cocotb/_bridge.py | 246 | # Create an Event object that the caller can await on | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cocotb_build_libs.py | 227 | CODE | |
| LOW | cocotb_build_libs.py | 280 | CODE | |
| LOW | tests/pytest/test_waves.py | 77 | CODE | |
| LOW | tests/test_cases/test_array/test_array.py | 190 | 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 | 116 | CODE | |
| LOW | src/cocotb_tools/runner.py | 233 | CODE | |
| LOW | src/cocotb_tools/runner.py | 1274 | CODE | |
| LOW | src/cocotb_tools/runner.py | 1452 | CODE | |
| LOW | src/cocotb_tools/config.py | 229 | CODE | |
| LOW | src/cocotb_tools/combine_results.py | 83 | 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 | 328 | CODE | |
| LOW | src/cocotb/task.py | 457 | CODE | |
| LOW | src/cocotb/task.py | 588 | 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 | 243 | CODE | |
| LOW | src/cocotb/_bridge.py | 161 | CODE | |
| LOW | src/cocotb/_decorators.py | 203 | CODE | |
| LOW | src/cocotb/_decorators.py | 402 | CODE | |
| LOW | src/cocotb/_decorators.py | 557 | CODE | |
| LOW | src/cocotb/_decorators.py | 132 | CODE | |
| LOW | src/cocotb/_decorators.py | 599 | 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 |
|---|---|---|---|---|
| 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 | cocotb_build_libs.py | 19 | logger = logging.getLogger(__name__) | CODE |
| 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 | 273 | def _set_env_common(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 302 | def _set_env_build(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 305 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 783 | def _set_vhdl_sources(self, sources: Sequence[PathLike | VHDL]) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 831 | def _set_build_args(self, build_args: Sequence[str | Verilog | VHDL]) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 1204 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 1350 | def _set_env_test(self) -> None: | CODE |
| LOW | src/cocotb_tools/runner.py | 1671 | 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 | 203 | def _setup_root_handle() -> None: | CODE |
| LOW | src/cocotb/_deprecation.py | 14 | __all__ = ["deprecated"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| LOW | tests/test_cases/test_async_bridge/test_async_bridge.py | 187 | CODE | |
| LOW | tests/test_cases/test_async_bridge/test_async_bridge.py | 191 | CODE | |
| LOW | src/cocotb_tools/runner.py | 332 | CODE | |
| LOW | src/cocotb_tools/runner.py | 470 | 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 | 238 | CODE | |
| LOW | src/cocotb/_test_factory.py | 140 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/cocotb_tools/_pytest/_regression.py | 763 | except Exception: | CODE |
| LOW | src/pygpi/entry.py | 32 | except Exception as e: | CODE |
| LOW | src/cocotb/task.py | 447 | except Exception as e: | STRING |
| LOW | src/cocotb/regression.py | 411 | except Exception: | CODE |
| MEDIUM | src/cocotb/_decorators.py | 292 | 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 | 384 | # Print the message only if it exists | STRING |
| LOW | src/cocotb/task.py | 562 | # Set state to do cancel | STRING |
| LOW | src/cocotb/task.py | 611 | # 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 | 329 | # 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 |