rtl, alongside lm-eval and evalscope. Scores land in the
same dashboard, so an RTL score and a GSM8K score sit on one row for the same model.
Available benchmarks
rtl-repo’s metric is not comparable to the others. It runs no simulation (there is no
testbench) and reports text similarity; ranking its exact_match next to VerilogEval’s pass@1
is wrong — they do not measure the same thing.Admins: what the image needs
Two things. The simulators are already indeploy/docker/Dockerfile.evalkit (iverilog + verilator).
The harness is yours to install. VerilogEval, RTLLM and CVDP each ship their own problem sets and
testbenches in their own repositories. The platform deliberately does not copy those problems —
when upstream revises a problem, a copy silently becomes a different benchmark while still carrying
the original name. So the platform only defines the contract:
<dir>/rtl_report.json:
CVDP’s agentic track: possible, but not through this path
CVDP has two tracks. The non-agentic track is the one above: generate once, judge functionality, via thertl runner.
The agentic track has the model use tools repeatedly while solving (read files, run simulation,
inspect waveforms, edit and retry). Two properties change how it must be wired:
- It launches containers. The official harness pulls a Docker container per problem as a sandbox. The platform’s evaluation job already runs inside a container — Docker-in-Docker on KubeRay or Slurm needs a privileged container or sysbox, which most internal clusters do not grant, and should not.
- It needs a callable model endpoint, not a weights path.
1
Deploy first
Deploy the version under evaluation as a Model Deployment; take its endpoint and token.
2
Run the harness on a machine that has Docker
Point the CVDP harness at that endpoint. That machine needs to launch containers — typically a
dedicated evaluation host, not a training cluster node.
3
Report scores back
The harness emits a report following the
rtl_report.json contract above; it lands in the same
dashboard.Concretely
--train-run is not decoration: with it, the external scores are attributed to that training run by
the evaluation gate and the model registry. Without it they are an isolated number.
The entry point accepts structured scores only; it does not parse the harness’s report text.
CVDP emits
report.txt and composite_report.txt — text, not JSON. Keep that conversion in your
own script: when upstream changes a line of formatting you change the script, and the platform
entry point stays untouched. The other way round, every upstream formatting tweak breaks ingestion.The token carries one permission: report scores (scope=benchmark). It gets pasted into an
evaluation host’s environment, so it must not also be able to write logs, change job state, or
upload artifacts.