新一代高級(jí)綜合 (HLS) 工具目前用于兩個(gè)主要目的。首先是出于性能原因在硬件中實(shí)現(xiàn)軟件。第二個(gè)是出于生產(chǎn)力、重用、架構(gòu)探索和更好的結(jié)果質(zhì)量 (QoR) 的原因,將半導(dǎo)體設(shè)計(jì)推向更高的抽象級(jí)別。
同時(shí),一種新的寄存器傳輸級(jí) (RTL) 綜合方法稱為芯片綜合,它比以往任何時(shí)候都更容易實(shí)現(xiàn)對(duì)最終性能的快速準(zhǔn)確評(píng)估,而無需創(chuàng)建完整的物理實(shí)現(xiàn)。結(jié)合這兩種技術(shù),設(shè)計(jì)人員可以快速改變?cè)O(shè)計(jì)參數(shù),獲得正確的性能數(shù)字,并在面積、性能和功耗方面達(dá)到最佳組合的設(shè)計(jì)。
更大的馬力,更好的抽象
各類嵌入式軟件,尤其是高清視頻處理等具有高吞吐量要求的軟件,經(jīng)常會(huì)遇到性能問題。雖然可以使用一些軟件方法來提高性能,但當(dāng)性能下降幾個(gè)數(shù)量級(jí)時(shí),唯一可行的方法是更改??運(yùn)行軟件的底層計(jì)算結(jié)構(gòu),這可能就像切換到多核處理器一樣簡(jiǎn)單。然而,通常由于功率或成本的原因,改變計(jì)算結(jié)構(gòu)并不是最優(yōu)的。
HLS 是一種越來越有吸引力的方法,它采用軟件的一部分并在硬件中自動(dòng)實(shí)現(xiàn)它,無論是在片上系統(tǒng) (SoC) 上的原始門中,還是在 FPGA 中更好。AutoESL 的 AutoPilot 是一個(gè)將 C、C++ 或 SystemC 作為輸入并快速生成 RTL Verilog 或 VHDL 作為輸出的工具的示例。
與此同時(shí),SoC 設(shè)計(jì)人員正在尋找將設(shè)計(jì)推向更高抽象層次的方法,用 C 或 SystemC 描述他們的算法,自動(dòng)將其轉(zhuǎn)換為 RTL 代碼,并達(dá)到面積(成本)的正確權(quán)衡點(diǎn),功率和性能。通過在更高級(jí)別上工作,設(shè)計(jì)人員可以顯著提高他們的生產(chǎn)力,并確保 QoR 接近或優(yōu)于手動(dòng)編碼結(jié)果。同樣,HLS 工具是執(zhí)行從輸入到 RTL 代碼的優(yōu)化轉(zhuǎn)換的鏈接。然后,傳統(tǒng)的 RTL 實(shí)現(xiàn)流程可以接管。
進(jìn)入評(píng)估
說 HLS 使硬件編譯像軟件的 C 語言編譯一樣簡(jiǎn)單可能有些夸張,但它確實(shí)使軟件到硬件的轉(zhuǎn)換變得簡(jiǎn)單,尤其是與手動(dòng)創(chuàng)建復(fù)雜的 RTL 實(shí)現(xiàn)相比。硬件編譯比軟件編譯更復(fù)雜的一個(gè)原因是 HLS 工具需要考慮一組更豐富的權(quán)衡。
例如,數(shù)據(jù)路徑可以簡(jiǎn)單地實(shí)現(xiàn)、流水線化或復(fù)制。這些選項(xiàng)中的每一個(gè)都具有不同的性能、面積和功率特性,其變化因子高達(dá) 1,000。可以為 HLS 工具提供指令,以將實(shí)現(xiàn)導(dǎo)向設(shè)計(jì)人員想要的最佳位置。但是有一個(gè)問題:鑒于 HLS 的輸出是 RTL 代碼,設(shè)計(jì)人員如何快速確定特定候選實(shí)現(xiàn)的面積、功耗和性能?
缺少的環(huán)節(jié)是難以評(píng)估這些特征并獲得有關(guān)任何問題的快速反饋。雖然 HLS 工具提供了合理但相當(dāng)粗略的估計(jì),但通常需要更高的準(zhǔn)確性。但是,用于將 RTL 代碼縮減為實(shí)現(xiàn)的傳統(tǒng)工具的性能與 HLS 工具的性能之間存在不匹配。
盡管 HLS 運(yùn)行速度極快(大約一個(gè)小時(shí)左右),但減少 RTL 實(shí)現(xiàn)以實(shí)現(xiàn)準(zhǔn)確的性能可能需要半天的綜合時(shí)間,然后是一天半的物理設(shè)計(jì)。這幾乎不是 HLS 用戶想要的快速反饋循環(huán),因?yàn)樗速M(fèi)了每天迭代五到六次的潛力,并將其最小化為每周幾次。這些較新的 HLS 工具的功能與語言無關(guān),可以同時(shí)優(yōu)化時(shí)序、面積和性能,從而生成高度可實(shí)現(xiàn)的 RTL 代碼,但被下游 RTL 綜合邊緣化。
塊和芯片
另一個(gè)細(xì)微差別是,塊的詳細(xì)性能不僅取決于塊本身,還取決于它周圍的其他塊。有時(shí),從高層綜合的整個(gè)設(shè)計(jì)包括傳統(tǒng)模塊、第三方 IP 模塊和在 RTL 級(jí)別手工設(shè)計(jì)的模塊。當(dāng)這些塊一起實(shí)現(xiàn)時(shí),任何特定塊的性能都與共享某些相同物理資源的其他塊的性能相互關(guān)聯(lián)。
對(duì)于傳統(tǒng)的 RTL 綜合,設(shè)計(jì)人員面臨著一個(gè)沒有吸引力的選擇:快速但粗略的反饋或準(zhǔn)確但極慢的反饋。所需要的是一種提供快速和準(zhǔn)確反饋的方法。Oasys Design Systems 的 RealTime Designer 等芯片綜合工具提供了這種功能組合。
芯片綜合通過直接將 RTL 代碼簡(jiǎn)化為布局元素來運(yùn)行,因此與傳統(tǒng)綜合相比具有兩大優(yōu)勢(shì):布局和布線。這個(gè)過程很快,而且時(shí)間和尺寸數(shù)據(jù)與最終實(shí)現(xiàn)設(shè)計(jì)時(shí)最終獲得的數(shù)據(jù)有很好的相關(guān)性。HLS 和芯片綜合的結(jié)合使獲取大量 C 代碼并快速獲得性能和面積的出色估計(jì)成為可能。這使設(shè)計(jì)人員可以更有效地專注于最合適的實(shí)施位置。此外,由于芯片合成可以快速處理巨大的塊,它可以合成正在設(shè)計(jì)的塊以及影響性能的周圍塊。
區(qū)別很明顯
芯片合成的工作方式與傳統(tǒng)合成不同。一旦 RTL 代碼被解析,它就會(huì)被分割(基于連通性)成更小的段,最終將被簡(jiǎn)化為門。每個(gè)分區(qū)都足夠小,不會(huì)包含任何長線,這會(huì)導(dǎo)致時(shí)序的高度可變性,并且足夠大,可以包含具有潛在不同區(qū)域/時(shí)間權(quán)衡的實(shí)現(xiàn)。每個(gè)分區(qū)都獨(dú)立于其他分區(qū)。當(dāng)然,需要所有其他分區(qū)的時(shí)序編號(hào)才能對(duì)整個(gè)芯片進(jìn)行計(jì)時(shí),但并不需要同時(shí)要求每個(gè)分區(qū)的詳細(xì)內(nèi)部結(jié)構(gòu)。因?yàn)椴辉傩枰陂T級(jí)同時(shí)查看整個(gè)芯片,所以減少了內(nèi)存需求。
RTL 分區(qū)方法是芯片綜合能夠如此快速和有效的主要原因。通過在更高的層次上運(yùn)行,這種方法一次智能地綜合和計(jì)時(shí)設(shè)計(jì)一個(gè)分區(qū)。然后,在滿足時(shí)序之前,它會(huì)重新綜合、替換(并更新全局路由)并重新劃分設(shè)計(jì)的各個(gè)部分,直到滿足約束條件。
使用最新的 HLS 和芯片合成技術(shù)在更高水平上工作會(huì)產(chǎn)生數(shù)量級(jí)的更好性能。對(duì)于 HLS 創(chuàng)建的典型設(shè)計(jì)規(guī)模,芯片綜合的運(yùn)行時(shí)間與 HLS 大致相同。將這兩種創(chuàng)新技術(shù)結(jié)合使用意味著可以在一兩個(gè)小時(shí)內(nèi)對(duì)設(shè)計(jì)進(jìn)行迭代,從而每天可以考慮多次試驗(yàn)實(shí)施。通過這種方法騰出的額外時(shí)間可以用于更緊湊的時(shí)間表或探索更豐富的替代空間。
審核編輯:郭婷
-
FPGA
+關(guān)注
關(guān)注
1629文章
21759瀏覽量
604277 -
芯片
+關(guān)注
關(guān)注
456文章
50950瀏覽量
424720 -
soc
+關(guān)注
關(guān)注
38文章
4180瀏覽量
218488
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論