name: rtl-conformance-test description: This skill should be used when the user asks to "run conformance test", "check codec standards compliance", "bitexact comparison against JM/HM", "ITU-T conformance suite", "H.264 or H.265 conformance", or when final standards compliance must be verified before tape-out sign-off. user-invocable: true argument-hint: "[--standard H.264|H.265] [--vectors path/to/vectors/]" allowed-tools: Bash, Read, Write, Edit, Task, Grep, Glob
Prerequisites
conformance_report.json(fromref-model) present — ref model gate must pass first.- JM 19.0 (H.264) or HM 16.20 (H.265) installed and on
PATH. - RTL passes
rtl-p5s-func-verify(functional verification complete). - Conformance test vectors present at
sim/conformance/vectors/.
If missing: WARNING — halt and instruct user to resolve the missing prerequisite before proceeding.
Apply steps 1-7 to every requested vector suite — do not stop after the first.
Task(subagent_type="rtl-agent-team:eda-runner", prompt="Run RTL conformance simulation via Bash CLI for each vector in " "sim/conformance/vectors/. Compile and run: " "scripts/run_sim.sh --sim iverilog --top tb_cabac_conformance " "--outdir sim/conformance --trace rtl/cabac_encoder/cabac_encoder.sv " "sim/top/tb_cabac_conformance.sv. " "Compare output with JM 19.0: " "cmp -l sim/conformance/rtl_output.bin sim/conformance/ref/jm_output.bin. " "Report PASS/FAIL per vector with divergence byte offset.")
Task(subagent_type="rtl-agent-team:func-verifier", prompt="Validate sim/conformance/results.json: verify all vectors ran, all have status, " "every FAIL has divergence_byte and expected_hex/actual_hex fields.")
</Tool_Usage>
<Examples>
<example index="1">
<scenario>500 ITU-T H.264 vectors; CABAC encoder RTL; JM 19.0 reference.</scenario>
<expected_output>498 PASS; 2 FAIL at byte offset 1024 (spec §9.3.4.6); vcodec-syntax-entropy-expert identifies CABAC flush bug; RTL fix applied; re-run: all 500 PASS; results.json updated.</expected_output>
</example>
<example index="2">
<scenario>H.265 codec with both encoder and decoder paths; HM 16.20 available.</scenario>
<expected_output>Encoder conformance (RTL→JM decode) and decoder conformance (HM encode→RTL) both run; results.json records HM 16.20 version; 100% bitexact achieved on both paths.</expected_output>
</example>
<example index="3">
<scenario>12 of 500 vectors fail — likely systemic issue.</scenario>
<expected_output>Escalation to ref-model review triggered (>10 failures threshold); root cause traced to ref model feature gap rather than isolated RTL bug; ref-model updated; conformance re-run after ref-model gate passes.</expected_output>
</example>
</Examples>
<Escalation_And_Stop_Conditions>
- JM/HM not available → halt; instruct user to install before proceeding.
- `>10 vectors fail` → likely systemic issue; escalate to `ref-model` for model review before RTL debug.
- Single vector fails repeatedly after fix attempts → escalate to the relevant sub-domain expert (vcodec-syntax-entropy, vcodec-prediction, vcodec-transform-quant, or vcodec-filter-recon) for spec interpretation.
- Testbench uses suffix naming convention (`data_i`, `clk_i`) → fix naming before running conformance.
</Escalation_And_Stop_Conditions>
## Output
- `sim/conformance/results.json` — per-vector PASS/FAIL with JM/HM version, profile/level, and divergence details on failures.
<Final_Checklist>
- [ ] `conformance_report.json` from `ref-model` confirmed present before starting.
- [ ] All conformance testbenches use correct naming (`i_`/`o_` prefix, `{domain}_clk`/`{domain}_rst_n`).
- [ ] All ITU-T conformance vectors run.
- [ ] 100% bitexact match achieved.
- [ ] `sim/conformance/results.json` written with per-vector status, JM/HM version, and profile/level.
- [ ] Every FAIL entry records `divergence_byte`, `expected_hex`, `actual_hex`.
- [ ] Decoder block-level conformance run if design includes a decoder path.
</Final_Checklist>