完整知識讀本 · 面試一週衝刺 · MTK120260317000 · HsinChu
產品經理和架構師定義晶片要做什麼:支援什麼通訊協定、跑多快、功耗預算多少、需要哪些功能模組。產出 spec 文件。
把 spec 翻譯成硬體架構:定義功能方塊(CPU core、DSP、DMA、bus…)、它們之間的通訊介面、pipeline 深度、記憶體階層。
用 Verilog / SystemVerilog 把架構「寫成程式碼」。每個功能模組都用 HDL 描述它的行為。這就是 Front-End Design 的核心。
DV 工程師寫 testbench 來驗證 RTL 行為正確。包含 simulation、formal verification、coverage 分析。這也是 Front-End。
用 EDA 工具(如 Design Compiler)把 RTL 轉成 gate-level netlist——由具體邏輯閘(AND、OR、FF…)組成的電路。這是 Front-End 和 Back-End 的分界。
把邏輯閘放到晶片上的具體位置,然後用金屬線把它們連起來。這是 Back-End(Physical Design)的核心。
用 STA(Static Timing Analysis)確認時序、用 DRC/LVS 確認實體規則。全部通過才能送出。
產出 GDSII 檔案,送去晶圓廠(如 TSMC)製造。這之後就無法修改了。
晶片回來後實際上電測試,確認功能正確。
| Front-End(前端) | Back-End(後端) | |
|---|---|---|
| 又稱 | Digital Design / RTL Design | Physical Design / Layout |
| 在做什麼 | 定義晶片「做什麼」(功能) | 定義晶片「長什麼樣」(物理實現) |
| 核心產出 | RTL code + 驗證通過的 netlist | GDSII 檔案(送工廠的檔案) |
| 關鍵步驟 | RTL 設計、Simulation、Formal Verification、Synthesis | Floorplan、Placement、CTS、Routing、STA、DRC/LVS |
| 寫的語言 | Verilog / SystemVerilog | TCL 腳本驅動 EDA 工具 |
| 你的職位 | ✦ 你在 Front-End,用 AI 輔助 RTL 設計和驗證 | |
| 名詞 | 全名 | 白話解釋 |
|---|---|---|
| RTL | Register Transfer Level | 用暫存器和組合邏輯描述硬體行為的抽象層級 |
| HDL | Hardware Description Language | 描述硬體的程式語言(Verilog、VHDL、SystemVerilog) |
| Netlist | — | 由具體邏輯閘(AND/OR/FF)組成的電路清單 |
| Synthesis | 邏輯合成 | 把 RTL 翻譯成 Netlist 的過程 |
| PPA | Performance, Power, Area | 評估晶片品質的三個核心指標 |
| Tape-out | — | 設計定版,送去工廠製造(之後不能改了) |
| DUT | Design Under Test | 被測試的設計模組 |
| STA | Static Timing Analysis | 不跑模擬,用數學方法檢查所有路徑是否滿足時序 |
| DRC | Design Rule Check | 檢查晶片佈局是否符合製程規則 |
| LVS | Layout vs. Schematic | 檢查佈局和電路圖是否一致 |
| IP | Intellectual Property | 可重複使用的設計模組(如 USB controller、DDR PHY) |
| SoC | System on Chip | 把 CPU、GPU、Modem 等全部整合在一顆晶片上 |
| ASIC | Application-Specific IC | 為特定用途客製化的晶片(對比 FPGA) |
| EDA | Electronic Design Automation | 晶片設計用的軟體工具(Synopsys、Cadence…) |
| DV | Design Verification | 驗證 RTL 設計是否正確的工程領域 |
| UVM | Universal Verification Methodology | 業界標準的驗證框架(SystemVerilog class-based) |
| SVA | SystemVerilog Assertions | 用於 formal verification 的斷言語法 |
| CDC | Clock Domain Crossing | 信號從一個 clock domain 跨到另一個,需特殊處理 |
| GDSII | — | 送去晶圓廠的最終設計檔案格式 |
always block 是同時執行的,LLM 習慣循序思維,容易產生 race condition。
blocking (=) 和 non-blocking (<=) 在模擬中行為完全不同,一般語言沒有對應概念。
| 名稱 | 規模 | 評估 | 最新成績 |
|---|---|---|---|
| VerilogEval | ~156 題 | pass@k | 89.7%(agentic, Claude Sonnet 4) |
| RTLLM | 30 設計 | 語法→功能→PPA | 96%(agentic, GPT-4.1) |
| CVDP | 783 題 | 13 類任務 | 34% pass@1(仍有大量改善空間) |
| 框架 | 核心做法 |
|---|---|
| MAGE | 多 agent(planner, coder, tester, debugger)分工 |
| VerilogCoder | 用 AST 解析輔助 LLM 理解程式碼結構 |
| AIVRIL | 引入 AutoReview agent 做自動化 code review |
| AutoBench | testbench 自動生成 + 迭代修正 |
| AssertLLM | multi-agent pipeline 自動生成 formal assertion |
| 錯誤 | 改善 |
|---|---|
| Blocking/Non-blocking 混用 | System prompt 加入 coding rule |
| FSM 漏掉 default state | CoT:先列所有 state 和 transition |
| 無法轉換 K-map、波形圖 | Correct-by-construction training data |
| 位寬推斷錯誤 | 要求明確宣告所有信號寬度 |
| Reset 邏輯遺漏 | Few-shot 範例包含 reset 模式 |
| 傳統 prompting | Agentic AI | |
|---|---|---|
| 互動 | 一問一答 | 多步驟自主迴路 |
| 工具 | 無 | 可呼叫外部工具/API |
| 迭代 | 人工介入每步 | 自動迭代直到完成 |
| 錯誤處理 | 人工判斷 | 自動 retry / 調整策略 |
compile 和 simulate 兩個 tool。任何支援 MCP 的 AI 工具都能自動呼叫模擬器。」
| 策略 | 做法 | 適用 |
|---|---|---|
| ReAct | Thought→Action→Observation 交替 | 最通用 |
| Plan-and-Execute | 先生成完整計畫再執行 | 步驟明確的任務 |
| Tree-of-Thought | 探索多條路徑 | 需要探索不同方案 |
| Reflexion | 失敗後反思存入 memory | 需從錯誤中學習 |
Blocking = | Non-blocking <= | |
|---|---|---|
| 執行 | 立即更新 | 時間步結束時同時更新 |
| 用於 | always_comb(組合邏輯) | always_ff(循序邏輯) |
| 混用 | 造成 simulation-synthesis mismatch(大忌) | |
always_ff,更新 current_state)always_comb,決定下一狀態)always_comb,產生輸出)
assert:設計必須滿足(違反 = bug)assume:限制輸入合法範圍cover:驗證場景可達性|-> overlapping / |=> non-overlapping / ##N延遲 N cycle
| 工具 | 功能 |
|---|---|
| VCS (Synopsys) | 模擬器(業界最常用) |
| Design Compiler | 邏輯合成(RTL → netlist) |
| JasperGold (Cadence) | Formal verification |
| SpyGlass | Lint / CDC 檢查 |
| Verilator (開源) | 高速模擬器 |
| CocoTB (開源) | Python-based testbench |
| 策略 | 做法 | Verilog 建議 |
|---|---|---|
| Fixed-size | 固定 500 tokens/chunk | 可能切斷 module |
| Recursive | 段落→句子遞進切 | LangChain 預設 |
| Semantic | embedding 相似度斷點 | 品質最高 |
| Code-aware | 以 module 為單位 | 最推薦!保留 port 宣告作前綴 |
| RAG | Fine-tuning | |
|---|---|---|
| 改模型? | 不改 | 改權重 |
| 資料更新 | 即時 | 需重訓 |
| 成本 | 低 | 高(需 GPU) |
| 可解釋 | 高(可追溯來源) | 低(黑盒子) |
| IC 場景 | 查 spec、coding guideline | 學 Verilog 風格 |
| 最佳 | 兩者結合:fine-tune 學風格 + RAG 查規範 | |
| pipe 串聯步驟
| 維度 | LangChain | LangGraph |
|---|---|---|
| 架構 | 線性 Chain(DAG,有向無環圖) | Graph(有向圖,可有環/迴圈) |
| 流程 | A→B→C→D(固定順序) | A→B→C→回到A(可迴圈) |
| 狀態管理 | 隱式(靠 memory module) | 顯式(State 物件,所有 node 共享) |
| 迴圈 | ❌ 不支援 | ✅ 原生支援 |
| 條件分支 | 有限的 Router | 原生 conditional edge |
| Human-in-the-loop | 需自己實作 | 內建 interrupt/resume |
| Debug 難度 | Chain 長了變黑盒子 | Graph 可視化,每個 node 可追蹤 |
| 學習曲線 | 低(快速上手) | 中高(需理解 graph/state 概念) |
| 定位 | 快速 prototype | Production-grade agent |
| 工具 | 定位 | 何時用 |
|---|---|---|
| LangChain | 基礎模組(積木) | 快速組裝 LLM 應用、RAG pipeline |
| LangGraph | Agent 狀態機(圖引擎) | 複雜 agent、迴圈、多步驟流程 |
| LangSmith | 觀測平台(tracing/eval) | Debug、測量品質、regression testing |
| LangServe | 部署 API | 把 chain 包成 REST API 上線 |
| LangFlow | 視覺化拖拉建構 | 非工程師或快速 demo |
| 名稱 | 類型 | 特色 | 適合 |
|---|---|---|---|
| FAISS | 本地端 library | Meta 開源,速度極快 | POC、研究 |
| Chroma | 輕量 DB | Python-native,API 簡單 | 開發 & 小型專案 |
| Pinecone | 雲端 managed | 免維運、自動擴展 | 生產環境 |
| Weaviate | 開源 DB | 支援 hybrid search | 需要 keyword + semantic |
| Milvus | 開源 DB | 高效能、分散式 | 大規模企業應用 |
| 模型 | 維度 | 特色 |
|---|---|---|
| text-embedding-3-large (OpenAI) | 3072 | 品質最高,API 方便 |
| text-embedding-3-small (OpenAI) | 1536 | 成本低,品質仍好 |
| BGE-large-zh | 1024 | 開源,中文表現優異 |
| Voyage Code 3 | 1024 | 專門為程式碼優化 |
| Jina Embeddings | 768 | 開源,支援長文本 |
| 工具 | 介面 | LLM 後端 | MCP 支援 | 特色 |
|---|---|---|---|---|
| Claude Code | CLI | Claude only | ✅ | Anthropic 官方、深度整合 |
| Roo Code | VS Code | 多模型 | ✅ | IDE 內操作、開源 |
| OpenCode | CLI | 多模型 | ✅ | 開源、社群驅動 |
| Cursor | IDE | 多模型 | 部分 | 商用 IDE、AI-native |
| GitHub Copilot | IDE plugin | OpenAI | ❌ | 最普及、code completion 為主 |
| 技巧 | 做法 | 在 Verilog 的應用 |
|---|---|---|
| Few-shot | 提供 2-3 個範例 | 給正確的 counter 範例,再請它生成 FIFO |
| Chain-of-Thought | 要求先分析再寫 | 先列 I/O 信號和寬度,再寫 RTL |
| Self-planning | 先生成計畫再實作 | RTLLM 的 self-planning 策略 |
| Structured output | 指定格式(JSON/XML) | module 和 testbench 分區塊 |
| Role prompting | 設定專家角色 | 「你是 20 年經驗的 ASIC 工程師」 |
| 應用領域 | 具體任務 | 成熟度 |
|---|---|---|
| 程式碼理解 | · 解釋 legacy RTL 程式碼 · 自動加註解 · 摘要設計 spec 文件 | 🟢 高(已落地) |
| 技術文件生成 | · 從 RTL 自動產生設計文件 · 自動整理 release notes | 🟢 高(聯發科已用) |
| Code completion | · Verilog autocomplete · 根據註解補全程式碼 | 🟡 中(聯發科已用) |
| Testbench 生成 | · 自動產生 simulation testbench · 產生 directed test case | 🟡 中 |
| Spec → RTL | · 從自然語言 spec 生成 Verilog module | 🟡 中(簡單模組可行) |
| Formal assertion 生成 | · 從 spec 自動萃取 property 並生成 SVA | 🟠 早期 |
| Debug 輔助 | · 分析 simulation error log · 定位 bug root cause | 🟠 早期 |
| RTL 優化 | · 建議 PPA 優化方向 · 分析 synthesis report | 🔴 研究階段 |
| 完整自動化設計 | · 從 spec 到 tape-out 全自動 | 🔴 遙遠目標 |
| 項目 | 內容 |
|---|---|
| AI 工廠 | NVIDIA DGX SuperPOD,每月約 600 億 tokens 推論 |
| 自研 LLM | Breeze 系列,含 480B 參數繁體中文模型 |
| 已落地應用 | AI code completion、設計文件分析 agent(從流程圖擷取資訊,文件工作從數週→幾天) |
| 推論加速 | TensorRT-LLM + NIM:推論速度 ↑40%,throughput ↑60% |
| Fine-tuning | 用 NVIDIA NeMo 做 domain-specific fine-tuning |
| AI 戰略 | 「AI For Life: From Edge to Cloud」 |
| 旗艦晶片 | Dimensity 9500s(2026/01) |
| AI ASIC | 多個 design win,2026 目標超 10 億美元營收 |
| 合作夥伴 | NVIDIA NVLink Fusion、Google LiteRT NeuroPilot、DENSO 車用 SoC |