Skip to content

Wave Loop 777 — module-scope [373][2]^6 Pt non-power-of-two packed AoS variable with indexed signed writes #1490

Description

@gHashTag

Wave Loop 777 validates a module-scope [373][2]^6 Pt packed array-of-struct variable initialized from a function call, with indexed signed field writes and assert_eq read-back in a bench block.

This is the next step in the odd-outer-dimension ladder (339 → 341 → 343 → 349 → 351 → 353 → 355 → 357 → 359 → 361 → 363 → 365 → 367 → 369 → 371 → 373).

Acceptance criteria

  • specs/scratch/w777_bench_module_373x2p6_aos_var_call_write.t27 is generated and parses.
  • The witness is Icarus-lowerable and simulates correctly (17 cycles, PASSED).
  • The cocotb reference model matches the t27 semantics.
  • t27c seal --save succeeds and FROZEN_HASH remains unchanged.
  • All cargo suites remain green.
  • Integration test accepts_w777_bench_module_373x2p6_aos_var_call_write is added.
  • Closeout report docs/reports/FPGA_LOOP_CLOSEOUT_W777_2026-07-24.md is written.
  • Learning is saved to .trinity/experience.md, memory, .claude/skills/t27-wave-loop.md, and .trinity/current-issue.md.
  • .claude/plans/wave-loop-778.md with three cooperation variants is created.

Technical notes

  • Shape: [373][2]^6 Pt where Pt = pub struct Pt { x : i16, y : i16 }.
  • Total elements: 373 x 64 = 23,872.
  • Packed vector width: 23,872 x 32 = 764,416 bits (~0.729 MiBit).
  • MID_IDX = 186; frame-condition element [186][1][0][0][0][0][0] is element 186*64 + 32 = 11,936.
  • Generator script: scripts/gen_w777.py (copy from scripts/gen_w776.py, set OUTER = 373 and MID_IDX = 186, fix module prefix).
  • Use assert_eq checks on changed elements (Icarus simulation path does not emit assert_ne).
  • Include make_grid(32768) period-identity check because 32768 == 0 (mod 32768).
  • Zero compiler / reference-model / FROZEN_HASH changes expected.

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