Home
Explore Uedu
Student Console
Register as Member/Login
(2) In future presentations of the research findings, in addition to the course project website and public presentations, your real name and personal information will not appear in this research report. If you are interested in the research results, we can provide you with an executive summary after the study is completed.
問卷中心
Teacher Console
Course Setup
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

0

Local AI

--

CISOSE26 本地 AI UG26
政治大學 AQI 19 29°C

AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

軟體與 EDA
軟體與 EDA

RTL 與邏輯合成

工程師寫的不是電路,而是一種描述電路行為的程式碼。

RTL 與邏輯合成 概念示意插圖
概念示意插圖(AI 生成,僅供輔助理解,非精確技術圖示)
研究所  ·  約 17 分鐘  ·  RTL邏輯合成EDA

工程師寫的不是電路

數位晶片設計裡,工程師不畫電晶體、也不擺閘——他寫的是 RTL(register-transfer level,暫存器傳輸層) 程式碼,一種描述電路行為的硬體描述語言(HDL,主要為 Verilog/SystemVerilog 與 VHDL)。RTL 的抽象核心是:把系統看成一群暫存器(register) 在時脈邊緣之間互相傳遞資料,中間夾著組合邏輯(combinational logic) 做運算。工程師描述「每個時脈週期,哪些暫存器根據哪些輸入更新成什麼」,至於這些運算要用幾個 NAND、怎麼擺,交給工具。

這個抽象是現代晶片設計的基石:它讓人類用近似程式的方式思考百億電晶體系統,而不必陷在電晶體層級。

RTL 的兩種骨架:時序邏輯與組合邏輯

RTL 程式碼本質對應兩種硬體:

  • 時序邏輯(sequential logic):由時脈驅動的暫存器(正反器 flip-flop)。在 Verilog 中以 always @(posedge clk) 描述,代表「時脈上升緣才更新」。它是電路的狀態記憶
  • 組合邏輯(combinational logic):輸出只取決於當前輸入、無記憶,描述為連續賦值或 always @(*)。它是暫存器之間的運算

寫 RTL 有一條鐵律:可合成(synthesizable)子集。HDL 同時是模擬語言與設計語言,許多語法(延遲 #initial、檔案 IO)只能模擬、無法變成硬體。寫設計必須限制在可合成子集內,否則合成器報錯或產生非預期電路。常見失效模式包括意外推出鎖存器(inferred latch)(組合邏輯漏寫分支)、多驅動衝突、以及阻塞/非阻塞賦值(= vs <=)誤用導致模擬與硬體行為不一致。

邏輯合成:從行為到閘的三步精煉

邏輯合成(logic synthesis) 是把 RTL 自動轉成閘級網表(gate-level netlist) 的過程,由合成器(synthesizer)在三個階段完成:

1. 轉譯(elaboration / translation)
   解析 RTL,推斷出暫存器、運算子、控制流,
   建立與技術無關的中間表示(generic boolean network)。

2. 最佳化(optimization)
   對布林網路做與技術無關的化簡:
   常數傳播、共用子運算式、資源共享、邏輯重組。

3. 映射(technology mapping)
   把化簡後的布林邏輯對應到目標製程的標準單元庫,
   在滿足時序約束下選最佳的閘組合。

第三步是合成「接地」的關鍵:它必須讀標準單元庫(.lib / Liberty)——每個單元(INV、NAND2、AOI21、DFF…)都附特徵化好的延遲、輸入電容、功耗模型,合成器據此估算時序並選單元。

QoR 與 PPA:合成的成績單

合成結果的好壞用 QoR(quality of results) 衡量,核心是 PPA 鐵三角

維度 合成的手段 取捨
performance(效能) 選快的大單元、加並行、重定時 換來面積與功耗上升
power(功耗) 時脈閘控、多臨界電壓、降單元尺寸 可能變慢
area(面積) 共享資源、選小單元、邏輯化簡 可能變慢或增功耗

三者無法同時最佳化——這是合成的本質取捨。要快就得用驅動力強的大單元(耗電耗面積),要省電省面積就得收斂單元尺寸(可能拖慢)。合成器在工程師給的約束(SDC) 下,於這個三維空間找一個可接受的解。約束太鬆,工具不努力、PPA 差;約束太緊到物理不可能,工具空轉甚至報無解。

約束與時序:合成怎麼知道「夠快」

合成不是憑空最佳化,而是約束驅動。最關鍵的約束是時脈週期,它定義了一條暫存器到暫存器路徑允許的最大延遲。合成器估算每條路徑的延遲,目標是讓時序餘裕(slack)非負:

$$\text{路徑延遲} \approx \text{起點正反器 clk-to-Q} + \text{組合邏輯延遲} + \text{連線延遲}$$

$$\mathrm{slack} = \text{時脈週期} - \mathrm{setup} - \text{路徑延遲}$$

$\mathrm{slack} < 0$ → 違規,合成器會加速這條路徑(換大單元、拆邏輯)。

合成階段拿不到真實連線延遲(還沒佈局繞線),只能用線負載模型(wire load model) 估算,這造成「合成說過、佈局後卻違規」的落差。現代流程因此走向實體感知合成(physical-aware synthesis),在合成時就粗略佈局以得到較準的連線估計,縮小與後段的差距。

進階技術與驗證

  • 重定時(retiming):在不改功能下,把正反器在組合邏輯間搬移,平衡各級延遲、提升頻率。
  • 高階合成(HLS):再往上一層,從 C/C++/SystemC 自動產生 RTL,讓演算法工程師也能參與硬體設計,常用於 DSP、AI 加速器的快速探索。
  • 形式等價驗證(formal equivalence checking):合成把 RTL 大幅改寫,怎麼確定改完還等價? 用形式工具數學證明「合成前的 RTL」與「合成後的網表」邏輯等價,而非靠模擬抽樣——這是簽核中不可省的一道,避免最佳化引入功能錯誤。

為什麼這一層決定一切

RTL 與合成是整條 RTL→GDSII 流程的源頭。架構與 RTL 寫法決定了 PPA 的天花板——後段佈局繞線只能在合成給定的網表上微調,無法逆轉一個爛架構。一個資料路徑切得好、管線分得對的 RTL,合成出來又快又省;反之,後段工程師再努力也補不回來。這就是為何業界說:「PPA 是在 RTL 就輸贏的,後段只是把它實現出來。」

延伸閱讀:〈從 RTL 到 GDSII:數位設計流程〉、〈佈局與繞線(P&R)〉。

接著問 AI 助教

點一下複製提問,到 ClassroomGPT、優學伴(AIDA)或你的 UeduGPTs 頻道貼上,AI 會引用本專區內容回答。

AI 共讀助教正在陪你讀:RTL 與邏輯合成
嗨!我是這篇文章的共讀助教,只根據〈RTL 與邏輯合成〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。