The answer is always the final fenced `systemverilog` block, so downstream
extractors that take the *last* such fence work unchanged.
## Training data
5,000 records sampled from
[`wyt2000/CodeV-SVA-datasets`](https://huggingface.co/datasets/wyt2000/CodeV-SVA-datasets)
(83,195 records), filtered to those whose answer is a single `assert property`
parseable into an operator/signal tree.
The reasoning was generated, not hand-written, and — importantly — **formally
validated**. For each record an OL-NL statement was produced, a *candidate* SVA
was regenerated from that statement alone, and the candidate was checked against
the golden assertion with JasperGold. Only a **`Full equivalence`** result was
accepted; anything weaker (including one-directional implication) was rejected
and the record retried or replaced. So each retained OL-NL statement is known to
be a semantically exact restatement of its assertion, not merely a plausible one.
System and user turns are byte-identical to the source dataset; only the
assistant turn was replaced.
## Training
|---|---|
| Base | `Qwen/Qwen3-8B` (36 layers, hidden 4096, bf16) |
| Method | Full-parameter SFT (not LoRA) |
| Framework | LLaMA-Factory 0.9.3.dev0, DeepSpeed ZeRO-3 |
| Hardware | 4 × NVIDIA H200 |
| Epochs | 3 (1,875 steps) |
| LR | 1e-5, cosine, warmup ratio 0.1 |
| Effective batch | 8 (1 × 2 grad-accum × 4 GPUs) |
| Max sequence | 16,384 tokens |
| Precision | bfloat16 |
| Final train loss | **0.1725** |
| Runtime | 68 min |
Loss fell from ~1.76 to ~0.12 with gradient norm settling from ~35 to ~0.5.
## Limitations
- **Convention-bound.** Training data consistently uses `tb_reset` as the
`disable iff` condition and a testbench with a `// TODO: ASSERTION` marker.
Prompts departing from that shape may degrade.
- **Single-assertion scope.** Trained only on examples whose answer is exactly
one `assert property`. Multi-assertion or multi-clock requests are out of
distribution.
- **Not verified end-to-end here.** Training loss is not correctness. The
reasoning traces in the *training data* were JasperGold-verified, but this
model card reports no benchmark score for the fine-tuned model itself — treat
generated assertions as proposals to be formally checked, not as correct by
construction.
- **Reasoning is generated.** The decomposition trees come from an LLM pipeline;
the operator structure is mechanical, but the natural-language justifications
in the `reason:` fields were not individually reviewed.
## License
Released under Apache-2.0, matching the `Qwen/Qwen3-8B` base model. Training data
derives from `wyt2000/CodeV-SVA-datasets`; consult that dataset for its own terms.