WFU

2019年5月28日 星期二

新創公司利用高階合成 (HLS) 完成裸視3D IP

Stream TV Networks 創立於 2011,在 2012 Computex 發表裸視 3D 技術,和面板廠合作,投出最多 9 個不同角度和景深的影像,左右眼分別看到 4 個影像,形成 3D 效果。



Ultra-D 技術將任何 LCD 以及 OLED 影像轉成具有景深的 3D 影像,在 Real-Time Conversion (RTC) IP 中實現演算法。



新創公司,人不多,大約 30 來位,要製作可攜性的 IP,所以製程還未知,SoC 的合作夥伴未定,一開始想使用 FPGA 來驗證。

要在 FPGA 上使用 RTL 必須符合和 ASIC 不同的時脈和暫存器的規範,和希望的可攜性衝突,未來移植到 ASIC 必須改寫 RTL 程式碼。

RTC 是新的 IP,無過去的歷史包袱,總和以上,讓公司考慮高階合成 (High Level Synthesis, HLS) 設計方法,加上 NVIDIA 使用 HLS 成功經驗的鼓舞,決定採用 HLS 方法。


RTL 設計方法


在傳統的 RTL 流程中,先由演算法團隊以 C++ 實現演算法,寫成文件。再由 RTL 團隊解讀理解演算法和文件,開始實現 RTL 程式碼。



缺點有三:
  • 耗時, RTL 團隊必須理解演算法和文件
  • 人為理解演算法可以有誤差
  • 人為將 C++ 轉譯成 RTL 程式也可能出現誤差


HLS 設計方法


在 HLS 設計方法中,演算法團隊和 RTL 團隊而合為一,使用單一語言 C++,消除以上的問題。




HLS 程式碼加上 Timing Constraint Directives 和不具時脈資訊 C-model (untimed C-model) 結合,這是 HLS 程式碼可攜性的關鍵,可在 FPGA,以及不同製程的 ASIC 上實現,譬如,可在 ALTERA 或 TSMC 不同節點的製程上,實現 IP。




開發過程中,會發展 C++ 的 測試載具 (testbench) 來充分測試演算法,Catapult 會自動生成為這個 testbench 產生出 RTL 的介面,可以重複利用來測試 RTL 程式。

必須留意的是,Catapult HLS 並非又一個編譯器 (compiler),C++ 是硬體的程式碼,對硬體來說,有好的程式碼也有壞的程式碼。必須了解某個 C++ 為何被轉出某個 RTL 程式碼。演算法和原有的 RTL 團隊合一,效率最高。

看整段是設計時程,HLS 在演算法和 C++ 的實現為大部分,節省後續的 RTL 實現和驗證的時間,所以最後的演算法和架構的更動,變得可行。

新創團隊人數不多,用 HLS 可以快速開發具有可攜性,可以快速驗證的 IP。