有哪些RTL時序優(yōu)化迭代的技巧?
[導(dǎo)讀]1.需要對原有架構(gòu)、規(guī)格、關(guān)鍵電路非常熟悉。多次實踐證明不清楚原有設(shè)計的情況下做出的方案,往往只會越改越爛。判斷是否熟悉的標(biāo)準(zhǔn)是能夠講清楚整個模塊代碼->能夠自己畫出整個微架構(gòu)->能夠提出有效的PPA優(yōu)化方案。其實這一條經(jīng)驗是并不特指高頻設(shè)計,是做好設(shè)計的基本功,缺陷率高同學(xué)往往...
1.需要對原有架構(gòu)、規(guī)格、關(guān)鍵電路非常熟悉。多次實踐證明不清楚原有設(shè)計的情況下做出的方案,往往只會越改越爛。判斷是否熟悉的標(biāo)準(zhǔn)是能夠講清楚整個模塊代碼->能夠自己畫出整個微架構(gòu)->能夠提出有效的PPA優(yōu)化方案。其實這一條經(jīng)驗是并不特指高頻設(shè)計,是做好設(shè)計的基本功,缺陷率高同學(xué)往往問題就出現(xiàn)在這里。
2.建立把代碼通過人腦轉(zhuǎn)化成電路的能力。verilog描述的就是電路,時序優(yōu)化也是在電路上進(jìn)行精簡。這個技能我認(rèn)為掌握了本科的數(shù)字電路課程就可以做到,加法器、鎖存器、比較器、多路選擇器、布爾表達(dá)式化解等。另外對for循環(huán)展開、if esle分支、按位運算等常見寫法進(jìn)行電路轉(zhuǎn)換。寫代碼時需要能感知Critical path,并算出其大概的邏輯級數(shù)。
3.可以考慮關(guān)鍵微架構(gòu)打散重構(gòu)。時序優(yōu)化不動微架構(gòu)可能走不太遠(yuǎn)。
4.對多級Pipeline進(jìn)行調(diào)整和規(guī)劃。流水線上每一級的邏輯都要均勻和緊湊,遇到關(guān)鍵路徑是要往前和往后看是否有余量可以借用。
5.在性能與時序之間trade off。在時序優(yōu)化過程中常用的一種手段就是犧牲部分非關(guān)鍵場景的性能,敢于犧牲一些邊緣場景的性能。
6.時鐘Gating專項優(yōu)化,時序與門控精度的trade off。我優(yōu)化的模塊的一個典型的特點是低功耗要求很高,幾乎所有Always塊都會有綜合自動生成的時鐘門控。由于時鐘樹長差異和Setup要求更嚴(yán),時鐘門控的E端時序要求比D端時序更加惡劣。所以寫Always塊的時鐘門控時,對時序的考慮需要更加精細(xì),E端的邏輯級數(shù)要求比D端少8級左右。
7.優(yōu)先朝著根節(jié)點進(jìn)行時序優(yōu)化。每一次優(yōu)化都盡可能找到路徑靠近起始位置去優(yōu)化,讓一次優(yōu)化影響面更廣,優(yōu)化收益更大。
2.建立把代碼通過人腦轉(zhuǎn)化成電路的能力。verilog描述的就是電路,時序優(yōu)化也是在電路上進(jìn)行精簡。這個技能我認(rèn)為掌握了本科的數(shù)字電路課程就可以做到,加法器、鎖存器、比較器、多路選擇器、布爾表達(dá)式化解等。另外對for循環(huán)展開、if esle分支、按位運算等常見寫法進(jìn)行電路轉(zhuǎn)換。寫代碼時需要能感知Critical path,并算出其大概的邏輯級數(shù)。
3.可以考慮關(guān)鍵微架構(gòu)打散重構(gòu)。時序優(yōu)化不動微架構(gòu)可能走不太遠(yuǎn)。
4.對多級Pipeline進(jìn)行調(diào)整和規(guī)劃。流水線上每一級的邏輯都要均勻和緊湊,遇到關(guān)鍵路徑是要往前和往后看是否有余量可以借用。
5.在性能與時序之間trade off。在時序優(yōu)化過程中常用的一種手段就是犧牲部分非關(guān)鍵場景的性能,敢于犧牲一些邊緣場景的性能。
6.時鐘Gating專項優(yōu)化,時序與門控精度的trade off。我優(yōu)化的模塊的一個典型的特點是低功耗要求很高,幾乎所有Always塊都會有綜合自動生成的時鐘門控。由于時鐘樹長差異和Setup要求更嚴(yán),時鐘門控的E端時序要求比D端時序更加惡劣。所以寫Always塊的時鐘門控時,對時序的考慮需要更加精細(xì),E端的邏輯級數(shù)要求比D端少8級左右。
7.優(yōu)先朝著根節(jié)點進(jìn)行時序優(yōu)化。每一次優(yōu)化都盡可能找到路徑靠近起始位置去優(yōu)化,讓一次優(yōu)化影響面更廣,優(yōu)化收益更大。





