Verilog 邏輯綜合

2022-05-20 14:40 更新

本教程經常有提及綜合這個詞語?;蛘哒f有些邏輯不能綜合成實際電路,或者說有些邏輯設計綜合后的電路會有一些安全隱患。本章就簡單介紹下邏輯綜合的相關知識,僅從理論層次和普遍認知的角度來闡述。待那個懵懂求知少年變成中年禿頂大叔,再來介紹邏輯綜合的具體實踐。好像也沒有多少時日了(手動狗頭)。

基本概念

綜合,就是在標準單元庫和特定的設計約束基礎上,把數字設計的高層次描述轉換為優(yōu)化的門級網表的過程。標準單元庫對應工藝庫,可以包含簡單的與門、非門等基本邏輯門單元,也可以包含特殊的宏單元,例如乘法器、特殊的時鐘觸發(fā)器等。設計約束一般包括時序、負載、面積、功耗等方面的約束。

無論是數字芯片設計,還是 FPGA 開發(fā),現在綜合過程基本都是借用計算機輔助邏輯綜合工具,自動的將高層次描述轉換為邏輯門電路。設計人員可以將精力集中在系統(tǒng)結構方案、高層次描述、設計約束和標準工藝庫等方面,而不用去關心高層次的描述怎么轉換為門級電路。綜合工具在內部反復進行邏輯轉換、優(yōu)化,最終生成最優(yōu)的門級電路。該過程如下所示。


結構解釋

簡單的賦值語句通常被綜合為基本的邏輯門單元

assign F = (A & B) | C ;

上述代碼通常會被綜合為如下門級電路:


條件語句通常被綜合為選擇器

assign F = sel ? A : B ;

上述代碼通常會被綜合為如下門級電路:


always 塊中時鐘觸發(fā)的賦值語句通常被綜合為觸發(fā)器

always @(posedge clk) begin
    q <= d ;
end 

上述代碼通常會被綜合為如下電路:


再復雜的設計,綜合之后,都會被轉換為由各種單元庫原件組成的門級網表。總之,邏輯綜合可以狹隘的理解為,將 Verilog 設計轉換為用優(yōu)化的基本邏輯門單元、特殊的宏單元表示的過程。

綜合流程

從高層次 RTL 描述到門級網表的詳細綜合過程如下圖所示。


RTL 描述

用硬件描述語言(例如 Verilog)設計數字電路,并進行仿真保證邏輯功能的正確性。

翻譯

RTL 描述會被綜合工具轉換為一個未經優(yōu)化的中間表示。該過程讀入 Verilog 描述的基本原語和操作,不考慮面積、時序、功耗等設計約束,僅完成簡單的內部資源分配。

未優(yōu)化的中間表示

翻譯過程中產生的中間表示,數據格式由綜合工具內部識別,用戶無法也無需了解。

邏輯優(yōu)化

優(yōu)化設計邏輯,刪除冗余邏輯。該過程往往會將 RTL 設計的一些變量刪除,或重新命名,邏輯實現過程往往也會改變,以達到邏輯的最優(yōu)化實現。該過程會產生優(yōu)化的內部表示。

工藝映射和優(yōu)化

此步驟之前,設計的描述過程是獨立于目標工藝的。該步驟中,綜合工具將使用工藝庫(標準單元庫)中提供的邏輯單元,實現設計的內部表示。即設計會被映射到目標工藝。實現過程中,還必須滿足時序、面積和功耗的約束,執(zhí)行一些局部的優(yōu)化。

標準單元庫

如之前所述,標準單元庫對應工藝庫,可以包含簡單的與門、非門等基本邏輯門單元,也可以包含特殊的宏單元,例如乘法器、特殊的觸發(fā)器等。

為了更好的映射與優(yōu)化,每個邏輯單元,應當包含以下信息:

  • 功能描述
  • 版圖面積
  • 時序信息
  • 功耗信息

設計約束

設計約束一般包括時序、面積、功耗等方面的約束。三者之間往往存在制約關系。為了優(yōu)化時序,可能需要增加硬件資源,導致電路面積增大,功耗增加。為了產生規(guī)模更小的電路,又必須在電路速度上進行妥協(xié)。數字電路設計時往往要綜合各種因素進行取舍。

優(yōu)化的門級表示

工藝映射與優(yōu)化完成后,最終會生成由目標工藝庫所描述的優(yōu)化后的門級網表。如果該網表滿足各種約束要求,則會被制作成最終的版圖。否則還需要修改設計約束或優(yōu)化 RTL 描述,以獲得滿足約束要求的門級網表結果。這個過程是反復的,直至最終網表滿足要求。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號