Skip to content

gft_signed_mac answers incorrectly on silicon (clauses 0011, ok=0) while passing 2/2 in simulation — the die check is stronger than the spec's tests #684

Description

@gHashTag

gft_signed_mac — the ladder's central arithmetic operator — loads, runs, and answers incorrectly on real silicon, while passing every test its spec contains. This is an editorial and engineering decision, so it is filed rather than fixed.

The measurement

Same bench, same session, same toolchain, control satisfied — a foreign bitstream forced Done = 0 before ours brought it to 1:

operator simulation LUT Fmax on-die clauses ok
gft_sadd 3 / 3 passed 1 312 18.24 MHz 1111 1
gft_signed_mac 2 / 2 passed 6 466 9.14 MHz 0011 0

beat = 1 in both reads: the MAC is alive and clocking. It closed timing at 9.14 MHz against a 2.21 MHz target — 4.1× margin — so a setup violation is not the obvious explanation.

The root issue is test strength, not silicon

The MAC's spec ships two simulation tests; its on-die check evaluates four clauses. The two that fail are not covered in simulation.

The die check is stronger than the suite the spec carries. That is why the defect survived to a physical load — the cheapest oracle in the project never asked the questions the most expensive one answers.

gft_sadd carries three tests and satisfies all four clauses: its suite and its die check agree because the behaviour is correct in both.

What this asks for

  1. Derive the simulation tests from the on-die clauses. Free, and it moves this class of defect from "found after a bitstream load" to "found in seconds". This is the single highest-value change.
  2. Diagnose the two failing clauses. They are clauses=0011 on USER1, design id 13, word 0xa5a5334e. Whether the fault is in the generated Verilog, the spec, or the on-die harness is not yet established.
  3. Consider whether L4 should require oracle parity. A spec satisfies TESTABILITY today by containing tests. It can do so while its tests are weaker than a check the same repository already runs.

What is not claimed

Not that the φ-format is arithmetically wrong — the failure is in this implementation of one operator, on one part, with one toolchain. gft_sadd passing 4/4 establishes that the path and the reader are sound, which is what makes this red meaningful rather than suspect.

Every number here is recomputed from committed records by research/arxiv_tnf/verify_numbers.py (281 checks). Related: #683, #682, #681.

Filed by the autonomous wave loop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions