design-logic-circuit
정보
이 스킬은 부울 함수나 진리표로부터 조합 논리 회로를 설계하여 게이트 수준에서 구현합니다. 기본 게이트, 범용 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-circuitClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
設計邏輯電路
由功能規格轉為門級實現之組合邏輯電路:定輸入輸出,導出最簡布林式,映射至門級電路圖,視需換至通用門基(NAND 唯或 NOR 唯),末以窮舉模擬對照原真值表驗其正確。
適用時機
- 將布林函數實作為物理或模擬之門網
- 設計標準組合積木(加法器、多路選擇器、解碼器、比較器)
- 因製造限制,將任意門網換為 NAND 唯或 NOR 唯形式
- 由規格至電路圖,以教或審數位邏輯設計
- 為 build-sequential-circuit 或 simulate-cpu-architecture 所需之組合資料通路備料
輸入
- 必要:功能規格——擇其一:真值表、布林表達式、輸入輸出行為之文字描述、標準模塊名(如「4 位漣波進位加法器」)
- 必要:目標門庫——不限(AND/OR/NOT)、NAND 唯、NOR 唯,或特定標準單元庫
- 選擇:優化目標——最少門數、最短傳播延遲(關鍵路徑)、或最低扇出
- 選擇:最大扇入限制(如唯 2 輸入門)
- 選擇:永不發生之輸入組合(don't-care)
步驟
步驟一:定電路功能
於合成前備齊電路之介面與行為:
- 輸入信號:列所有輸入信號之名、位寬、有效範圍。多位輸入須定位序(MSB 先或 LSB 先)。
- 輸出信號:列所有輸出信號之名與位寬。
- 真值表:寫全真值表,映每一輸入組合至對應輸出。輸入甚多時,代以代數式或 minterm/maxterm 集。
- Don't-care 條件:辨實務中不發生之輸入組合(如 BCD 之 1010-1111),標為 don't-care。
- 時序要求:記傳播延遲之限。組合電路無時鐘——此「時序」指關鍵路徑上最壞門延遲。
## 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"]
預期: 規格完備無歧義,每一合法輸入組合恰映至一輸出值。
失敗時: 規格有歧(如漏案、同輸入出衝突輸出)時,請澄清。未經明示莫以未指定輸入為 don't-care。
步驟二:導最簡布林式
用 evaluate-boolean-expression 技能為每輸出得最簡式:
- 單輸出函數:為每輸出位應用 evaluate-boolean-expression 得最簡 SOP(或 POS,視何者門數少)。
- 多輸出優化:多輸出有共用子式者,辨可共用之積項以抽之。總門數減,然佈線稍繁。
- XOR 偵測:於真值表中(K-圖之棋盤格)查 XOR/XNOR 模式。XOR 門於 NAND/NOR 唯實現中成本高,於標準庫中則效。
- 記式:錄每輸出之最簡式,計其字面數與積/和項數。
## Minimal Expressions
| Output | Minimal SOP | Literals | Terms |
|--------|-------------|----------|-------|
| F1 | [expression] | [count] | [count] |
| F2 | [expression] | [count] | [count] |
- **Shared sub-expressions**: [list, if any]
預期: 每輸出皆有最簡布林式,多輸出電路之共用子式已辨。
失敗時: 式似非最簡(字面多於函數複雜度所應)時,重行 evaluate-boolean-expression 中 K-圖或 Quine-McCluskey 之步。變數逾 6 時用 Espresso 等啟發式簡化器。
步驟三:映至門級電路圖
將布林式轉為門網:
- 直接映射(SOP):每積項為多輸入 AND 門。諸積之和由 OR 門聚 AND 之輸出。每取反變數需 NOT 門(或以 NAND/NOR 吸之)。
- 門指派:每門記:
- 門類(AND、OR、NOT、XOR、NAND、NOR)
- 輸入信號(依名或另一門之輸出)
- 輸出信號名
- 扇入(輸入數)
- 扇入分解:門之扇入逾限者,分解為小門之樹。例如 4 輸入 AND 於 2 輸入限制下為二 2 輸入 AND 饋第三 2 輸入 AND。
- 電路圖記法:以文字記法繪電路,或以結構化格式述其網表。
## 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]
預期: 網表完備,每輸出可經門鏈溯至原輸入,無浮空(未接)之輸入或輸出。
失敗時: 網表有懸線或反饋環(組合電路所不許)時,重審映射。每信號恰有一驅動,每門輸入須接至原輸入或他門輸出。
步驟四:換為通用門基(選擇性)
換電路為唯用 NAND 或唯用 NOR 門:
- NAND 唯換法:
- 每 AND 門換為 NAND 繼之以 NOT(NAND 輸入共接)。
- 每 OR 門用 De Morgan:
A + B = ((A')*(B'))' = NAND(A', B'),故輸入先 NOT 再 NAND。 - 每 NOT 門換為兩輸入共接之 NAND:
A' = NAND(A, A)。 - 氣泡推移:相鄰取反相消以簡之。兩 NOT 相繼相消。NAND 饋 NOT 即 AND。
- NOR 唯換法:
- 每 OR 門換為 NOR 繼之以 NOT。
- 每 AND 門用 De Morgan:
A * B = ((A')+(B'))' = NOR(A', B')。 - 每 NOT 門換為
NOR(A, A)。 - 施氣泡推移以相消取反。
- 門數比較:錄換前換後之門數。NAND 唯與 NOR 唯之實現常用門較多,然製造較易(晶片上唯一種門)。
## 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]
預期: 所成電路功能等同,唯用目標門類,冗取反已由氣泡推移消之。
失敗時: 換後電路取反多於所應時,重審氣泡推移之步。常誤為忘 NAND 與 NOR 於取反下自對偶——由輸出向輸入一貫施 De Morgan 可免。
步驟五:窮舉模擬驗證
驗電路於每可能輸入皆出正確值:
- 模擬法:輸入至 16 位(65,536 組合)者,窮舉模擬之。更大者用定向測試向量,涵蓋角例、邊界條件、隨機取樣。
- 傳值:每輸入組合,依拓撲序由輸入至輸出逐門傳信號值(門不早於其輸入就緒而估)。
- 對照規格:據步驟一之真值表或所期函數驗每輸出。Don't-care 輸出或 0 或 1 皆可。
- 記結果:錄任何不符,述失敗之輸入組合及期值對實值。
- 時序分析(選擇性):數任一輸入至任一輸出最長路之門層。乘以每門延遲以估最壞傳播延遲。
## 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]
預期: 所有測試向量皆過。電路功能正確,關鍵路徑深度已錄。
失敗時: 某向量失敗時,逐門追該輸入之信號路徑,尋第一出誤值之門。常因:線接錯門輸入、漏取反、NAND/NOR 換法有誤。
驗證
- 所有輸入輸出皆命名,位寬已定
- 真值表或 minterm 列涵蓋所有合法輸入組合
- 布林式為最簡(經 K-圖或 Quine-McCluskey 驗之)
- 網表中每門所有輸入皆接,恰一輸出
- 電路中無組合反饋環
- 扇入限制皆遵(所有門於最大扇入內)
- NAND/NOR 換法(若行之)保持功能等同
- 氣泡推移已施以消冗取反
- 窮舉模擬對所有非 don't-care 輸入組合皆通過
- 關鍵路徑深度已錄
常見陷阱
- 組合反饋環:誤接門輸出回至其自身輸入鏈,即成時序元件(鎖存器),非組合電路。若需狀態,改用 build-sequential-circuit 技能。
- NAND/NOR 換法中遺取反:最常之換法誤為 De Morgan 變換中丟 NOT。由輸出向輸入一貫施氣泡推移,勿以臨時處置。
- 扇入逾限而未分解:5 輸入 AND 於 2 輸入庫中無。分解為平衡樹以減傳播延遲,非線性鏈。
- 忽 don't-care:簡化時不用 don't-care 條件,則電路大於所需。有之則必用。
- 混淆門延遲與線延遲:入門設計中以門延遲為主。實 VLSI 中線延遲(互連電容)可逾門延遲。估時序時須註此限。
- 多輸出之冒險:多輸出共用門時,改一輸出之邏輯可誤傷共用子式。改動後驗所有輸出,非唯所改者。
相關技能
evaluate-boolean-expression-- 導本技能所用之最簡布林式build-sequential-circuit-- 加狀態元件(觸發器)以成時序電路simulate-cpu-architecture-- 以組合積木(ALU、多路選擇器、解碼器)為資料通路元件
GitHub 저장소
연관 스킬
content-collections
메타이 스킬은 콘텐츠 콜렉션(Content Collections)을 위한 프로덕션 검증된 설정을 제공합니다. 콘텐츠 콜렉션은 Markdown/MDX 파일을 Zod 검증이 포함된 타입 안전한 데이터 콜렉션으로 변환해주는 TypeScript 최우선 도구입니다. 블로그, 문서 사이트 또는 콘텐츠 중심의 Vite + React 애플리케이션을 구축할 때 타입 안전성과 자동 콘텐츠 검증을 보장하기 위해 사용하세요. Vite 플러그인 구성과 MDX 컴파일부터 배포 최적화 및 스키마 검증에 이르기까지 모든 것을 다룹니다.
polymarket
메타이 스킬은 개발자들이 Polymarket 예측 시장 플랫폼을 활용한 애플리케이션을 구축할 수 있도록 지원하며, 거래 및 시장 데이터를 위한 API 통합 기능을 포함합니다. 또한 WebSocket을 통한 실시간 데이터 스트리밍을 제공하여 실시간 거래와 시장 활동을 모니터링할 수 있습니다. 이를 통해 거래 전략을 구현하거나 실시간 시장 업데이트를 처리하는 도구를 생성하는 데 활용할 수 있습니다.
creating-opencode-plugins
메타이 스킬은 개발자들이 명령어, 파일, LSP 작업 등 25개 이상의 이벤트 유형에 연결되는 OpenCode 플러그인을 만들 수 있도록 돕습니다. JavaScript/TypeScript 모듈을 위한 플러그인 구조, 이벤트 API 명세, 구현 패턴을 제공합니다. OpenCode AI 어시스턴트의 라이프사이클을 사용자 정의 이벤트 기반 로직으로 가로채거나, 모니터링하거나, 확장해야 할 때 사용하세요.
sglang
메타SGLang은 RadixAttention 프리픽스 캐싱을 활용하여 JSON, 정규식, 에이전트 워크플로우를 위한 고속 구조화 생성에 특화된 고성능 LLM 서빙 프레임워크입니다. 특히 반복되는 프리픽스가 있는 작업에서 상당히 빠른 추론 속도를 제공하여 복잡한 구조화 출력 및 다중 턴 대화에 이상적입니다. 제약 디코딩이 필요하거나 광범위한 프리픽스 공유가 있는 애플리케이션을 구축할 때는 vLLM과 같은 대안보다 SGLang을 선택하십시오.
