Erie Verilog Generator
Use this skill for Verilog-2001 RTL generation and existing-RTL analysis/refinement/verify-repair backed by the bundled runtime/verilog_generator Python workflow. Keep generated design RTL artifacts as Verilog .v files and use the stable facade in integration/verilog_adapter.py.
For new RTL generation, expose three user-facing workflow shells:
regular: the standard staged generation pathdeep_review: one extra structured review stage before final RTL emissionagentic_repair: the existingverify_existing_verilog(...)evidence-driven repair flow for existing RTL
These are workflow modes, not alternate correctness gates. Do not treat free-form model self-assessment text such as [DESIGN IS CORRECT] as authoritative validation evidence.
The same skill also exposes two local helper scripts for independent static lint and testbench scaffold generation without widening the skill beyond Verilog-2001:
scripts/verilog_lint.pyfor independent static lintscripts/tb_generator.pyfor a self-checking Verilog testbench scaffold
These helper tools are optional workflow steps. They are part of the skill execution flow when the request benefits from them, but they are not mandatory entry gates.
For existing RTL assets, the same runtime now exposes:
analyze_existing_verilog(...)to emitrtl_analysis.json,project_analysis.json, anddesign_explanation.mdrefine_existing_verilog(...)to emitrtl_transform_plan.jsonplus controlled helper artifacts such as a scaffold testbench, partition wrapper skeleton, merge-assist bundle, or optimize-assist plan bundlecompare_verilog_semantics(...)to emitequivalence.json,qor_report.json, andtransform_validation.jsonverify_existing_verilog(...)to emitproject_analysis.json,verification_plan.json,tb_contract.json,log_diagnosis.json,patch_candidate.json,verification_result.json, andloop_state.jsonThe same verify-repair flow also emitssimulation_slice.json,timing_diagnostic.json,expected_trace.md,waveform_diff.json,testcase_matrix.json,run_summary.json,synth_readiness.json, andterminal_status.jsonso the verification closure is explicit even when the run stays in static mode. When RTL repair is applicable, the same flow also emitsrtl_patch_plan.json,rtl_patch_diff.txt,rtl_intervention.json,post_apply_validation.json, andpost_apply_equivalence.json.
Dependency Preflight
On first use in a Codex installation, and before any remote/Vivado/Vitis-related workflow, run the dependency check from this skill root:
python .\scripts\manage_skill_dependencies.py check --settings .\config\defaults.json
If required dependencies are missing, run prompt and ask the user whether to install each missing dependency before continuing:
python .\scripts\manage_skill_dependencies.py prompt --settings .\config\defaults.json
Install only after the user confirms, then run adapt and tell the user to restart Codex so newly installed skills are discovered. Do not install fpga-agent-skills during normal preflight. If FPGA developer tooling is missing, prefer vivado-developer, vitis-developer, or pds-developer; FPGA-Agent-Skills is manual fallback only. If the user declines required dependency installation, continue only with local static Verilog generation/validation and block remote SSH, Vivado, Vitis, execute, and implement readiness paths. If recommended dependencies are missing, ask the user whether to install or skip them; use skip <dependency-id> only for a user-declined recommended dependency.
FPGA Developer Routing
Before FPGA simulation, synthesis, implementation, constraints, debug, project creation, or other vendor tool work, inspect the developer routing state:
python .\scripts\manage_skill_dependencies.py fpga-route --settings .\config\defaults.json
If both AMD-Xilinx and PangoMicro developer skills are available and no current selection exists, ask the user which vendor to use for this workflow. Persist only the user-confirmed vendor choice:
python .\scripts\manage_skill_dependencies.py select-fpga-vendor --settings .\config\defaults.json amd_xilinx
python .\scripts\manage_skill_dependencies.py select-fpga-vendor --settings .\config\defaults.json pangomicro
Developer routing preference is: vivado-developer, then vitis-developer, for AMD-Xilinx work; pds-developer for PangoMicro work. When any of these developer skills is installed, do not install the FPGA-Agent-Skills Vivado/Vitis group. If no developer skill is installed, treat FPGA-Agent-Skills as a manual fallback that requires explicit user direction and the --allow-fpga-agent-fallback install flag.
Workflow
- Confirm the design intent before generation: module name, ports, clock/reset, behavior, pipeline expectation, interface family, and verification cases.
- Choose the generation shell explicitly when it matters:
regularfor the default staged pipelinedeep_reviewwhen one extra structured self-review stage would improve prompt completeness or reviewabilityagentic_repaironly when starting from existing RTL and needing the verify-repair loop
- Use the staged pipeline:
regular:requirements -> codegen_plan -> python -> rtldeep_review:requirements -> codegen_plan -> python -> review -> rtl
- When the request clearly matches one of the local ADC/DAC board families, set
workflow.use_case_template_idto one ofspi_adc,spi_dac,jesd_adc,jesd_dac, ormxfe_mixedso the runtime can inject the matching board-level template bundle fromassets/use_case_templates/. - Generate a Python reference model before RTL when running the workflow; use it as the semantic contract for the Verilog testbench.
- Streaming is optional and applies only to provider interaction. Use it when the selected provider supports streaming and the host benefits from partial output visibility. The finalized response artifact remains the extraction source of truth.
- Batch generation is generation-only in v1. Use
run_verilog_batch(...)for multiple confirmed specs, keep each case in its own run directory, and do not use batch mode for existing-RTL mutation or decision-resume flows. - Run the mandatory quality gate before claiming usable output.
validate_verilog_artifacts(...)andscripts/validate_verilog_skill.pyare required quality-control steps; skipping optional helpers does not bypass this gate. - Use optional helper tools only when they add value to the request:
- Run
scripts/verilog_lint.pywhen the user asks for independent static lint, standalone review findings, or a quick local lint pass on existing RTL or testbench files. - Run
scripts/tb_generator.pywhen the user asks for a fast self-checking testbench scaffold or when a repair starts from module ports rather than the full staged workflow.
- Run
- If the request includes compile, execute, or implement readiness, continue into the local or remote backend validation path. Prefer Vivado xsim first, then VCS+Verdi, then iverilog/vvp. Use
yosysonly for implement readiness. - If the request starts from an existing RTL file instead of a fresh spec, choose the existing-RTL branch first:
analyze_existing_verilog(...)for structural understanding, feature mapping, and a durabledesign_explanation.mdverify_existing_verilog(...)when the task is to build a log-driven verification loop, classify failures, or prepare patch candidates with explicit automation boundaries; present this path asagentic_repairUsetestbench_sourcewhen the user already has a legacy testbench that should be augmented in place or through a caller-managed overwrite flow.refine_existing_verilog(..., refine_goal="tb_scaffold"|"style_refine"|"partition_assist"|"merge_assist"|"optimize_assist")for controlled assist flows