AI Slop Code RIsk Monitor

YosysHQ/yosys

Yosys Open SYnthesis Suite

6.1 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for YosysHQ/yosys, a C++ project with 4,800 GitHub stars. SynthScan examined 65,492 lines of code across 477 source files, recording 297 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 6.1 (Moderate 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.

6.1
Adjusted Signal
6.1
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
4.8K
Stars
C++
Language
65.5K
Lines of Code
477
Files
297
Pattern Hits
2026-10-12
Scan Date
0.04
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 17.0/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 237 finding(s).

Hallucinated Dependency & Supply Chain Risk 5.7/100 · LOW

Are imports declared and package/API names verified? 34 finding(s).

Agent Over-Engineering Ratio 6.4/100 · LOW

Are wrappers, guards, and repeated structures necessary? 39 finding(s).

PR Review Velocity Impact 27.5/100 · MEDIUM

Which changes need focused human review? 297 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 18MEDIUM 17LOW 262

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 297 distinct pattern matches across 15 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.

Over-Commented Block156 hits · 150 pts
SeverityFileLineSnippetContext
LOW.pre-commit-config.yaml1# To use:COMMENT
LOWtechlibs/xilinx/cells_xtra.py21 # - UG613 (Spartan 3A)COMMENT
LOWtechlibs/xilinx/cells_xtra.py41 # Cell('RAM16X2S', port_attrs={'WCLK': ['clkbuf_sink']}),COMMENT
LOWtechlibs/xilinx/cells_xtra.py61 # Cell('RAM64X8SW', port_attrs={'WCLK': ['clkbuf_sink']}),COMMENT
LOWtechlibs/xilinx/cells_xtra.py81 # Cell('OR2L'),COMMENT
LOWtechlibs/xilinx/cells_xtra.py201 # Cell('MULT18X18S', port_attrs={'C': ['clkbuf_sink']}), # Spartan 3COMMENT
LOWtechlibs/xilinx/cells_xtra.py381 Cell('BUFMRCE', port_attrs={'O': ['clkbuf_driver']}),COMMENT
LOWtechlibs/lattice/cells_xtra.py21class State(Enum):COMMENT
LOWtechlibs/lattice/cells_xtra.py41 #Cell("FD1P3DX"),COMMENT
LOWtechlibs/lattice/cells_xtra.py61 #Cell("IBPU"),COMMENT
LOWtechlibs/lattice/cells_xtra.py81 #Cell("MUX41"),COMMENT
LOWtechlibs/lattice/cells_xtra.py101 #Cell("OR3"),COMMENT
LOWtechlibs/lattice/cells_xtra.py121 #Cell("XOR3"),COMMENT
LOWtechlibs/lattice/cells_xtra.py181 ]),COMMENT
LOWtechlibs/lattice/cells_xtra.py201 #Cell("FD1P3BX"),COMMENT
LOWtechlibs/lattice/cells_xtra.py221 #Cell("FL1P3IY"),COMMENT
LOWtechlibs/lattice/cells_xtra.py241 #Cell("INV"),COMMENT
LOWtechlibs/lattice/cells_xtra.py261 #Cell("MULT2"),COMMENT
LOWtechlibs/lattice/cells_xtra.py281 #Cell("OFS1P3IX"),COMMENT
LOWtechlibs/lattice/cells_xtra.py301 #Cell("VHI"),COMMENT
LOWtechlibs/lattice/cells_xtra.py321 Cell("PDPW8KC"),COMMENT
LOWtechlibs/lattice/cells_xtra.py341 #Cell("ODDRDQSX1A"),COMMENT
LOWtechlibs/lattice/cells_xtra.py361 ]),COMMENT
LOWtechlibs/lattice/cells_xtra.py381 #Cell("FD1P3BX"),COMMENT
LOWtechlibs/lattice/cells_xtra.py401 #Cell("FL1P3IY"),COMMENT
LOWtechlibs/lattice/cells_xtra.py421 #Cell("INV"),COMMENT
LOWtechlibs/lattice/cells_xtra.py441 #Cell("MULT2"),COMMENT
LOWtechlibs/lattice/cells_xtra.py461 #Cell("OFS1P3IX"),COMMENT
LOWtechlibs/lattice/cells_xtra.py481 #Cell("VHI"),COMMENT
LOWtechlibs/lattice/cells_xtra.py501 Cell("PDPW8KC"),COMMENT
LOWtechlibs/lattice/cells_xtra.py521 #Cell("DQSDLLC"),COMMENT
LOWtechlibs/lattice/cells_xtra.py541 #Cell("AND2"),COMMENT
LOWtechlibs/lattice/cells_xtra.py561 #Cell("FD1P3JX"),COMMENT
LOWtechlibs/lattice/cells_xtra.py581 #Cell("FL1S1AY"),COMMENT
LOWtechlibs/lattice/cells_xtra.py601 #Cell("LB2P3AY"),COMMENT
LOWtechlibs/lattice/cells_xtra.py621 #Cell("MUX321"),COMMENT
LOWtechlibs/lattice/cells_xtra.py641 #Cell("OR2"),COMMENT
LOWtechlibs/lattice/cells_xtra.py661 #Cell("XNOR3"),COMMENT
LOWtechlibs/lattice/cells_xtra.py681 Cell("CLKDIVC"),COMMENT
LOWtechlibs/lattice/cells_xtra.py701 #Cell("DLLDELC"),COMMENT
LOWtechlibs/common/gen_fine_ffs.py1TEMPLATES = [COMMENT
LOWtechlibs/common/gen_fine_ffs.py41 Q <= D;COMMENT
LOWtechlibs/common/gen_fine_ffs.py61output reg Q;COMMENT
LOWtechlibs/common/gen_fine_ffs.py81input D, C, E;COMMENT
LOWtechlibs/common/gen_fine_ffs.py141//-COMMENT
LOWtechlibs/common/gen_fine_ffs.py161endCOMMENT
LOWtechlibs/common/gen_fine_ffs.py221//-COMMENT
LOWtechlibs/common/gen_fine_ffs.py241 else if (S == {S:0|1})COMMENT
LOWtechlibs/common/gen_fine_ffs.py301//-COMMENT
LOWtechlibs/common/gen_fine_ffs.py321 elseCOMMENT
LOWtechlibs/common/gen_fine_ffs.py341input E, D;COMMENT
LOWtechlibs/microchip/LSRAM.txt1# ISC LicenseCOMMENT
LOWtechlibs/microchip/LSRAM.txt21ram block $__LSRAM_TDP_ {COMMENT
LOWtechlibs/microchip/uSRAM.txt1# ISC LicenseCOMMENT
LOWtechlibs/gatemate/make_lut_tree_lib.py101def NOT(arg): return FNode("NOT", arg)COMMENT
LOWtechlibs/gatemate/make_lut_tree_lib.py141# ["$__CC3_AAA", AND(AND(A,B),AND(A,C))],COMMENT
LOWfrontends/verilog/verilog_lexer.h1#ifndef VERILOG_LEXER_HCOMMENT
LOWbackends/smt2/smtbmc.py1#!@PYTHON_SHEBANG@COMMENT
LOWbackends/smt2/witness.py1#!@PYTHON_SHEBANG@COMMENT
LOWbackends/smt2/smtio.py1#COMMENT
96 more matches not shown…
Cross-Language Confusion12 hits · 55 pts
SeverityFileLineSnippetContext
HIGHbackends/smt2/smtbmc_incremental.py177 smt_out.push({"and": "true", "or": "false"}[expr[0]])CODE
HIGHpasses/pmgen/pmgen.py434 print(" if (cell != nullptr && blacklist_cells.insert(cell).second) {", file=f)CODE
HIGHpasses/pmgen/pmgen.py438 print(" if (rollback == 0 || rollback > rb)", file=f)CODE
HIGHpasses/pmgen/pmgen.py786 print(" if (generate_mode && rng(100) < (found_any_match ? {} : {})) {{".format(block["genargs"][1], CODE
HIGHtests/gen_tests_makefile.py55 cmd = f"bash -v {sh_file} >{sh_file}.err 2>&1 && mv {sh_file}.err {sh_file}.log"CODE
HIGHtests/memlib/generate_mk.py443 if (we && ra == wa)CODE
HIGHtests/memlib/generate_mk.py937 if (we && be[i])CODE
HIGHtests/memlib/generate_mk.py1439 ("grden", "rden && rst", "old", False, 1), # selects _clken, simulates _rdenSTRING
HIGHtests/memlib/generate_mk.py1440 ("grden_ce", "rden && rst", "old", True, 4), # both of the aboveSTRING
HIGHtests/memlib/generate_mk.py1484 ("rdenrst_wr_byte", "rden && rst", ["USE_SRST"], "old", 3),CODE
HIGHtests/memfile/generate_mk.py9 setup = "mkdir -p temp && cp content1.dat temp/content2.dat"CODE
HIGHtests/fsm/generate_mk.py54 print(' assign rst = rst1 || rst2;')CODE
Deep Nesting55 hits · 54 pts
SeverityFileLineSnippetContext
LOWtechlibs/fix_mod.py6CODE
LOWtechlibs/xilinx/cells_xtra.py607CODE
LOW…hlibs/quicklogic/qlf_k6n10f/generate_bram_types_sim.py3CODE
LOWtechlibs/lattice/cells_xtra.py719CODE
LOWtechlibs/lattice/cells_xtra_nexus.py175CODE
LOWtechlibs/gowin/cells_xtra.py38CODE
LOWbackends/edif/runtest.py11CODE
LOWbackends/smt2/smtbmc.py730CODE
LOWbackends/smt2/smtbmc.py829CODE
LOWbackends/smt2/smtbmc.py973CODE
LOWbackends/smt2/smtbmc.py1082CODE
LOWbackends/smt2/smtbmc.py1166CODE
LOWbackends/smt2/smtbmc.py1316CODE
LOWbackends/smt2/smtbmc.py1386CODE
LOWbackends/smt2/smtbmc.py1684CODE
LOWbackends/smt2/smtbmc.py1715CODE
LOWbackends/smt2/smtbmc_incremental.py374CODE
LOWbackends/smt2/witness.py187CODE
LOWbackends/smt2/witness.py365CODE
LOWbackends/smt2/witness.py337CODE
LOWbackends/smt2/smtio.py345CODE
LOWbackends/smt2/smtio.py458CODE
LOWbackends/smt2/smtio.py557CODE
LOWbackends/smt2/smtio.py819CODE
LOWbackends/smt2/smtio.py1195CODE
LOWbackends/smt2/smtio.py1311CODE
LOWpasses/pmgen/pmgen.py50CODE
LOWpasses/pmgen/pmgen.py110CODE
LOWtests/tools/txt2tikztiming.py33CODE
LOWtests/bram/generate_mk.py14CODE
LOWtests/abc_new/librelane/construct_abc_script.py82CODE
LOWtests/xprop/test.py59CODE
LOWtests/arch/generate_mk.py16CODE
LOWtests/arch/gatemate/gen_luttrees.py3CODE
LOWtests/rpc/frontend.py66CODE
LOWtests/functional/rkt_vcd.py13CODE
LOWtests/functional/rkt_vcd.py47CODE
LOWtests/functional/smtio.py321CODE
LOWtests/functional/smtio.py434CODE
LOWtests/functional/smtio.py533CODE
LOWtests/functional/smtio.py795CODE
LOWtests/functional/smtio.py1163CODE
LOWtests/functional/smtio.py1269CODE
LOWtests/functional/smt_vcd.py42CODE
LOWtests/functional/smt_vcd.py15CODE
LOWtests/functional/smt_vcd.py47CODE
LOWtests/functional/smt_vcd.py143CODE
LOWtests/functional/rtlil_cells.py369CODE
LOWdocs/util/custom_directives.py68CODE
LOWdocs/util/cmd_documenter.py351CODE
LOWdocs/util/cmd_documenter.py365CODE
LOWpyosys/generator.py288CODE
LOWpyosys/generator.py320CODE
LOWpyosys/generator.py503CODE
LOWpyosys/generator.py640CODE
Decorative Section Separators9 hits · 32 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/simple/generate_mk.py8# ----------------------COMMENT
MEDIUM⚡tests/simple/generate_mk.py10# ----------------------COMMENT
MEDIUMtests/arch/analogdevices/mem_gen.py6blockram_template = """# ======================================CODE
MEDIUMtests/arch/quicklogic/qlf_k6n10f/mem_gen.py6blockram_template = """# ======================================CODE
MEDIUMtests/rpc/frontend.py30# ----------------------------------------------------------------------------STRING
MEDIUM⚡tests/simple_abc9/generate_mk.py10# ----------------------COMMENT
MEDIUM⚡tests/simple_abc9/generate_mk.py12# ----------------------COMMENT
MEDIUM⚡tests/simple_abc9/generate_mk.py18# ----------------------COMMENT
MEDIUM⚡tests/simple_abc9/generate_mk.py20# ----------------------COMMENT
Empty Error Handlers6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHbackends/smt2/smtio.py48except ValueError:CODE
HIGHtests/xprop/test.py55except FileNotFoundError:CODE
HIGHtests/xprop/test.py45except FileNotFoundError:CODE
HIGHtests/pyosys/run_tests.py23except FileNotFoundError:CODE
HIGHtests/functional/smtio.py48except ValueError:CODE
HIGHkernel/cellhelp.py80except AttributeError:CODE
Unused Imports22 hits · 22 pts
SeverityFileLineSnippetContext
LOWtechlibs/gowin/cells_xtra.py8CODE
LOWtechlibs/gowin/cells_xtra.py9CODE
LOWbackends/smt2/smtbmc.py20CODE
LOWbackends/smt2/smtio.py24CODE
LOWtests/tools/txt2tikztiming.py5CODE
LOWtests/svinterfaces/generate_mk.py3CODE
LOWtests/arch/analogdevices/generate_mk.py7CODE
LOWtests/arch/analogdevices/mem_gen.py1CODE
LOWtests/arch/quicklogic/qlf_k6n10f/generate_mk.py7CODE
LOWtests/arch/quicklogic/qlf_k6n10f/mem_gen.py1CODE
LOWtests/functional/rkt_vcd.py1CODE
LOWtests/functional/smtio.py24CODE
LOWtests/functional/smt_vcd.py1CODE
LOWtests/functional/smt_vcd.py2CODE
LOWtests/functional/smt_vcd.py3CODE
LOWtests/functional/rtlil_cells.py2CODE
LOWdocs/util/cell_documenter.py2CODE
LOWdocs/util/custom_directives.py3CODE
LOWdocs/util/cmd_documenter.py2CODE
LOWdocs/util/cmd_documenter.py4CODE
LOWexamples/python-api/script.py6CODE
LOWkernel/cellhelp.py3CODE
AI Slop Vocabulary5 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUMlibs/minisat/Vec.h81 // happen given the way capacities are calculated (below). Essentially, all capacities areCOMMENT
MEDIUMpyosys/hashlib.h281 // repr(set(s)) where s is iterable would be more terse/robustCOMMENT
MEDIUMpyosys/hashlib.h408 // repr(dict(s)) where s is iterable would be more terse/robustCOMMENT
MEDIUMpyosys/hashlib.h512 // repr(dict(s)) where s is iterable would be more terse/robustCOMMENT
MEDIUMkernel/drivertools.h1118 // Essentially a dict<DriveBitId, pool<DriveBitId>> but using less memoryCOMMENT
Excessive Try-Catch Wrapping7 hits · 10 pts
SeverityFileLineSnippetContext
LOWbackends/smt2/smtbmc_incremental.py612 except Exception as e:CODE
MEDIUM⚡tests/simple/generate_mk.py12 print("Error: Icarus Verilog 'iverilog' not found.", file=sys.stderr)CODE
LOWtests/memories/validate.py86 except Exception as e:CODE
LOWtests/memories/validate.py92 except Exception as e:CODE
MEDIUM⚡tests/simple_abc9/generate_mk.py14 print("Error: Icarus Verilog 'iverilog' not found.", file=sys.stderr)CODE
LOWdocs/util/cell_documenter.py221 except Exception as exc:STRING
LOWdocs/util/cmd_documenter.py263 except Exception as exc:STRING
Hyper-Verbose Identifiers12 hits · 10 pts
SeverityFileLineSnippetContext
LOWbackends/smt2/smtbmc.py1490def print_failed_asserts_worker(mod, state, path, extrainfo, infomap, infokey=()):STRING
LOWbackends/smt2/smtbmc.py1628def smt_assert_design_assumes(step):STRING
LOWbackends/smt2/smtbmc.py1802def report_tracked_assumptions(msg):STRING
LOWbackends/smt2/smtbmc_incremental.py427 def cmd_assert_design_assumes(self, cmd):CODE
LOWbackends/smt2/smtbmc_incremental.py447 def cmd_get_unsat_assumptions(self, cmd):CODE
LOWbackends/smt2/smtio.py985 def get_raw_unsat_assumptions(self):CODE
LOWtests/functional/test_smtbmc_witness_mismatch.py76def assert_no_mismatch_message(result):CODE
LOWtests/functional/test_smtbmc_witness_mismatch.py82def assert_has_mismatch_message(result, msg):CODE
LOWtests/functional/test_smtbmc_witness_mismatch.py143def test_allowed_extra_signal_in_design(tmp_path):STRING
LOWtests/functional/test_smtbmc_witness_mismatch.py169def test_allowed_extra_memory_in_design(tmp_path):STRING
LOWtests/functional/smtio.py961 def get_raw_unsat_assumptions(self):CODE
LOWpyosys/generator.py371 def make_preprocessor_options(self, build_dir):CODE
Example Usage Blocks3 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/vloghtb/common.sh13 # Usage:COMMENT
LOWtests/vloghtb/common.sh40 # Usage:COMMENT
LOWtests/vloghtb/common.sh74 # Usage:COMMENT
Redundant / Tautological Comments2 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡tests/simple/generate_mk.py9# Check if iverilog is installedCOMMENT
LOW⚡tests/simple_abc9/generate_mk.py11# Check if iverilog is installedCOMMENT
Modern Structural Boilerplate4 hits · 4 pts
SeverityFileLineSnippetContext
LOWdocs/util/cell_documenter.py15logger = logging.getLogger(__name__)CODE
LOWdocs/util/RtlilLexer.py4__all__ = ['RtlilLexer']CODE
LOWdocs/util/cmd_documenter.py15logger = logging.getLogger(__name__)CODE
LOWpyosys/modinit.py19__all__ = ["libyosys"]CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMtests/functional/smt_vcd.py136 # Create a single assertion covering all timestepsCOMMENT
Slop Phrases2 hits · 3 pts
SeverityFileLineSnippetContext
LOW.github/workflows/test-compile.yml50 # newest, make sure to update maximum standard step to matchCOMMENT
LOW.github/actions/setup-build-env/action.yml32 # if updating common/build/docs dependencies, make sure to update README.mdCOMMENT
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWdocs/util/cmd_documenter.py61CODE