Verilog 邏輯綜合

2022-05-20 14:40 更新

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

基本概念

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

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


結(jié)構(gòu)解釋

簡(jiǎn)單的賦值語(yǔ)句通常被綜合為基本的邏輯門單元

assign F = (A & B) | C ;

上述代碼通常會(huì)被綜合為如下門級(jí)電路:


條件語(yǔ)句通常被綜合為選擇器

assign F = sel ? A : B ;

上述代碼通常會(huì)被綜合為如下門級(jí)電路:


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

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

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


再?gòu)?fù)雜的設(shè)計(jì),綜合之后,都會(huì)被轉(zhuǎn)換為由各種單元庫(kù)原件組成的門級(jí)網(wǎng)表??傊壿嬀C合可以狹隘的理解為,將 Verilog 設(shè)計(jì)轉(zhuǎn)換為用優(yōu)化的基本邏輯門單元、特殊的宏單元表示的過程。

綜合流程

從高層次 RTL 描述到門級(jí)網(wǎng)表的詳細(xì)綜合過程如下圖所示。


RTL 描述

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

翻譯

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

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

翻譯過程中產(chǎn)生的中間表示,數(shù)據(jù)格式由綜合工具內(nèi)部識(shí)別,用戶無法也無需了解。

邏輯優(yōu)化

優(yōu)化設(shè)計(jì)邏輯,刪除冗余邏輯。該過程往往會(huì)將 RTL 設(shè)計(jì)的一些變量刪除,或重新命名,邏輯實(shí)現(xiàn)過程往往也會(huì)改變,以達(dá)到邏輯的最優(yōu)化實(shí)現(xiàn)。該過程會(huì)產(chǎn)生優(yōu)化的內(nèi)部表示。

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

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

標(biāo)準(zhǔn)單元庫(kù)

如之前所述,標(biāo)準(zhǔn)單元庫(kù)對(duì)應(yīng)工藝庫(kù),可以包含簡(jiǎn)單的與門、非門等基本邏輯門單元,也可以包含特殊的宏單元,例如乘法器、特殊的觸發(fā)器等。

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

  • 功能描述
  • 版圖面積
  • 時(shí)序信息
  • 功耗信息

設(shè)計(jì)約束

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

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

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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)