Génération de testbench C++ Verilator

VérifiéSûr

Génère un testbench C++ Verilator pour un module matériel à l'aide de sa spécification spec.json.

Spar Skills Guide Bot
TestingIntermédiaire
25/07/2026
Claude Code
#verilator#cpp#hardware-verification#testbench#spec-driven

Recommandé pour

Synthèse automatique

Génère un banc de test C++ Verilator pour un module matériel à partir de son fichier spec.json dans l’espace de travail, en suivant les conventions du générateur de bancs de test du projet.

Points forts

  • Lit spec.json sur disque, ce qui permet de l’utiliser dans une nouvelle session sans contexte conversationnel préalable.
  • Valide le nom du module en PascalCase et demande une correction si nécessaire.
  • Applique les règles du fichier agents/testbench-generator.md, notamment l’architecture inspirée d’UVM et le format standard PASS/FAIL.
  • Écrit le résultat dans le chemin attendu workspace/<ModuleName>/sim/tb_<ModuleName>.cpp.

Limites

  • Échoue si workspace/<ModuleName>/spec.json n’existe pas et renvoie l’utilisateur vers /chip-agent:requirement-parser.
  • Ne produit que des bancs de test C++ pour Verilator, pas d’autres frameworks ou langages de vérification.
  • L’invocation par le modèle est désactivée : le skill doit être lancé explicitement via la commande slash.
Quand l'utiliser

À utiliser lorsqu’un module possède déjà workspace/<ModuleName>/spec.json et qu’il faut générer un banc de test C++ Verilator avant la simulation.

Quand l'éviter

À ne pas utiliser si le fichier spec.json n’existe pas encore, si le flux de vérification n’est pas basé sur Verilator, ou s’il faut d’abord créer la spécification du module.

Analyse de sécurité

Sûr
Score qualité86/100

The skill uses Read, Write, Grep, Glob, and Bash only to locate files, read a local spec, and create a directory before writing a generated testbench. No destructive commands, network calls, secret handling, or unsafe execution patterns are present. The Bash usage is limited to a safe directory creation command.

Points d'attention
  • •Declares Bash tool but only uses it for mkdir -p, which is benign.
  • •Reads spec.json and an agent definition file from workspace; no network or external data exfiltration.
  • •Writes a generated C++ file to the workspace; no destructive or obfuscated commands.
Comment cette analyse est faite

Exemples

ALU testbench
/chip-agent:testbench ALU
Counter testbench
/chip-agent:testbench Counter
SimpleRISCV testbench
/chip-agent:testbench SimpleRISCV

name: testbench description: Generate a C++ Verilator testbench from a module's spec.json, reading the spec from the workspace directory. disable-model-invocation: true allowed-tools:

  • Read
  • Write
  • Bash
  • Grep
  • Glob

chip-agent:testbench

Generate a C++ Verilator testbench for a hardware module using its spec.json specification.

Usage

/chip-agent:testbench <ModuleName>

Instructions

  1. Extract the module name from $ARGUMENTS. If $ARGUMENTS is empty or blank, ask the user: "Which module should I generate a testbench for? Please provide a PascalCase module name (e.g., ALU, Counter, SimpleRISCV)."

  2. Validate the module name. The name must be PascalCase: first character uppercase, no spaces, no hyphens, only alphanumeric characters. If invalid, inform the user and ask for a corrected name.

  3. Determine the project root directory by finding the nearest ancestor directory of this skill file that contains .claude. Use that directory as the base for all relative paths below.

  4. Read the spec from workspace. Use the Read tool to load:

    workspace/<ModuleName>/spec.json
    

    If the file does not exist, STOP and tell the user: "No spec.json found for <ModuleName>. Run /chip-agent:requirement-parser first to create a specification."

    This step reads spec.json from disk, NOT from conversation context. This ensures the testbench skill works correctly even in a fresh session where no prior conversation about the module exists.

  5. Read the testbench-generator agent definition at agents/testbench-generator.md (relative to the project root). This agent contains the full testbench generation rules, templates, and conventions for both simple and complex (CPU reference model) designs.

  6. Follow the agent's instructions using the spec JSON content to generate a C++ testbench. Apply all rules from the agent definition including:

    • Correct testbench mode selection (simple vs reference-model)
    • UVM-inspired architecture (TestCase struct, driver, monitor, scoreboard, reporter)
    • Verilator port naming with io_ prefix
    • Test vector generation with boundary and edge cases
    • Standardized output format: [TEST N] ... PASS/FAIL and RESULT: PASSED/FAILED X/Y tests
  7. Write the testbench to the workspace path. IMPORTANT: Override the agent's default output path. Write to:

    workspace/<ModuleName>/sim/tb_<ModuleName>.cpp
    

    NOT to the agent's flat-mode default of sim/tb_<ModuleName>.cpp. Ensure the directory exists first:

    mkdir -p workspace/<ModuleName>/sim
    
  8. Confirm to the user:

    • Testbench path: workspace/<ModuleName>/sim/tb_<ModuleName>.cpp
    • Test vector count: N test cases covering M operations
    • Next step: "Run /chip-agent:simulate <ModuleName> to compile and execute the testbench."

Input

$ARGUMENTS -- A PascalCase module name (e.g., ALU, Counter, SimpleRISCV). The module must have a workspace/<ModuleName>/spec.json file created by /chip-agent:requirement-parser.

Output

workspace/<ModuleName>/sim/tb_<ModuleName>.cpp containing a complete C++ Verilator testbench ready for simulation.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/c-verilator-testbench-generator-mrzxuqin/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/c-verilator-testbench-generator-mrzxuqin' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/c-verilator-testbench-generator-mrzxuqin/download' --output '.skill-downloads/c-verilator-testbench-generator-mrzxuqin/SKILL.md.part' && mv '.skill-downloads/c-verilator-testbench-generator-mrzxuqin/SKILL.md.part' '.skill-downloads/c-verilator-testbench-generator-mrzxuqin/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/c-verilator-testbench-generator-mrzxuqin/SKILL.md' && test -s '.skill-downloads/c-verilator-testbench-generator-mrzxuqin/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/testbench' && cp -R '.skill-downloads/c-verilator-testbench-generator-mrzxuqin' '.claude/skills/testbench'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/c-verilator-testbench-generator-mrzxuqin'

openskills read 'c-verilator-testbench-generator-mrzxuqin'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/c-verilator-testbench-generator-mrzxuqin/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires