Skip to content

The Icarus simulation gate has had zero targets since specs/scratch was untracked, and 260 baselines for subjects that do not exist #2987

Description

@gHashTag

The only ruler in this repository that RUNS generated Verilog is pointed at a directory that does not exist

bootstrap/src/suite.rs:1207:

fn icarus_regression_specs(repo: &Path) -> Vec<PathBuf> {
    collect_t27(&repo.join("specs/scratch"))

specs/scratch was untracked in #2283 and is not in the tree.

$ ls -d specs/scratch                      -> No such file or directory
$ git ls-files specs/scratch | wc -l       -> 0
$ ./target/release/t27c suite --fast --icarus-simulate
--- Phase 3d: Icarus Verilog Simulation Gate ---
Error: phase `icarus-simulate (phase 3d)` has NO targets: <repo>/specs/scratch
       filtered to stems w5*/w3* yielded no .t27 file.
rc=1

The W643 honest floor is doing its job -- the phase refuses rather than reporting
a pass. What nothing says is that the refusal has been the steady state.

  • grep -rl icarus .github/workflows/ Makefile -> no hits. Nothing invokes it.
  • git ls-files .trinity/icarus-baselines | wc -l -> 260, and 0 of them
    are outside .trinity/icarus-baselines/specs/scratch/. Every tracked baseline
    describes a subject that no longer exists.
  • Phase 3e (icarus-cocotb, suite.rs:2263) calls the same selector.

Why it matters more than a dead phase

C, Rust and Zig each have a corpus-walking arm with real targets. The Verilog
arm is the only one that can catch a defect whose whole nature is that it
compiles -- and it is the arm with no targets. Pointed at the corpus by hand:

specs/
iverilog accepts the SYNTH output (the number this project quotes) 380 of 581
reaches vvp with tests turned on ~170
produces a real PASSED/FAILED verdict ~115
reports failures today 9

The 380 is measured on Verilog with the tests removed.

What the deep ruler found the moment it was pointed somewhere

Four defects, each reproduced with a one-variable control, filed separately:

Repair, and the decision in it

Two halves, and only the first is mechanical:

  1. Point the selector at a directory that exists.
  2. Decide what the baselines mean. 260 files describe subjects that are gone;
    re-baselining against today's corpus records 9 known failures as accepted,
    which is a statement about those 9, not a cleanup.

Not measured here: whether the 9 are compiler defects or spec defects.
They are reported as "a gate that ran would be red today".

Refs #2283

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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