varch
무료Decompose an IP requirement into submodules, define interfaces, and generate an architecture document plus per-module requirement files and a top-level skeleton
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Scan project state to determine phase completion, write flow_status.md, and orchestrate the full RTL design flow from architecture to documentation
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Two responsibilities:
./flow_status.md.Input is an IP name, optionally followed by a mode keyword.
Resolve the IP name before anything else — never guess across IPs. flow_status.md and every downstream skill operate on exactly one IP.
Single-IP-repo assumption. The bundled scanner assumes the repo holds one IP: its Phase 2 and Phase 3 checks scan all of ddoc/*_req.md and rtl/ rather than scoping to <ip>_top's hierarchy. With one IP this is exact. If a repo ever holds two IPs, those two phase counts would mix submodules across IPs — scope them to the <ip>_top instantiation hierarchy before relying on the scan (see the note in scan.sh).
.md in the project root (a .md that is not CLAUDE.md, flow_status.md, or other generated/status doc) → use it.| Invocation | Behavior |
|---|---|
vflow [<ip>] | Scan and execute (default): Step 1 → Step 2 → Step 3. |
vflow [<ip>] status (also scan, --scan-only, --dry-run) | Scan only: Step 1 → Step 2, present flow_status.md, then stop. Touch no file but flow_status.md; invoke no downstream skill. |
Never Read a whole .md to compute a status symbol. All status comes from existence / mtime / grep/awk counts, which the bundled scanner already does. (Enumerating RTL_BUG locations for the Step 2 open-issues display is a targeted grep of debug_summary.md, not a whole-file read — that is allowed.) Run the scanner once from the project root; do not reissue per-check commands inline:
bash <skill-dir>/scan.sh <ip>
<skill-dir> is the directory containing this SKILL.md (the running copy — repo skills/vflow/ or the global ~/.claude/skills/vflow/). Resolve scan.sh as the sibling of this file. If it cannot be located or it errors out, fall back to performing the same existence/mtime/count checks inline rather than skipping the scan.
Greenfield is normal. A brand-new IP has only ./ddoc/<ip>.md and no ./rtl yet (Phase 1 creates rtl/). The scanner treats a missing ./rtl as the pre-architecture state and reports P1 PENDING (everything downstream PENDING) — it does not error. ERR: is emitted only when ./ddoc itself is absent (you are not at a project root). So on a greenfield run, proceed straight to Phase 1 (varch); do not treat P1 PENDING as a problem.
It prints one compact line per phase signal: P1 DONE|PENDING, P2 d/n, P3 left=N, P4 DONE|PENDING, P5 RUN|SCAFFOLDED|NONE, P7 DONE|PENDING, and (only when a run exists) FAILED=N, DEBUG=current|stale|none, plus RTLBUG=N when DEBUG=current. A ? value (FAILED=?, RTLBUG=?) means the count row was malformed/absent in run_summary.md/debug_summary.md — inspect that file's breakdown manually rather than assuming 0. RTLBUG is read from the classification breakdown in debug_summary.md's Results section; it depends on that section listing a per-class count. If it prints ERR: …, you are not at a project root or the layout is non-standard — stop and resolve that.
| Phase | DONE | Otherwise |
|---|---|---|
| 1 – Architecture | P1 DONE | PENDING |
| 2 – Design | P2 d/n with n>0 && d==n | ⚠ IN PROGRESS (d/n); n==0 means nothing to design yet → PENDING (Phase 1 not DONE), never DONE |
| 3 – Implementation | P3 left=0 (and Phase 2 DONE) | ⚠ IN PROGRESS (markers remain) |
| 4 – Synthesis | P4 DONE | PENDING |
| 5 – IP Testing | P5 RUN | ⚠ IN PROGRESS if SCAFFOLDED, else PENDING |
| 6 – Debug | FAILED=0, or DEBUG=current with RTLBUG=0 | failures + DEBUG=none/stale → debug pending; DEBUG=current with RTLBUG>0 → ⚠ IN PROGRESS (awaiting fix) |
| 7 – Documentation | P7 DONE | PENDING |
Caveats (one rule each):
//@ is not proof lint/sim passed. Sim-pass is enforced at execution time (Phase 3 pauses on failure), so a re-scan must not upgrade a module on marker absence alone while a known sim failure is unresolved.vtestrun overwrites run_summary.md each re-test while a prior debug_summary.md lingers; DEBUG=stale means that report predates the latest run and does NOT satisfy Phase 6. Treat debug as not-yet-run for the current failures.Overwrite ./flow_status.md (a live snapshot, not history).
✓ DONE, ⚠ IN PROGRESS (N/M), ✗ PENDING, ✗ BLOCKED (<reason>), ✗ ERROR (<reason>). BLOCKED = a prerequisite phase isn't DONE; ERROR = the phase's skill aborted (see Orchestration Rules).vfill → rtl/foo_ctrl.v). May instead be a non-skill state: wait (parked at a user gate, e.g. WAITING on user RTL fix (Phase 6B)), blocked (what must finish first), or error (which phase errored).run_summary.md shows FAILED>0) — the Failed count. If DEBUG=current, list each RTL_BUG root-cause location (one line per unique location); if stale, note debug must be re-run.Scan-only mode stops here — present flow_status.md and invoke no skill.
Otherwise execute the next incomplete phase. A DONE phase is skipped entirely.
[CHECKPOINT]When: Phase 1 PENDING.
Run varch on the IP requirement file; it writes ddoc/<ip>_arch.md and derives the per-submodule _req.md files and rtl/<ip>_top.v.
Checkpoint: present the module decomposition and interfaces; wait for explicit approval. On change requests, edit ddoc/<ip>_arch.md and re-run varch (it regenerates only affected submodules and reports the change set), then re-present. No advance without approval.
[CHECKPOINT per submodule]When: Phase 2 PENDING or IN PROGRESS.
For each submodule in ddoc/ lacking rtl/<module>.v:
vdesign on ddoc/<module>_req.md.One at a time. Do not batch-approve.
[AUTO]When: Phase 3 PENDING or IN PROGRESS.
Run vfill on each rtl/<module>.v (not <ip>_top.v) that still has //@ markers. The top skeleton's //@ are integration notes, not fill directions — never vfill it.
Process pending submodules sequentially, no checkpoints. If vfill fails lint or sim, report and pause — do not continue while errors are unresolved.
[AUTO]When: Phase 3 DONE, Phase 4 PENDING.
Run vsynth on the full IP — target the top module <ip>_top, so the report lands at synth/<ip>_top/synth_report.md (the path the scan checks). No checkpoint; include the Fmax/utilization one-liner in the status and continue.
[AUTO]When: Phase 4 DONE, Phase 5 PENDING or IN PROGRESS.
Run vtestgen (scaffold + generate the suite), then vtestrun. If the bench is already scaffolded with tc_list.md (was IN PROGRESS), resume — don't re-scaffold. After vtestrun, read FAILED:
0 → skip Phase 6, go to Phase 7.>0 → Phase 6.[AUTO + GATE]When: Phase 5 DONE and failures exist.
Run vdebug in batch mode on the IP.
Present: total open failures; every RTL_BUG (classification, file, module, block, one-line description); TC_BUG entries (need testcase fixes); DOC_AMBIGUITY entries (need clarification). State explicitly: "RTL fixes are required before the flow can continue. Signal when fixes are applied."
TC_BUG/DOC_AMBIGUITY don't block. If no RTL_BUG remains, skip the gate and go to Phase 7.
On the user's signal:
vtestrun again — the test result is ground truth that the fix took effect. vtestrun rebuilds every testcase whose RTL/TB sources are newer than its last simulate.log; an RTL fix touches rtl/, so all dependent testcases re-simulate (a regression in a previously-passing testcase is caught, not skipped) while unrelated results are reused. (This overwrites run_summary.md, making the old debug_summary.md stale per the currency rule.)vdebug on them (writes a current debug_summary.md) and return to 6B.Repeat until clear or the user stops.
[AUTO]When: all prior phases DONE and no open RTL_BUG. That precondition is established by 6B/6C, or by Phase 5 with zero failures — Phase 7 is reachable only those ways; by any other path, return to Phase 6.
Run vdoc on the IP. Then re-run Step 1–2 (scan + write flow_status.md) — not the whole skill — and present the all-DONE status as the completion summary.
✗ ERROR (<reason>), surface the skill's output verbatim, never advance. Applies to the [AUTO] phases too. (Tool-unavailable is the one pre-classified abort → ✗ BLOCKED, below.)vdebug never edits rtl//lib/; its probes live only in a disposable testbench include and vdebug removes them.flow_status.md after each phase.✗ BLOCKED (tool unavailable: <tool>), report it, and continue scanning the rest.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Decompose an IP requirement into submodules, define interfaces, and generate an architecture document plus per-module requirement files and a top-level skeleton
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Trace failing signals through the RTL hierarchy, classify root cause, and write a debug report per issue — no fix is proposed
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Generate a design proposal, documentation, and RTL backbone from a requirement file
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Aggregate all per-module documentation into a single comprehensive IP document
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Generate documentation for any RTL module from Verilog source files
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Implement Verilog code from an approved design proposal, then lint and simulate
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.