Stratix III FPGA芯片圖。
StratixIV FPGA芯片圖。
在本文第一部分的討論中,我們知道了在目前的基于FPGA的圖像處理設(shè)計流程,以C++等高級語言編寫的算法函數(shù)模型必須采用手動方式編碼為RTL。但手動建立RTL的方法不但耗時,而且容易出錯,對后端布線延時問題非常敏感。因此我們必須考慮采用能夠從ANSI C++建模算法迅速轉(zhuǎn)換到運行在FPGA硬件中的RTL實現(xiàn)方法。在接下來的第二部分討論中,我們就將討論如何利用Catapult的ASIC功能和Altera加速庫自動順利實現(xiàn)這一設(shè)計過程。
為順利實現(xiàn)這一非常耗時的過程,Catapult C高級綜合設(shè)計過程首先對算法進行描述,然后選擇目標(biāo)技術(shù)。算法描述是純粹的ANSI C++源代碼,只對功能進行說明。并行和接口協(xié)議等硬件要求可通過約束在Catapult中實現(xiàn),從而也指導(dǎo)了綜合過程。
例如,下面的算法是一個基本有限沖擊響應(yīng)(FIR)濾波器,使用免費的Mentor Graphics Algorithmic C數(shù)據(jù)類型(加鏈接)來定義接口和內(nèi)部位寬度。
C++算法并沒有說明需要多少乘法器以及什么類型的乘法器來實現(xiàn)硬件。因此,系統(tǒng)規(guī)劃人員不用在實施細(xì)節(jié)上花費太多精力就能夠有效的建立算法。
下一步是確定目標(biāo)技術(shù)和關(guān)鍵規(guī)范。在Catapult中,目標(biāo)技術(shù)可以是ASIC或者FPGA,與源代碼描述無關(guān)。Catapult C綜合使用專用技術(shù)庫特征參數(shù)來建立最佳運算庫,例如加法器和乘法器等。這一特性描述過程收集器件專用資源詳細(xì)的面積和時序信息,使Catapult能夠建立技術(shù)預(yù)知計劃,不會浪費HLS探察過程中RTL綜合時間。其結(jié)果是快速的前端面積/性能估算,得到專用技術(shù)RTL輸出。
指定好目標(biāo)技術(shù)以及時鐘頻率后,設(shè)計人員可以使用自動高級綜合技術(shù)自由地進行設(shè)計。由于自動過程比手動RTL編碼快得多,設(shè)計人員能夠關(guān)注更多的選項,綜合考慮面積和性能,所實現(xiàn)的硬件完全滿足設(shè)計目標(biāo)要求。高級綜合工具對目標(biāo)技術(shù)非常清楚,根據(jù)時鐘頻率要求來選擇合適的運算,在需要的地方增加系統(tǒng)級流水線,確保不會違反時鐘頻率約束。設(shè)計人員可以使用開環(huán)和環(huán)流水線等高級綜合約束,研究從最短串聯(lián)到全并聯(lián)實現(xiàn)的多種微體系結(jié)構(gòu)(對比圖1和圖2中的具體實現(xiàn))。
圖1:串聯(lián)FIR實現(xiàn)。
圖2:并聯(lián)FIR實現(xiàn)。
在接下來的第三部分討論中,我們將討論如何選擇調(diào)度所需要的運算以滿足時鐘頻率約束,以及如何采用高級綜合資源約束來減小后端走線延時,敬請留意。