官术网_书友最值得收藏!

1.3 面臨的挑戰(zhàn)

當前的FPGA設計規(guī)模越來越大,好在FPGA芯片的規(guī)模也越來越大,但設計的復雜度也越來越高,主要體現(xiàn)在較多的輸入/輸出管腳、較高的總線位寬、較大的扇出及較高的邏輯級數(shù)方面。帶來的直接后果是編譯時間過長、資源利用率過高、次優(yōu)布局、布線資源消耗太多、時序收斂較困難等,這也是目前FPGA設計面臨的一些挑戰(zhàn)。另外,有些FPGA設計要求時鐘運行在300MHz甚至400MHz以上,這樣面臨的挑戰(zhàn)將會更多。

以VU9P為例,其可用資源及某設計中的資源利用率如表1-6所示。Vivado版本為2018.3,服務器操作系統(tǒng)為Linux 64位,完成一次編譯(從綜合到生成.bit文件)至少需要十幾小時。當設計的時鐘頻率為400MHz時,完成一次編譯則需要二十多小時甚至更長,有時還無法實現(xiàn)時序收斂,導致反復迭代,從而消耗更多時間。

表1-6

在這些挑戰(zhàn)中,時序收斂在多數(shù)情況下是設計者面臨的最大挑戰(zhàn)。傳統(tǒng)的時序收斂流程如圖1-31所示,分為兩大階段:綜合階段和布局布線階段。綜合階段只要滿足WNS(Worst Negative Slack,最差建立時間裕量)等于0即可進行布局布線,這個目標通常比較容易實現(xiàn)。而布局布線階段的時序收斂往往涉及多方因素,需要設計者對工具特性、設計本身深入理解,同時有一定的經(jīng)驗積累。因此,這個過程有可能出現(xiàn)反復迭代。

圖1-31

針對布局布線階段的時序收斂,通常需要采用如圖1-32所示的流程。這個流程的關鍵點是分析時序違例原因,分析的對象并不是所有的時序違例路徑,而是最為關鍵的幾條時序違例路徑。實踐表明,往往只用手工修復這些關鍵時序違例路徑,工具會自動修復其他時序違例路徑。找到原因之后才能有的放矢地找到解決辦法。一般情況下,出現(xiàn)時序違例的原因包括:邏輯延遲太大、布線延遲太大、時鐘偏移或時鐘抖動太大。若確定原因是邏輯延遲太大,那么可能的解決辦法有兩種:插入流水寄存器和采用重定時。前者需要修改代碼,由于增加流水寄存器會導致從輸入到輸出所需要的時鐘周期個數(shù)發(fā)生改變,多條路徑的數(shù)據(jù)需要重新對齊,改動量可能會比較大;后者無須改動代碼,但需要確定是在綜合階段設置重定時還是在布局布線階段設置重定時,是全局設置(使用全局設置選項)還是局部設置(使用模塊化綜合技術)。這兩種解決辦法到底哪個是最優(yōu)解?這需要嘗試,也需要設計者積累足夠的經(jīng)驗,同時比較耗時。尤其是在多個解決辦法無法并行執(zhí)行時,耗時更多。

圖1-32

為了應對這些挑戰(zhàn),我們不僅要從設計本身入手,還要從EDA工具的角度入手,以期工具能夠幫助我們縮短編譯時間、提高編譯質(zhì)量。這就要提到Vivado ML(Machine Learning)版本。

Vivado ML的首個版本是2021.1。其在設計的多個階段引入了機器學習算法。例如,在綜合階段,引入了基于機器學習算法的門級優(yōu)化,從而大大提高了綜合質(zhì)量并且將綜合時間平均縮短了30%;在布局布線階段,引入了基于機器學習算法的擁塞評估和延遲評估,從而有效減少了迭代次數(shù)并將布局布線時間平均縮短了20%;其最大亮點在于引入了智能設計流程(Intelligent Design Run,IDR)。該設計流程專門為時序收斂服務,共包含3個階段,如圖1-33所示。階段1,工具會從5個方面,即時序約束、資源利用率、時鐘網(wǎng)絡、布線擁塞和時序違例路徑進行優(yōu)化,生成相應的優(yōu)化建議(通常以Tcl腳本的方式呈現(xiàn)),并自動將這些建議施加到對應的子步驟(實現(xiàn)階段1的4個子步驟,對應的Tcl命令分別為opt_design、place_design、phys_opt_design和route_design)中。該階段結束后,工具會對所有的布線后的網(wǎng)表進行比較,選取WNS最小者,獲取其中有效的優(yōu)化建議供階段2或階段3使用。階段2在階段1的基礎上(繼承了階段1的結果,即繼承了有效的優(yōu)化建議),工具會采用機器學習算法生成3個布局布線策略。階段3為增量編譯階段。實驗數(shù)據(jù)表明,IDR可以給設計帶來平均10%的收益,即Fmax(設計可運行的最高時鐘頻率)可提升10%。

圖1-33

IDR有單獨的窗口,如圖1-34所示。采用一鍵式操作,中間過程無須人工干預。從這個角度而言,IDR對設計者的經(jīng)驗積累的要求并不高。圖1-35顯示了未使用IDR時最終的時序性能。與圖1-34對比,可以看到,IDR使WNS從-1.040ns變?yōu)?0.158ns,同時修復了保持時間違例。

圖1-34

圖1-35

主站蜘蛛池模板: 桃源县| 南平市| 视频| 龙山县| 大关县| 丰镇市| 常熟市| 冀州市| 石柱| 永清县| 北川| 山阳县| 澄江县| 曲靖市| 明溪县| 安图县| 辽源市| 林芝县| 湛江市| 通城县| 烟台市| 泊头市| 澄江县| 穆棱市| 阿克| 广东省| 南投县| 邓州市| 通渭县| 峨边| 宁阳县| 陵水| 高平市| 公安县| 高平市| 新昌县| 金川县| 阜新市| 金堂县| 嘉定区| 夏津县|