Repository navigation
tri hot: every hot-reload speed-up as one word -- watch, frontier, prebuild, suite, caches #8952
Description
Part of #8737 (hot reload), epic #8095. The owner asked for every speed-up to be in the tri CLI.
Problem
Each speed-up of the overnight loop sits behind a different t27c subcommand and flag. Nothing in tri reaches them except the timing check tri hot (#8872), so using them means remembering:
t27c frontier --watch;t27c frontier --list;t27c silicon ... --skip-hardwareto warm the bitstream cache without the cable;t27c suite --fast --corpus-only;- where the caches live, and their eviction limits.
Change
tri hot <action>, with the command strings in specs/tri/hot/hot.t27:
| action | runs | speed-up behind it |
|---|---|---|
check (default) |
the timing check of #8872 | budgets for a warm frontier and a reuse hit |
watch |
t27c frontier --watch |
a save reruns that spec and its importers; idle at 3% CPU (#8751, #8825, #8856) |
frontier |
t27c frontier --list |
what a build may reuse, ~1 s warm, ~6 s after a rebuild (#8741, #8847) |
prebuild <spec> --top <v> [--pnr-seed N] |
t27c silicon ... --skip-hardware |
the bitstream in the reuse cache ahead of a board run, no cable touched (#8797, #8808, #8814) |
suite |
t27c suite --repo-root . --fast --corpus-only |
every per-spec phase in parallel (#8837, #8840, #8845) |
caches |
reads ~/.cache/t27 |
each cache's entries and size against its eviction limit, read from the generated code of gen_hash_cache.t27 and bitstream_reuse.t27 (#8928, #8933) |
Acceptance criteria
tri hot --helpnames every action.- On this Mac:
tri hotreads OK on both paths;tri hot cachesprints the three caches with their limits;tri hot frontierprints the frontier summary;tri hot prebuild specs/fpga/ternary_link.t27 --top fpga/verilog/ternary_link_jtag.v --pnr-seed 11readsbitstream REUSED;tri hot watchstarts the watch.
- Hand-written foreign lines do not grow.
Boundary
specs/tri/hot/hot.t27
User Scenarios
- Given the
triCLI is installed, when a developer runstri hot --help, then the output lists all six actions:check,watch,frontier,prebuild,suite, andcaches. - Given a Mac with the repository checked out, when a developer runs
tri hot caches, then the command prints the three caches (frontier, bitstream, corpus) with their entry counts and eviction limits. - Given a spec file and its top-level output, when a developer runs
tri hot prebuild specs/fpga/ternary_link.t27 --top fpga/verilog/ternary_link_jtag.v --pnr-seed 11, then the output containsbitstream REUSEDindicating the bitstream cache was warmed without hardware.
Requirements
FR-001: The tri hot command MUST accept a subcommand action with values check, watch, frontier, prebuild, suite, caches, defaulting to check.
FR-002: tri hot check MUST execute the timing check from issue #8872, validating warm frontier and reuse hit budgets.
FR-003: tri hot watch MUST invoke t27c frontier --watch to enable save-triggered incremental rebuilds at ~3% idle CPU.
FR-004: tri hot frontier MUST invoke t27c frontier --list and print the reuse frontier summary.
FR-005: tri hot prebuild <spec> --top <v> [--pnr-seed N] MUST invoke t27c silicon ... --skip-hardware to warm the bitstream reuse cache for the given spec and top module without touching hardware.
FR-006: tri hot suite MUST invoke t27c suite --repo-root . --fast --corpus-only to run all per-spec phases in parallel.
FR-007: tri hot caches MUST read ~/.cache/t27 and print each cache's entries and size against its eviction limit, using data from generated code of gen_hash_cache.t27 and bitstream_reuse.t27.
FR-008: All command strings for the above actions MUST be defined in specs/tri/hot/hot.t27.
FR-009: Hand-written foreign (non-t27) lines in the codebase MUST NOT increase as a result of this change.
Activity
tri hot: every hot-reload speed-up as one word -- watch, frontier, pr…