本教程經(jīng)常有提及綜合這個(gè)詞語?;蛘哒f有些邏輯不能綜合成實(shí)際電路,或者說有些邏輯設(shè)計(jì)綜合后的電路會(huì)有一些安全隱患。本章就簡單介紹下邏輯綜合的相關(guān)知識(shí),僅從理論層次和普遍認(rèn)知的角度來闡述。待那個(gè)懵懂求知少年變成中年禿頂大叔,再來介紹邏輯綜合的具體實(shí)踐。好像也沒有多少時(shí)日了(手動(dòng)狗頭)。
綜合,就是在標(biāo)準(zhǔn)單元庫和特定的設(shè)計(jì)約束基礎(chǔ)上,把數(shù)字設(shè)計(jì)的高層次描述轉(zhuǎn)換為優(yōu)化的門級(jí)網(wǎng)表的過程。標(biāo)準(zhǔn)單元庫對(duì)應(yīng)工藝庫,可以包含簡單的與門、非門等基本邏輯門單元,也可以包含特殊的宏單元,例如乘法器、特殊的時(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)工藝庫等方面,而不用去關(guān)心高層次的描述怎么轉(zhuǎn)換為門級(jí)電路。綜合工具在內(nèi)部反復(fù)進(jìn)行邏輯轉(zhuǎn)換、優(yōu)化,最終生成最優(yōu)的門級(jí)電路。該過程如下所示。
簡單的賦值語句通常被綜合為基本的邏輯門單元
assign F = (A & B) | C ;
上述代碼通常會(huì)被綜合為如下門級(jí)電路:
條件語句通常被綜合為選擇器
assign F = sel ? A : B ;
上述代碼通常會(huì)被綜合為如下門級(jí)電路:
always 塊中時(shí)鐘觸發(fā)的賦值語句通常被綜合為觸發(fā)器
always @(posedge clk) begin
q <= d ;
end
上述代碼通常會(huì)被綜合為如下電路:
再復(fù)雜的設(shè)計(jì),綜合之后,都會(huì)被轉(zhuǎn)換為由各種單元庫原件組成的門級(jí)網(wǎng)表??傊壿嬀C合可以狹隘的理解為,將 Verilog 設(shè)計(jì)轉(zhuǎn)換為用優(yōu)化的基本邏輯門單元、特殊的宏單元表示的過程。
從高層次 RTL 描述到門級(jí)網(wǎng)表的詳細(xì)綜合過程如下圖所示。
用硬件描述語言(例如 Verilog)設(shè)計(jì)數(shù)字電路,并進(jìn)行仿真保證邏輯功能的正確性。
RTL 描述會(huì)被綜合工具轉(zhuǎn)換為一個(gè)未經(jīng)優(yōu)化的中間表示。該過程讀入 Verilog 描述的基本原語和操作,不考慮面積、時(shí)序、功耗等設(shè)計(jì)約束,僅完成簡單的內(nèi)部資源分配。
翻譯過程中產(chǎn)生的中間表示,數(shù)據(jù)格式由綜合工具內(nèi)部識(shí)別,用戶無法也無需了解。
優(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)部表示。
此步驟之前,設(shè)計(jì)的描述過程是獨(dú)立于目標(biāo)工藝的。該步驟中,綜合工具將使用工藝庫(標(biāo)準(zhǔn)單元庫)中提供的邏輯單元,實(shí)現(xiàn)設(shè)計(jì)的內(nèi)部表示。即設(shè)計(jì)會(huì)被映射到目標(biāo)工藝。實(shí)現(xiàn)過程中,還必須滿足時(shí)序、面積和功耗的約束,執(zhí)行一些局部的優(yōu)化。
如之前所述,標(biāo)準(zhǔn)單元庫對(duì)應(yīng)工藝庫,可以包含簡單的與門、非門等基本邏輯門單元,也可以包含特殊的宏單元,例如乘法器、特殊的觸發(fā)器等。
為了更好的映射與優(yōu)化,每個(gè)邏輯單元,應(yīng)當(dāng)包含以下信息:
設(shè)計(jì)約束一般包括時(shí)序、面積、功耗等方面的約束。三者之間往往存在制約關(guān)系。為了優(yōu)化時(shí)序,可能需要增加硬件資源,導(dǎo)致電路面積增大,功耗增加。為了產(chǎn)生規(guī)模更小的電路,又必須在電路速度上進(jìn)行妥協(xié)。數(shù)字電路設(shè)計(jì)時(shí)往往要綜合各種因素進(jìn)行取舍。
工藝映射與優(yōu)化完成后,最終會(huì)生成由目標(biāo)工藝庫所描述的優(yōu)化后的門級(jí)網(wǎng)表。如果該網(wǎng)表滿足各種約束要求,則會(huì)被制作成最終的版圖。否則還需要修改設(shè)計(jì)約束或優(yōu)化 RTL 描述,以獲得滿足約束要求的門級(jí)網(wǎng)表結(jié)果。這個(gè)過程是反復(fù)的,直至最終網(wǎng)表滿足要求。
更多建議: