t27.aiEnglish

Захватить пересечение

Вы узнаете

Как захватили одно пересечение в точке, где оно приземляется: на самих RX-приёмных триггерах, и что напечатал записанный запуск.

Одно пересечение, захваченное там, где оно приземляется: на самих RX-приёмных триггерах. Команда tri fpga-rxcap моделирует захват E3 RX на плате AX7203 (XC7A200T в корпусе FBG484) в том же SDF, что и прошлый модуль, и её записанный запуск напечатал: hold по спадающему фронту 10900 пс на rxctl_n, при RXC на 2,4 нс позади своих данных через BUFG, так что rxd_p1 и полубайт RX_ER снимают новое значение в окне, которое модель называет. Спека — карточка инструмента: константы для страницы инструмента, 0 тестов, и запись показывает, как нативный отчёт говорит именно это. Выводы, которые она захватывает, — дальний конец каждого урока перед этим.

Попробуйте

В записи найдите записанный запас hold и задержку через BUFG; затем в окне спеки прочитайте источники данных карточки и скажите, чего модель не измеряла.

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

t27c on fpga-rxcap.t27 -- the RX capture card, native
t27c on fpga-rxcap.t27 -- the RX capture card, native ↗

The tri fpga-rxcap tool-card spec reports 0 tests -- constants for a tool page, not a test suite; the first lines show what it carries.

specs/tools/trios/tri/fpga-rxcap.t27

// SPDX-License-Identifier: Apache-2.0
; specs/tools/trios/tri/fpga-rxcap.t27 -- tool gHashTag/BrowserOS:tri/fpga-rxcap, the `tri fpga-rxcap` 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_rxcap;

pub const KIND : str = "tool";
pub const FAMILY : str = "tri-cli";
pub const ID : str = "gHashTag/BrowserOS:tri/fpga-rxcap";
pub const REPO : str = "gHashTag/BrowserOS";
pub const QUALIFIED_ID : str = "gHashTag/BrowserOS:tri/fpga-rxcap";
pub const SCHEMA : u32 = 2;
pub const COMMAND : str = "tri fpga-rxcap";
; The case arm of the dispatcher and the first line of it that does the work.
pub const VARIANT : str = "case arm `fpga-rxcap)`, line 1946";
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 = "cd \"$HOME/trinity-fpga\" && { if [ $# -eq 0 ] && [ -f conformance/model_runs/e3_rx_capture_model.log ]; then exec cat conformance/model_runs/e3_rx_capture_model.log; fi; exec nice -n 19 python3 conformance/e3_rx_capture_model.py \"$@\"; }";
pub const DOCUMENTED : bool = true;
pub const HELP_LINE : str = "tri fpga-rxcap [--self-test] -- E3 RX capture at the RX flip-flops in the same SDF (conformance/e3_rx_capture_model.py; spec specs/trinet/e3_rx_capture_model_ax7203.t27; reads /tmp/e3txhold, pinned by sha, runs no tool): with no argument prints the one recorded run (conformance/model_runs/e3_rx_capture_model.log) if it exists, else runs it once (seconds); exit 0 PASS, 1 FAIL, 2 NO VERDICT. PASS 00:21Z 2026-09-28: falling-edge hold 10900 ps on rxctl_n; RXC 2.4 ns behind its data through the BUFG, so rxd_p1 and an RX_ER nibble sample the new value over x -2.5..+0.5 ns (board ed should stay 0)";
pub const CATEGORY : str = "AX7203 board (tern_tc: receipts, UART, formats)";
pub const ABOUT : str = "E3 RX capture at the RX flip-flops in the same SDF (conformance/e3_rx_capture_model.py; spec specs/trinet/e3_rx_capture_model_ax7203.t27; reads /tmp/e3txhold, pinned by sha, runs no tool): with no argument prints the one recorded run (conformance/model_runs/e3_rx_capture_model.log) if it exists, else runs it once (seconds); exit 0 PASS, 1 FAIL, 2 NO VERDICT. PASS 00:21Z 2026-09-28: falling-edge hold 10900 ps on rxctl_n; RXC 2.4 ns behind its data through the BUFG, so rxd_p1 and an RX_ER nibble sample the new value over x -2.5..+0.5 ns (board ed should stay 0)";
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 : [1]str = ["[--self-test]"];
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 = "E3 RX capture at the RX flip-flops in the same SDF (conformance/e3_rx_capture_model.py; spec specs/trinet/e3_rx_capture_model_ax7203.t27; reads /tmp/e3txhold, pinned by sha, runs no tool): with no argument prints the one recorded run (conformance/model_runs/e3_rx_capture_model.log) if it exists, else runs it once (seconds); exit 0 PASS, 1 FAIL, 2 NO VERDICT. PASS 00:21Z 2026-09-28: falling-edge hold 10900 ps on rxctl_n; RXC 2.4 ns behind its data through the BUFG, so rxd_p1 and an RX_ER nibble sample the new value over x -2.5..+0.5 ns (board ed should stay 0)";
; public/term/tri-fpga-rxcap/meta.json lists 1 run(s) of `tri fpga-rxcap`; recorded with the live ~/.local/bin/tri,
; not a build of SOURCE_COMMIT. The site plays it at the end of this card.
pub const CAST : str = "term/tri-fpga-rxcap/session.cast";
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;

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

Все уроки