提高IC設計中數位邏輯速度的六種技巧

作者 : Deekshith Krishnegowda,Marvell Technology晶片設計工程師

在IC設計中,性能、功耗、速率都是非常重要的設計因素。如何在功耗和性能之間取捨和折衷?如何減少延遲以提高晶片的運行速率?本文針對如何減少設計延遲,分享相關的設計經驗和技巧。

設計人員在開發晶片邏輯之前,必須在許多因素之間作出權衡。例如,如果是為行動應用開發晶片,功耗就是一個非常重要的因素。在這種情況下,需要低功耗邏輯。顧名思義,低功耗邏輯有助於降低功耗,但會影響晶片的性能。同樣地,如果是為資料中心應用開發晶片,則需要考慮高性能,功耗相對次之。

總之,晶片的功耗和性能是成反比的。在為晶片設計編寫邏輯時,設計人員必須找到功耗和性能的適當平衡。如前所述,晶片的高速度對於某些應用來說是必須的。因此,在為此類應用開發邏輯時,有一些方法可以透過少量的邏輯最佳化來提高設計速度。本文介紹可用於提高晶片設計速度的技巧和訣竅。

重新格式化邏輯運算式

有時候,我們可以改變邏輯程式碼的編寫方式以提高電路的性能。如1所示,儘管兩個程式碼執行相同的功能,但合成器工具以不同的方式合成兩個程式碼,最終會影響到電路的延遲。

1:可以在code 1 ()code 2 ()的第4行看到差異。

採用Xilinx ISE和Spartan6系列FPGA分析時序性能。

2:上方是code 1的原理圖,下方是code 2的原理圖。

3code 1 ()code 2 ()的延遲比較。電路2的速度優於電路1的速度。

結論3的時序分析表明,在相同的邏輯條件下,將括弧放在右側得到的總延遲可以減少電路延遲,從而提高電路的速度。

使用管線暫存器

另一種提高電路時序性能的方法是使用管線(pipeline)暫存器。將長組合邏輯分解為多個單元,並在其間添加暫存器。由於資料路徑邏輯中增加了暫存器,從輸入獲得訊號到輸出產生訊號的時間有所增加。但是每個時脈週期計算的結果會相應增加,從而減少電路的總延遲。

4code 3 ()code 4 ()具有相同的功能,但code 4採用了管線暫存器,而code 3則無。

5:在code 3 ()code 4 ()的延遲比較中可以發現,電路4的速度優於電路3的速度。

6:頂部是code 3的原理圖,底部是code 4的原理圖,後者包含了管線暫存器。

結論:從5可以明顯看出,帶有管線暫存器的電路速度遠高於不帶管線暫存器的電路速度。管線暫存器增加了延遲和面積,但也提高了工作頻率。因此,當性能是標準時,管線解決方案應該是首選。

將慢速訊號放在資料路徑邏輯的末端

解決長路徑問題的另一種方法是將最慢的訊號放在邏輯的後端。例如,Z=A&B&C&D可以重新排列為Z=(A&C&D) &B。這可確保訊號B在合成時仍然在邏輯後端,從而有助於減小邏輯的整體延遲。

高層次編寫程式碼

在設計中將加法器和乘法器等算數運算留給合成工具實現於設計中,這通常是一個好主意。在較低層級進行設計可能會導致時序問題,因此應盡可能將其留給合成器。

在高層級編寫RTL程式碼時,可以使用Synopsys DC並在DesignWare庫的幫助下實現加法器、時脈域交叉單元、乘法器和時脈閘控單元等常見邏輯區塊。同時應該注意編寫能讓合成器容易理解的RTL程式碼。這樣可以產生高品質的網表。在設計中使用狀態機,並實現良好的層次結構,將會得到更好的合成結果。

執行合成時鬆綁面積限制

減少面積限制,將有利於合成器工具在提供的庫資訊中查找除標準VT (SVT)單元之外的不同單元。更快的單元(LVT)有助於減少邏輯延遲,但會增加面積和功耗。在合成過程中適當增加編譯器的工作量將有助於讓綜合工具在產生網表之前嘗試不同的組合和替代。唯一的缺點是它增加了編譯時間。

在嚴格時序約束下執行合成

為了確保合成工具能夠更加盡力地最佳化長資料路徑,整個合成是在比目標週期時間更短的時間內完成的。由於要到佈局和佈線後才會有金屬電容,因此合成後獲得的時序分析只是一個估計值。在較短的時脈週期時間執行合成,會抵消後續的後端處理中出現的金屬電容和其他寄生參數。

遵循以上這些方法將有助於減少設計中的延遲,從而使設計能夠實現更高的運行頻率。

(參考原文:Six ways to improve speed of digital logic in IC design,by Deekshith Krishnegowda)

本文同步刊登於EDN Taiwan 2022年5月號雜誌

加入LINE@,最新消息一手掌握!

發表評論