t27.aiEnglish

Когда они не сходятся

Вы научитесь

Как разбирать расхождение: кто из трёх врёт и как это узнать.

Когда spec, симулятор и плата расходятся, один из них врёт, и само расхождение подсказывает, где искать. Если симулятор сходится со spec, а плата отличается, подозревайте ограничения, тайминг или допущения модели — начинайте с назначений пинов: они лгут чаще всего. Виджет — инструмент триажа ровно для этого класса: перед правкой Verilog-файла он перечисляет каждый spec и генератор, которых правка коснётся, чтобы фикс не уполз молча. Сначала широта (что меняется?), потом глубина (почему именно это?).

Попробуйте

Составьте список триажа: для каждого направления расхождения (spec против симулятора, симулятор против платы) назовите файл, который вы откроете раньше прочих, и почему.

Открыть интерактивный урок →

tri fpga-pins · the blast radius of an edit, before the edit
tri fpga-pins · the blast radius of an edit, before the edit ↗

Before editing trinet_node_core.v: 5 specs pin it by sha256 and 5 generators read those specs. radius: 5 specs, 1 level, the exact set fpga-repin walks after the edit.

specs/tools/trios/tri/fpga-batch-cosim.t27

// SPDX-License-Identifier: Apache-2.0
; specs/tools/trios/tri/fpga-batch-cosim.t27 -- tool gHashTag/BrowserOS:tri/fpga-batch-cosim, the `tri fpga-batch-cosim` command of the trios loop CLI
; Generated by apps/website/scripts/tools-from-trios-tri.mjs from gHashTag/BrowserOS:trios/bin/tri at 7366096248df; do not edit.
; The CLI the loop timers run (`tri drift` holds ~/.local/bin/tri to the tracked copy). It is another program than
; the Rust tri of gHashTag/t27 and the Zig tri of gHashTag/trinity, so the ID is repository-qualified.
; A card is data and carries no test block. ASCII only (L3). phi^2 + 1/phi^2 = 3 | TRINITY

module tool_trios_tri_fpga_batch_cosim;

pub const KIND : str = "tool";
pub const FAMILY : str = "tri-cli";
pub const ID : str = "gHashTag/BrowserOS:tri/fpga-batch-cosim";
pub const REPO : str = "gHashTag/BrowserOS";
pub const QUALIFIED_ID : str = "gHashTag/BrowserOS:tri/fpga-batch-cosim";
pub const SCHEMA : u32 = 2;
pub const COMMAND : str = "tri fpga-batch-cosim";
; The case arm of the dispatcher and the first line of it that does the work.
pub const VARIANT : str = "case arm `fpga-batch-cosim)`, line 1937";
pub const SOURCE : str = "trios/bin/tri";
pub const ENTRY : str = "trios/bin/tri";
pub const SOURCE_COMMIT : str = "7366096248dfb09893e9a7d1a0f1c56ced13d16e";
pub const ROUTED : bool = true;
pub const DISPATCH : str = "exec python3 \"$(git rev-parse --show-toplevel 2>/dev/null || echo .)/conformance/tern_tc_batch_rtl_cosim.py\" \"$@\"";
pub const DOCUMENTED : bool = true;
pub const HELP_LINE : str = "tri fpga-batch-cosim [--passes wq|both] [--keep DIR] -- conformance/tern_tc_batch_rtl_cosim.py: the rehearsal's recorded request stream replayed through formal/tern_tc_layer_rtl_tb.v under iverilog vs a fresh HuntingBatchCell (byte-for-byte; negative control = blind 24-byte framing). Pre-built red: FAILs on the current core at the first SETX tag (no SETX/DOT6 ops yet); PASS is the TERN_TC_BATCH_RTL_PLAN.md core edit's gate. The walk_answers precondition refuses non-adjudicable streams (out-of-range phantom frames: model drops, RTL will answer) loudly instead of reporting a mystery diff; needs iverilog+vvp";
pub const CATEGORY : str = "AX7203 board (tern_tc: receipts, UART, formats)";
pub const ABOUT : str = "conformance/tern_tc_batch_rtl_cosim.py: the rehearsal's recorded request stream replayed through formal/tern_tc_layer_rtl_tb.v under iverilog vs a fresh HuntingBatchCell (byte-for-byte; negative control = blind 24-byte framing). Pre-built red: FAILs on the current core at the first SETX tag (no SETX/DOT6 ops yet); PASS is the TERN_TC_BATCH_RTL_PLAN.md core edit's gate. The walk_answers precondition refuses non-adjudicable streams (out-of-range phantom frames: model drops, RTL will answer) loudly instead of reporting a mystery diff; needs iverilog+vvp";
pub const ABOUT_SOURCE : str = "`tri help` (the heredoc under the help arm of trios/bin/tri)";
pub const ACTIONS : [0]str = [];
pub const ACTIONS_ABOUT : [0]str = [];
pub const ARGS : [2]str = ["[--passes wq|both]", "[--keep DIR]"];
pub const AGENTS : [0]str = [];
pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: the trios CLI is not named by docs/agents/AGENTS_ALPHABET.md or .claude/agents/*.md of gHashTag/t27.";
pub const WHEN_TO_USE : str = "conformance/tern_tc_batch_rtl_cosim.py: the rehearsal's recorded request stream replayed through formal/tern_tc_layer_rtl_tb.v under iverilog vs a fresh HuntingBatchCell (byte-for-byte; negative control = blind 24-byte framing). Pre-built red: FAILs on the current core at the first SETX tag (no SETX/DOT6 ops yet); PASS is the TERN_TC_BATCH_RTL_PLAN.md core edit's gate. The walk_answers precondition refuses non-adjudicable streams (out-of-range phantom frames: model drops, RTL will answer) loudly instead of reporting a mystery diff; needs iverilog+vvp";
pub const WITNESS : str = "source-parse";
pub const WITNESS_SOURCE : str = "gHashTag/BrowserOS:trios/bin/tri at 7366096248dfb09893e9a7d1a0f1c56ced13d16e, read as text (the help heredoc and the top-level case arms); the CLI was not run";
pub const ENABLED : bool = true;

Открыть spec урока в плеере ↗

Все уроки