# Ace Rtl

> Consolidated ACE-RTL skill for running an iterative generator-reflector-coordinator RTL agent on CVDP. Use for CVDP official repo setup with native or Docker environments, no-cheating benchmark runs, role-based external LLM routing, unique outputs logging, task-driven CVDP prompt guidance, and real pass-rate reporting.

- Skill: `nvlabs/ace-rtl` (Agent Skill, multi-file: 88 files)
- Install (CLI): `npx skillmds@latest add nvlabs/ace-rtl`
- Raw SKILL.md: https://api.skillmd.com/api/skills/nvlabs/ace-rtl/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: nvlabs (https://skillmd.com/u/nvlabs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/nvlabs/ace-rtl

---


# ACE-RTL

Use this skill as the entry point for ACE-RTL work. It contains the agent
protocol, CVDP runbooks, role guidance, optional external LLM bridge, and
task-driven CVDP prompt guidance.

## Core Rules

- Clone the official CVDP benchmark code from
  `https://github.com/NVlabs/cvdp_benchmark.git` into this workspace and follow
  that checkout's own setup instructions. Do not use a CVDP checkout, setup,
  environment, or data outside the current workspace unless the user explicitly
  authorizes it.
- Report final pass/fail only from the real CVDP evaluator.
- When Docker is unavailable or the daemon socket is inaccessible, use the
  checked-in native runner `scripts/ace_cvdp_native_runner.py` after
  `setup-native.md`. Do not hand-roll Docker-to-native path translation.
- Native CVDP runs must execute under the repo-local `.cvdp-native` Python
  environment when it exists. Missing Python packages, pytest
  collection/import failures, or missing harness env variables are
  `INFRA_SETUP`, not candidate RTL failures.
- Before starting any native CVDP datapoint workers or LLM calls, verify the
  selected rows' harness services have their required simulator tools on
  `PATH`. Rows that request Xcelium/Cadence services require a configured
  simulator command such as `irun` or `xrun` and usually `imc`; if either is
  missing, use the `eda_tool_setup` skill to configure site-provided EDA tools
  before classifying the run as setup-blocked.
- For native commercial/Cadence rows, copied harness command files must have
  container paths, configured Cadence command names, and a default Cadence
  timescale option rewritten before execution. The runner should inject
  `-timescale 1ns/1ps` into `xrun`/`irun` commands unless the harness already
  sets a timescale.
- Do not classify candidate RTL reset/register/output initialization failures
  as `INFRA_SETUP` just because a simulator or assertion line says "failed to
  initialize". Setup classification is for missing tools, missing Python
  modules, invalid harness environment variables, license/database/tool
  initialization failures, collection failures, or native path/setup breakage.
- The native runner must post-process generated SystemVerilog before CVDP
  evaluation, save bounded evaluator reports, and feed reports through the
  reusable `FocusedDebugger` reflector and `FreshStartCoordinator` coordinator
  components.
- Preserve every generated target path declared by the selected CVDP row. For
  multi-file targets, generator prompts must list every target file and require
  one complete `// TARGET_FILE: <path>` section per file.
- Native-runner generator prompts must be task-aware and data-driven from the
  selected CVDP row, target paths, prompt, and harness services. Do not
  hard-code a partial list of task IDs or inject one task shape's guidance into
  unrelated CVDP task types.
- Reusable RTL-agent components live under `scripts/ace_rtl_agent/` and must be
  launched through `scripts/ace_agent_runner.py`.
- Do not use hidden solutions, golden outputs, private reference code,
  expected answer tables, or injected bug internals.
- Do not hardcode datapoint-specific answers or recognizable test vectors.
- Do not modify immutable harness, source, or helper files unless the task
  explicitly lists them as generated targets.
- During native-runner iteration, role agents and external models may receive
  public prompt/context, generated targets, current candidates, role history,
  and bounded evaluator reports emitted by the real CVDP run. Do not separately
  open, copy, or inject private scorer files, real test files,
  expected-output code, mutation definitions, or harness internals.
- Default CVDP scheduling is 4 datapoints in parallel, with 30 max iterations
  per process and 5 parallel independent processes per datapoint.
- Native evaluator subprocesses must be bounded and reaped after timeout or
  service exit.
- Every CVDP run must create a unique directory under `outputs/`, stream run
  logs to `run.log`, and write a Markdown result report with overall pass rate
  for the requested runtime filter, unique solved datapoint IDs, failed
  datapoint IDs, and useful run metadata.
- By default, do not call external LLM APIs. Use coding-agent reasoning and
  spawned role agents unless the user explicitly assigns a model to a role.
- If the user assigns a model to a role, use `scripts/llm_call.py` and
  `scripts/extract_solution.py`.

## Role Agents

Spawn three role agents for non-trivial runs:

- generator: produces the next complete target RTL, testbench, assertion, or
  optimization artifact.
- reflector: use the reusable `FocusedDebugger` component to analyze the latest
  evaluator report and create focused fix guidance.
- coordinator: use the reusable `FreshStartCoordinator` component to maintain
  history and decide restart.

Read `references/agent-workflow.md` for the full loop,
`references/role-guidance.md` for role prompts, and
`references/agent-components.md` when selecting or modifying the local reusable
implementation.

## CVDP Setup

- Dataset setup: `references/benchmarks/cvdp/setup-datasets.md`
- Native no-Docker setup: `references/benchmarks/cvdp/setup-native.md`
- Docker setup: `references/benchmarks/cvdp/setup-docker.md`
- Concrete run checklist: `references/benchmarks/cvdp/run-cvdp.md`
- EDA tool setup skill: `../eda_tool_setup/SKILL.md`

## CVDP Task Guidance

Read `references/benchmarks/cvdp/cid-index.md`, inspect the JSONL row, target
paths, prompt, and harness services, then choose guidance based on task behavior
rather than hard-coded task IDs.

## Optional LLM Calls

Read `references/llm-routing.md` only when the user explicitly assigns external
models to roles. The default hosted provider is NVIDIA Inference API with model
`nvidia/nemotron-3-ultra-550b-a55b`; users may replace that path with
`ACE_RTL_LLM_SCRIPT`.

