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