用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/babyworm/rtl-agent-team --skill rtl-block-contract-test-policy命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Initialize RTL project workspace: directory structure, coding rules, phase guides. Run once per project. Triggers: 'init project', 'new project'.
Internal reference: rtl p5 verify policy (agent-loaded; do not invoke).
P5 formal verification: SVA proof via SymbiYosys BMC/induction on lint-clean RTL. Triggers 'formal verification', 'prove property', 'SVA'.
基于 SOC 职业分类
正在显示 SKILL.md
| name | rtl-block-contract-test-policy |
| description | Internal reference: rtl block contract test policy (agent-loaded; do not invoke). |
| user-invocable | false |
Each block maintains its contract tests under:
sim/{block}/contract/
{block}_if_contract_tb.sv # Interface compliance tests
{block}_timing_check.sv # Timing assertion checks
{block}_stub.sv # Mock for counterpart blocks
{block}_if_contract_tb.sv)Verifies that the block's ports conform to the frozen interface definitions:
rtl/intf/*_if.sv signal namesrtl/pkg/codec_if_pkg.sv type definitions{block}_timing_check.sv)Verifies timing contracts embedded in interface files:
{block}_stub.sv)Provides a mock implementation of the block for use by other blocks' tests:
When merging a block into the integrated trunk, execute tests in this order:
Target block contract test: Run the merging block's own contract tests
sim/{block}/contract/{block}_if_contract_tb.sv → PASS required
sim/{block}/contract/{block}_timing_check.sv → PASS required
Cross-block integration test: Run integration tests with already-merged upstream blocks
sim/integration/{upstream}_{block}_integration_tb.sv → PASS required
Uses real upstream block (already merged) + stubs for not-yet-merged downstream blocks.
Blocks merge in dependency order — upstream blocks first:
1. entropy (no upstream dependency — merges first)
2. tq (depends on: entropy)
3. me (depends on: dpb for references, but dpb merges later — use dpb_stub)
4. mc (depends on: me, dpb — use dpb_stub)
5. intra (depends on: none for merge — reconstruction is downstream)
6. filter (depends on: reconstruction output)
Rationale: Upstream-first ensures that when a block merges, its upstream dependencies are already real (not stubs), providing higher-fidelity integration tests.
Exception: me and mc depend on dpb for reference frames, but dpb is a
downstream consumer of filter. Use dpb_stub.sv for me/mc merge tests, then
re-run integration tests after dpb merges.
On FAIL, the merge-time verification allows up to 3 retry attempts:
Attempt 1: Run contract tests → FAIL
→ Block worker fixes the issue, re-runs
Attempt 2: Run contract tests → FAIL
→ Block worker applies second fix, re-runs
Attempt 3: Run contract tests → FAIL
→ ESCALATE to user via coordinator
After 3 consecutive failures:
MERGE_BLOCKEDSendMessage to leader: MERGE_BLOCKED: {block} — {failure_summary}AskUserQuestionAfter each successful merge, re-run all previously merged blocks' contract tests to ensure the new block introduction does not break existing integrations.
sim/{block}/contract/{block}_stub.svEach stub MUST provide:
module {block}_stub (
// All ports matching the block's interface connections
// Directly derived from rtl/intf/*_if.sv
);
// 1. Default output drivers (valid=0, data=0)
// 2. Programmable response mode:
// - IDLE: all outputs deasserted
// - ECHO: reflect inputs after N-cycle delay
// - PATTERN: output predefined test vectors
// 3. Backpressure injection:
// - ready deassertion probability (0-100%)
// - maximum consecutive stall cycles
// 4. Transaction logging:
// - Log all input transactions to file
// - Configurable verbosity level
endmodule
As blocks merge in upstream-first order, stubs are progressively replaced:
Before entropy merge: ALL blocks use stubs
After entropy merge: entropy is real, others use stubs
After tq merge: entropy + tq are real, others use stubs
...
After filter merge: ALL blocks are real, no stubs needed
Each merge step replaces one stub with the real block in integration tests. Previously passing integration tests MUST be re-run with the real block.