ASIC設(shè)計中詳細(xì)設(shè)計方案的確定非常重要,,同樣的設(shè)計,,別人可以用比你小30%的面積和少30%的處理時間來實現(xiàn),,這才是設(shè)計工程師的價值體現(xiàn)之處。 任何設(shè)計在最開始的時候都是一頭霧水,,場景復(fù)雜,,各種耦合,。我們要做的是將所有的場景都整理出來,然后想辦法進(jìn)行歸一,。任何一開始覺得不可能做到的任務(wù)最后都能找到解決方法,。 這本來看似是沒有規(guī)律的世界,但人類就是去不斷尋找和發(fā)現(xiàn)這個物質(zhì)世界的運行規(guī)律,。 當(dāng)然,,即使第一版設(shè)計我們盡可能的考慮到了更多的場景和實現(xiàn)方案,但是最后實現(xiàn)階段還是會有一些考慮不周全和不合理的實現(xiàn),,由于時間成本原因,決定放到下一版再修改,。這個過程就叫做優(yōu)化,!那么,如何優(yōu)化一個設(shè)計,?
找大寄存器組
首先是找設(shè)計中的大寄存器組,,寄存器是面積較大的基本單元了,寄存器的數(shù)量決定了設(shè)計整體的面積數(shù)量級,。小容量的存儲用regfile,,一般寄存器組用到了上千bit,就要考慮是否用RAM,。上萬bit的就是不合理的設(shè)計,。 看到大寄存器組是要重點關(guān)注優(yōu)化的對象,要注意的是,,寄存器組是可以隨意在任意bit取值的,,RAM是需要一拍一拍的讀取的,所以需要在高并行度和面積之前做折中(trade off),。 數(shù)據(jù)通路寄存器打拍過多,,肯定不合理,一個數(shù)據(jù)打一拍最起碼是幾十個bit,,打多拍,,就上百bit。而換一個設(shè)計思路,,在控制上多少邏輯,,控制信號+計數(shù)器,多做幾組也就攏共幾十個bit的樣子,。比如前一級模塊傳過來的數(shù)據(jù)和valid信號,,數(shù)據(jù)是要晚幾拍才使用,應(yīng)該做成前一級模塊先給valid信號,,數(shù)據(jù)晚幾拍再來,,避免數(shù)據(jù)打拍,。 在數(shù)據(jù)通路上出現(xiàn)一些組合邏輯路徑并不長,打了一拍,,這樣雖然時序會更好,,但是最后增加的面積來說并不值得,所以多余的寄存器打拍完全可以“干”掉,。
重定時
ReTIming就是重新調(diào)整時序,,例如電路中遇到復(fù)雜的組合邏輯,延遲過大,,電路時序不滿足,,這個時候采用流水線技術(shù),在組合邏輯中插入寄存器加流水線,,進(jìn)行操作,,面積換速度思想。
任何的數(shù)字電路都可以等效成組合邏輯加D觸發(fā)器打拍,,兩個D觸發(fā)器之間的組合邏輯路徑?jīng)Q定了,,系統(tǒng)的工作頻率,決定芯片的性能,。所以為了提高芯片的工作頻率,,使用流水線技術(shù)在組合邏輯中插入寄存器。
插入寄存器的位置需要慎重選擇,,不同的位置數(shù)據(jù)的打拍所消耗的寄存器的數(shù)量也不同,,比方說你在位置a消耗25bit寄存器,位置b消耗20bit寄存器,,能省則省,。
前面插入寄存器的位置使得comb1的延遲為30ns,comb2的延遲為10ns,,系統(tǒng)的最高工作頻率是由最長路徑?jīng)Q定的,。也就是說你這個系統(tǒng)最高工作頻率的周期,不小于30ns,,前面是插入pipeline,,這個時候我們不改變時序,采用重定時技術(shù),,使得各個組合邏輯之間的延遲相當(dāng),。
瘋狂復(fù)用
找計算邏輯相同的單元,復(fù)用 最常見的就是計數(shù)器,,能用一個計數(shù)器實現(xiàn)的,,就別用倆,底層模塊之間相同的邏輯盡量使用一塊電路,,減少重復(fù)的設(shè)計,。 基本邏輯單元的共享舉例,,面積:加法器 > 比較器 > 選擇器。加比選,。 乘法器本質(zhì)上也是全加器,。 所以就有先選后比,先選后加,,先選后乘,。 畫個圖意思一下。
這里的加法器可以換成任何邏輯或模塊,。
乘法器分時復(fù)用度提高
在計算模塊中乘法器也是非常大的一部分邏輯,,一個設(shè)計要考慮PPA最優(yōu),就要考慮乘法器的數(shù)量多少以及復(fù)用能不能最大化,,追求最好的設(shè)計是整個數(shù)據(jù)通路中乘法器空閑不下來,。 乘法器調(diào)用方法,一般是在乘法器的輸入保證寄存器輸入,,結(jié)果輸出到各個復(fù)用模塊時打一拍再使用??梢宰龀稍谶M(jìn)行完乘法運算后,,就打拍,這樣消耗的寄存器會少很多,。畫個圖意思一下(單bit),。
修改前
修改后 修改完后的寄存器省了很多,但是乘法器的輸出寄存器負(fù)載會變大,,不過后端綜合時約束了max_fan_out工具會自動插buffer和復(fù)制寄存器,,經(jīng)過實測還是會節(jié)省很多面積,把一些優(yōu)化工作可以交給工具去做,,了解它,,信任它,使用它,。
RAM的復(fù)用
從設(shè)計的整體來看,,RAM也可以復(fù)用,前面處理用過的ram,,現(xiàn)在空下來,,后面能否用。
最后
總結(jié)一下ASIC單個模塊的設(shè)計/優(yōu)化思路,,列出所有條件,,然后歸一,復(fù)用,,面積與速度呼喚的思想貫穿始終,。
更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<