design-logic-circuit
について
このClaudeスキルは、機能仕様や真理値表からゲートレベル組み合わせ論理回路を設計します。基本ゲートを用いた回路実装、NAND/NORユニバーサル変換の対応、加算器やマルチプレクサなどの標準コンポーネント構築が可能です。ブール論理を検証済みのハードウェア実装可能なネットワークに変換する際にご利用ください。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/design-logic-circuitこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
Design Logic Circuit
Spec → combinational circuit. Define I/O, derive min Bool expr, map → gate schematic, (optional) convert to universal gate basis (NAND/NOR), verify via exhaustive sim.
Use When
- Bool fn → gate net (physical or sim)
- Std combinational blocks (adders, muxes, decoders, comparators)
- Convert arbitrary → NAND-only / NOR-only for mfg
- Teach/review digital logic spec → schematic
- Prep combinational datapath for build-sequential-circuit or simulate-cpu-architecture
In
- Required: Spec — truth table, Bool expr, verbal I/O desc, or std block name (e.g., "4-bit ripple-carry adder")
- Required: Target gate lib — unrestricted (AND/OR/NOT), NAND-only, NOR-only, or std cell lib
- Optional: Optimize goal — min gate count, min prop delay (critical path), min fan-out
- Optional: Max fan-in (e.g., 2-input only)
- Optional: Don't-cares
Do
Step 1: Spec
Interface + behavior before synthesis:
- Inputs: Names, widths, ranges. Multi-bit → bit order (MSB/LSB-first).
- Outputs: Names + widths.
- Truth table: Every input combo → outputs. Many inputs → algebraic or minterms/maxterms.
- Don't-cares: Input combos that can't occur (BCD 1010-1111) → mark.
- Timing: Prop delay constraints. Combinational = no clock → worst-case gate delay through critical path.
## Circuit Specification
- **Name**: [descriptive name]
- **Inputs**: [list with bit widths]
- **Outputs**: [list with bit widths]
- **Function**: [verbal description]
- **Truth table or minterm list**: [table or Sigma notation]
- **Don't-care set**: [d(...) or "none"]
→ Unambiguous spec, every legal input → exactly one output.
If err: Ambiguous (missing cases, conflicting outputs) → clarify. Don't assume don't-care unless told.
Step 2: Derive min Bool expr
evaluate-boolean-expression skill:
- Single-output: Each bit → min SOP (or POS, whichever fewer gates).
- Multi-output: Shared sub-exprs → factor out. Fewer gates + more routing.
- XOR detection: Checkerboard patterns in K-map. XOR expensive in NAND/NOR-only, efficient in std libs.
- Record: Min expr each output + literal count + term count.
## Minimal Expressions
| Output | Minimal SOP | Literals | Terms |
|--------|-------------|----------|-------|
| F1 | [expression] | [count] | [count] |
| F2 | [expression] | [count] | [count] |
- **Shared sub-expressions**: [list, if any]
→ Min expr each output + shared sub-exprs ID'd.
If err: Non-minimal (more literals than expected) → re-run K-map or Quine-McCluskey. >6 vars → Espresso.
Step 3: Map → gate schematic
Bool → gate network:
- Direct SOP: Product term → multi-input AND. Sum → OR fed by ANDs. Complemented var → NOT (or use NAND/NOR to absorb).
- Gate assignment: Each gate:
- Type (AND, OR, NOT, XOR, NAND, NOR)
- Inputs (name or from other gate)
- Output name
- Fan-in
- Fan-in decomp: Exceeds max → tree of smaller. 4-input AND w/ 2-input → 2 two-input ANDs feeding 3rd.
- Notation: Text netlist or structured.
## Gate-Level Netlist
| Gate ID | Type | Inputs | Output | Fan-in |
|---------|------|-------------|--------|--------|
| G1 | NOT | A | A' | 1 |
| G2 | AND | A', B | w1 | 2 |
| G3 | AND | A, C | w2 | 2 |
| G4 | OR | w1, w2 | F | 2 |
- **Total gates**: [count]
- **Critical path depth**: [number of gate levels from input to output]
→ Complete netlist, every output traceable to primary inputs, no floating.
If err: Dangling wires or feedback loops (invalid combinational) → recheck. Every signal = exactly one driver, every gate input connects.
Step 4: Convert → universal basis (optional)
NAND-only or NOR-only:
- NAND-only:
- AND → NAND + NOT (NAND tied inputs)
- OR → De Morgan:
A + B = ((A')*(B'))' = NAND(A', B')→ NOTs then NAND - NOT →
A' = NAND(A, A) - Bubble pushing: Cancel adjacent inversions. 2 NOTs series cancel. NAND → NOT = AND.
- NOR-only:
- OR → NOR + NOT
- AND → De Morgan:
A * B = ((A')+(B'))' = NOR(A', B') - NOT →
NOR(A, A) - Bubble push cancels inversions.
- Gate count: Before + after. NAND/NOR-only typ more gates but simplify mfg.
## Universal Gate Conversion
- **Target basis**: [NAND-only / NOR-only]
- **Gates before conversion**: [count]
- **Gates after conversion**: [count]
- **Gates after bubble-push optimization**: [count]
- **Conversion netlist**: [updated table]
→ Functionally equiv, redundant inversions eliminated via bubble push.
If err: More inversions than expected → re-examine bubble push. Common: forgetting NAND/NOR self-dual under complementation. De Morgan consistently from outputs back → inputs.
Step 5: Verify via exhaustive sim
Correct for every input:
- Approach: ≤16 inputs (65,536 combos) → exhaustive. Larger → targeted vectors + corner cases + random.
- Propagate: Each combo, propagate gate by gate in topological order.
- Compare: Check each output vs truth table. Don't-cares → 0 or 1.
- Record: Mismatches w/ input + expected vs actual.
- Timing (optional): Count gate levels longest path. × per-gate delay → worst-case prop.
## Simulation Results
- **Total test vectors**: [count]
- **Vectors passed**: [count]
- **Vectors failed**: [count, with details if any]
- **Critical path**: [gate sequence, e.g., G1 -> G3 -> G7 -> G9]
- **Critical path depth**: [N gate levels]
- **Estimated worst-case delay**: [N * gate_delay]
→ All vectors pass. Functional + critical path docs.
If err: Vector fails → trace path gate by gate. First gate w/ incorrect output. Common: wire wrong input, missing inversion, NAND/NOR conversion err.
Check
- All I/O named + widths spec'd
- Truth table covers all legal combos
- Bool exprs min (K-map/Quine-McCluskey)
- Every gate all inputs connected + exactly one output
- No combinational feedback
- Fan-in constraints respected
- NAND/NOR conversion preserves equivalence
- Bubble push eliminates redundant inversions
- Exhaustive sim passes (non-don't-cares)
- Critical path depth docs
Traps
- Combinational feedback: Output → own input chain = latch, not combinational. State needed → build-sequential-circuit.
- Forget inversions in NAND/NOR: Most common err = dropping NOT in De Morgan. Bubble push systematically outputs → inputs, not ad hoc.
- Exceed fan-in w/o decomp: 5-input AND not in 2-input lib. Balanced tree min delay, not linear chain.
- Ignore don't-cares: Unexploited → bigger circuit. Always include when avail.
- Gate vs wire delay: Intro design → gate delay dominates. Real VLSI → wire delay can exceed. Note when estimating.
- Multi-output hazards: Shared gates → change one affects shared sub-expr. Verify all outputs after any mod.
→
evaluate-boolean-expression— derive min Bool expr for this skillbuild-sequential-circuit— add state (flip-flops) → sequentialsimulate-cpu-architecture— use blocks (ALU, mux, decoder) as datapath
GitHub リポジトリ
関連スキル
content-collections
メタこのスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
