FPGA 原型設(shè)計(jì)人員艱苦努力所得的明顯回報(bào)就是 ASIC 設(shè)計(jì)可以及時(shí)而毫無(wú)問(wèn)題地完成產(chǎn)品定案(tape-out)。不過(guò),原型設(shè)計(jì)還有一點(diǎn)日益重要的優(yōu)勢(shì),即 ASIC 或 SoC 中嵌入的軟件在項(xiàng)目開發(fā)的早期階段便可與實(shí)際速度硬件進(jìn)行完美集成。
為什么軟件團(tuán)隊(duì)要關(guān)注 FPGA 原型設(shè)計(jì)問(wèn)題
獨(dú)立的 EDA 分析師 Gary Smith 指出(見(jiàn)圖 1),SoC 采用的CMOS工藝節(jié)點(diǎn)日益小型化,而且技術(shù)越來(lái)越復(fù)雜,因此軟件組成部分已成為產(chǎn)品特色和開發(fā)焦點(diǎn)所在。進(jìn)入市場(chǎng)的最新消費(fèi)類器件多采用復(fù)雜的 SoC,其中包括眾多嵌入式處理器和幾十萬(wàn)甚至數(shù)百萬(wàn)行代碼。Apple iPhone 就是一個(gè)很好的例子,它至少包含 3 個(gè) ARM 處理器。加速產(chǎn)品上市進(jìn)程對(duì)產(chǎn)品推出至關(guān)重要,在此情況下,怎么才能在 SoC 環(huán)境中進(jìn)行軟件驗(yàn)證呢?
SoC 開發(fā)團(tuán)隊(duì)越來(lái)越多地開始采用 FPGA 原型設(shè)計(jì)作為解決方案來(lái)進(jìn)行驗(yàn)證并及時(shí)推出各種類型的產(chǎn)品。
為什么選擇原型設(shè)計(jì)技術(shù)?
集成操作系統(tǒng)、應(yīng)用和硬件非常復(fù)雜,會(huì)出現(xiàn)許多不可預(yù)見(jiàn)的軟件問(wèn)題。實(shí)際速度運(yùn)行的 FPGA 原型設(shè)計(jì)能提供一個(gè)獨(dú)特的環(huán)境,在關(guān)鍵的集成階段節(jié)約數(shù)月之久的高強(qiáng)度軟件測(cè)試工作。如果這款原型設(shè)計(jì)還要采用其它軟件,要進(jìn)行其它實(shí)驗(yàn)室測(cè)試,那么原型設(shè)計(jì)的優(yōu)勢(shì)會(huì)進(jìn)一步體現(xiàn)出來(lái),即便對(duì)客戶接受度測(cè)試來(lái)說(shuō)都是有益的。Synplicity 推出的 HAPS (高速 ASIC 原型設(shè)計(jì)系統(tǒng))等現(xiàn)成的高質(zhì)量 FPGA原型驗(yàn)證板基本解決了投放產(chǎn)品的時(shí)間問(wèn)題,剩下的就是要考慮成本問(wèn)題:
增加板的用量將找出更多錯(cuò)誤
軟件的潛在用戶數(shù)量巨大,他們會(huì)隨心所欲使用軟件,難免不造成操作系統(tǒng)鎖死,應(yīng)用崩潰,或者做些軟件工程師根本想象不到的事情。
何時(shí)進(jìn)行原型設(shè)計(jì)
在 SoC 設(shè)計(jì)完成之前就進(jìn)行調(diào)試顯然是非常有利的。圖 1 顯示了大型 ASIC 項(xiàng)目各階段中通常要特別注意的模擬、仿真和原型設(shè)計(jì)問(wèn)題。我們可以看到,F(xiàn)PGA 原型設(shè)計(jì)最常用,因?yàn)轫?xiàng)目在集成階段需要確保高速和高容量。
我們不妨設(shè)想這樣一種情況,軟件集成問(wèn)題的最佳解決方案需要修改硬件。舉例來(lái)說(shuō),需要將占用大量周期的DSP算法提取出來(lái),并用協(xié)處理器或定制的器件邏輯來(lái)代替。如果 SoC 已基本完成了產(chǎn)品定案,甚至已完成設(shè)計(jì)推出了樣片才發(fā)現(xiàn)這一問(wèn)題,那么不管修改錯(cuò)誤對(duì)最終產(chǎn)品有什么好處,我們也不太可能考慮對(duì)器件進(jìn)行必要的調(diào)整了。事實(shí)上,早期進(jìn)行 FPGA 原型設(shè)計(jì)有助于及時(shí)進(jìn)行設(shè)計(jì)調(diào)整。FPGA 原型設(shè)計(jì)技術(shù)使用越來(lái)越多,其原因之一就是在項(xiàng)目早期階段可判斷軟/硬件的問(wèn)題并權(quán)衡利弊(也請(qǐng)參見(jiàn)圖 1)。
原型設(shè)計(jì)面臨的挑戰(zhàn)
實(shí)施 ASIC 的 FPGA 原型需要解決多種開發(fā)難題。令人驚訝的是,設(shè)計(jì)硬件本身并不是最具挑戰(zhàn)性的問(wèn)題。事實(shí)上,許多廠商都提供為滿足特定目的而設(shè)計(jì)的 ASIC 原型板(如HAPS)。真正的挑戰(zhàn)則在于如何實(shí)施 FPGA 設(shè)計(jì)方案。
分區(qū)和 I/O 處理
盡管目前最大的 FPGA 每個(gè)都能處理 200 多萬(wàn)個(gè) ASIC 門,但眾多 ASIC 設(shè)計(jì)的要求要大得多。這就要求對(duì) SoC 的關(guān)鍵部分進(jìn)行原型設(shè)計(jì),或者設(shè)計(jì)方案必須在多個(gè) FPGA上進(jìn)行分區(qū)。但這會(huì)造成一些有趣的障礙,因?yàn)槲覀兊恼w目標(biāo)是進(jìn)行驗(yàn)證,因此分區(qū)時(shí)必須盡可能減少對(duì) ASIC RTL 的變動(dòng)。設(shè)計(jì)方案分區(qū)會(huì)造成人為的分界線,如果設(shè)計(jì)方案的內(nèi)部總線或數(shù)據(jù)路徑較寬,則會(huì)造成所需 I/O 引腳的數(shù)量爆炸性增長(zhǎng),進(jìn)而引起 FPGA 引腳不足。即便采用最新型的 FPGA,每個(gè) FPGA支持 1000個(gè)以上的I/O 引腳,也有不夠用的時(shí)候。
我們可在同一 FPGA 引腳上先對(duì)多個(gè)信號(hào)進(jìn)行多路復(fù)用,然后再在目標(biāo) FPGA 上進(jìn)行多路分解工作,從而生成更多 I/O 資源。即便如此,我們還是不希望變動(dòng) ASIC RTL,因此要進(jìn)行自動(dòng)引腳多路復(fù)用。這肯定會(huì)產(chǎn)品性能造成一定的影響;但 FPGA 的I/O足夠快,即便采用多路復(fù)用技術(shù),仍能提供足夠高的性能,確保復(fù)雜的嵌入式軟件驗(yàn)證工作能夠以實(shí)際速度進(jìn)行。
不改變 RTL 就修改拓?fù)浣Y(jié)構(gòu)
憑借設(shè)計(jì)人員的智慧,通過(guò)一定的手動(dòng)干預(yù),我們可在一個(gè)以上的 FPGA 中復(fù)制子模塊,從而減少 I/O 限制,降低互連需求。通過(guò)對(duì) RTL 做進(jìn)一步的專門化操作,如對(duì)低級(jí)門進(jìn)行位切片(bit-slicing)或壓縮(zipper)更多復(fù)雜模塊(這些都不需要變動(dòng) RTL),可進(jìn)一步降低 FPGA I/O 需求。
ASIC 時(shí)鐘和 FPGA 時(shí)鐘不一樣將 SoC 設(shè)計(jì)移植到 FPGA 上時(shí),設(shè)計(jì)團(tuán)隊(duì)還會(huì)面臨更多問(wèn)題,因?yàn)樵?RTL 的作者根本不可能考慮到 FPGA 問(wèn)題。RTL 中不利于 FPGA 的因素包括 ASIC 元件例化和 RAM BIST 等,不過(guò)最重要的問(wèn)題在于 IP 和時(shí)鐘復(fù)雜性。為降低功耗,F(xiàn)PGA 會(huì)盡量支持ASIC 常用的門控時(shí)鐘(gated-clock)設(shè)計(jì)風(fēng)格。時(shí)鐘門信號(hào)必須轉(zhuǎn)化為 FPGA 硬件中的時(shí)鐘啟用(clock enables)信號(hào)。手動(dòng)進(jìn)行這種轉(zhuǎn)換工作量太大并帶來(lái)新的問(wèn)題。一些合成工具可以自動(dòng)進(jìn)行門—時(shí)鐘轉(zhuǎn)換,甚至能支持復(fù)雜的時(shí)鐘生成電路。圖 3 顯示了 Synplicity 的 Synplify Premier 中自動(dòng)化時(shí)鐘轉(zhuǎn)化的實(shí)例。
處理IP
ARM 處理器等大型 IP 塊可作為完整的芯片購(gòu)買,直接接口于其它原型設(shè)計(jì)硬件。唯一要求就是硬件必須足夠靈活,以滿足ARM Coretile 等多種支持 IP 功能的子卡需要。但是,存儲(chǔ)器、FIFO、乘法器和加法器等小型常見(jiàn)功能太多了,難以通過(guò)這種方式一一滿足。適當(dāng)?shù)?EDA 軟件能自動(dòng)將這些功能轉(zhuǎn)化為 FPGA 內(nèi)部兼容型實(shí)施方案,或者通過(guò)簡(jiǎn)單的方式將其隔離到FPGA外部實(shí)現(xiàn)。
采用FPGA板后的工作
設(shè)計(jì)移植到 FPGA上并以實(shí)際速度運(yùn)行后,又會(huì)出現(xiàn)另一個(gè)問(wèn)題,即如何高效完成調(diào)試工作。嵌入式或外置的邏輯分析器可解決此問(wèn)題,但這些工具通常工作于門級(jí)層面。因此,跟蹤返回至 RTL級(jí)(即最初進(jìn)行設(shè)計(jì)的層面)的信號(hào)會(huì)花費(fèi)大量時(shí)間,畢竟這需要在合成步驟中逆向工作。最好用能無(wú)縫保持門級(jí)和 RTL 級(jí)層面之間軟鏈接(symbolic link)的工具進(jìn)行調(diào)試。
Synplicity 開發(fā)了稱作 TotalRecall Full Visibility Technology 的新技術(shù),能自動(dòng)從原型設(shè)計(jì)中提取完整的測(cè)試實(shí)例,其中包括導(dǎo)致故障或斷言失敗的所有情況,可以了解軟件調(diào)試觸發(fā)器的外部輸入問(wèn)題等。捕獲到的測(cè)試實(shí)例可隨時(shí)在正常 RTL 模擬器中重放并分析。該功能使 FPGA 原型設(shè)計(jì)能擴(kuò)展到更廣泛的驗(yàn)證環(huán)境中,現(xiàn)在已經(jīng)在Synplicity 的 Identify Pro 產(chǎn)品中實(shí)現(xiàn)。
FPGA 原型設(shè)計(jì)技術(shù)的發(fā)展趨勢(shì)
以實(shí)際速度運(yùn)行的 FPGA 原型為復(fù)雜的嵌入式系統(tǒng)和 SoC 的驗(yàn)證工作提供了強(qiáng)有效的解決方案。如前所述,目前,我們可以獲得解決本領(lǐng)域中一直面臨的各種挑戰(zhàn)的 EDA 工具和現(xiàn)成的原型板。即便如此,還有待全面集成原型設(shè)計(jì)硬件和工具組件。這樣我們就能縮短原型設(shè)計(jì)和重復(fù)修改的時(shí)間。隨著功能的不斷發(fā)展,Synplicity 的 Confirma平臺(tái)等以實(shí)際速度運(yùn)行的驗(yàn)證系統(tǒng)將取代其它傳統(tǒng)驗(yàn)證方法,成為所有 SoC 開發(fā)工作中不可或缺的一部分。
評(píng)論
查看更多