黃 梅
HUANG Mei
(樂山職業技術學院,樂山 614000 )
在現代的集成電路設計過程中,常常使用“用磚頭,蓋房子”類似的方法來進行大規模項目的設計。硅IP模塊就是蓋房子用的“磚頭”。“磚頭”質量的好壞,直接決定了整個集成電路設計的成敗。對于集成電路而言,在大多數情況下,任何小缺陷都會造成整個集成電路的失敗,因此在商業過程中,往往采用經過市場驗證過的硅IP,或者經過反復驗證該IP的可用性。驗證IP的質量和性能,逐漸成為設計工作中價值最大,最耗費人力和才智的工作。隨著計算機軟件技術的進步,出現了許多計算機軟件工具用于提高設計的自動型,以避免人為錯誤。然而,由于摩爾定律的作用,集成電路上晶體管的成本在不斷下降,越是大型的設計可能反而性價比越高,迫使商業公司和其他機構不斷往電路上加入更多更復雜的設計,來保持市場競爭力。在摩爾定律作用下,芯片成本線性降低,規模線性增長,但復雜度卻呈現指數上漲趨勢,導致原有的軟件設計工具越來越難以滿足需要。
1)芯片的設計規模不斷翻番,但計算機的硬件性能卻不能同步增長;2)即使使用最先進的計算機硬件,但操作系統的能力又再次限制了系統的性能。主流的計算機操作系統,從16位,到32位,到64位,三次跨越耗費了近30年時間,但芯片設計規模,仍然保持18個月就翻番。當前主流的操作系統,其程序使用空間如WindowsXP 32bit和NT系統,僅僅在2G~3G Byte之間,但千萬門級的設計,在現在已經只能算中等規模設計,就是讀入這樣的設計,已經讓當前的主流計算機系統狼狽不堪,仿真這樣的設計,幾乎到了無路可走的地步;3)在使用軟件對集成電路IP進行設計時候,測試向量的生成可能非常困難。由于軟件工具靠手工輸入數據,在面臨大量數據處理的設計時候,手工輸入幾乎成為了不可能的事情。典型的就是比如高清視頻信號處理,每秒鐘的仿真,需要輸入的數據量達到了1920X1080X30X3=186624000 byte,也就是說接近200MB。對這么大量的數據,進行大規模軟件仿真,已經不現實了。所以,配合新技術新方法的出現,大型商業設計往往采用以下思路進行:
1)將大型設計盡量分割開,區分可靠設計和待完成設計,重點把時間用在待完成設計上。團隊能并行進行設計工作。
2)采用可編程器件(FPGA),將芯片待開發的硅IP映射到可編程器件中,讓可編程器件模擬硅IP的工作。
由于可編程器件并行工作,其運行速度遠高于計算機軟件仿真,還可以反復擦寫可編程器件,使測試和調整變得更容易,還可以反復測試和驗證修改結果。這個過程常常被稱為FPGA原型驗證。同時,可編程器件的軟件還兼顧一個優點,就是可以通過軟件編譯結果,查看硅IP大致的資源使用狀況,方便設計者調整硅IP流片形成的成本。比較典型的就是信號處理器的乘法器,在算法不斷調整優化的情況下,乘法器常常占到設計1/3的晶體管,為了使得芯片成本更便宜,開發者常常想辦法降低乘法器使用的晶體管,比如浮點乘法器改定點、高精度轉低精度,用幾個小型乘法器替代大型乘法器等。
目前,主流的設計,已經開始慢慢接受和采用上述開發手段。但是上述開發手段又出現了新的不匹配。例如IP的輸入輸出系統。把一個IP看成一組信號輸入和輸出的系統。在現實的物理世界,每個系統的輸入輸出通常是比較穩定的。如網絡接口、無線廣播信號、圖像信號、聲音信號等等。但采用可編程器件來模擬硅IP,則引起了新的問題,就是每次硅IP調整后,可能占用的可編程資源都不同,其運行速度和性能都將發生變化,從而導致對外部信號的處理能力出現不匹配的狀況;再如原先能接受1.25M無線GSM手機信號,運行在80Mhz,修正后只能運行在75Mhz了,盡管內部處理過程邏輯正確、外部信號輸入仍然不變,但FPGA仿真系統卻無法提供更高性能而正確工作了。因此,要在FPGA里調試IP,并不是容易的事情,為FPGA原型系統提供準確的數據通路,變得非常重要。
3)嵌入式軟處理器與待驗證的IP相融合,將提高IP的騅證。
若將嵌入式軟處理器與待驗證的IP相融合,將為IP的驗證帶來極大的便利。主要原因為:
(1)軟處理器本身與待驗證IP可以共享時鐘和其他FPGA資源,其運行速度很容易與待驗證IP匹配;
(2)軟件處理器的及其外圍資源,比如IO接口、總線、存儲器資源,都是動態可配置的成熟IP資源,其運行規模和實時性可配置而達到待驗證IP的驗證要求;
(3)軟件處理器的外部接口資源,容易與PC系統連接,建立起PC資源與待驗證IP之間的數據橋接通道;
(4)軟處理器和PC資源相配合,能產生超越馮。諾曼體系結構的計算系統(在傳統的馮。諾曼結構里,程序被固化在固定的存儲空間,處理器按照固定的路徑執行和跳轉;而軟處理器與PC資源相結合,則能隨時用PC來更新軟處理器運行的程序代碼和功能),成為特殊的計算方案,非常有利于IP設計的反復迭代優化過程。
以Xilinx公司的軟處理器MicroBlaze為例,介紹一個待驗證的視頻解碼(或者編碼或者圖像增強)IP的驗證過程,其主要思路是:
待驗證IP作為MicroBlazer軟處理器的外設運行,其輸入和輸出由軟處理器系統來調度和存儲,由于軟處理器系統在同一個FPGA中運行,因此能使用高帶寬和實時性的外部直連內存池為待驗證IP提供足夠的實時性和帶寬需求;同時由于軟處理器本身可編程,就可以對待驗證的IP輸入輸出需求進行模擬和匹配;軟處理器系統也提供了與PC通訊的能力,因此PC上能方便地產生測試向量并解讀軟處理器系統發回的驗證結果。當驗證開始時,FPGA復位啟動了軟處理器,軟處理器啟動后將PC端生成的測試向量通過PC接口下載到FPGA控制的內存池當中;當測試向量下載完成,軟處理器的程序再啟動待驗證IP,并根據待驗證IP的需求不斷將內存池中的測試向量發送給待驗證IP,然后取得處理結果,仍然存放在內存池中;當測試向量完成處理,軟處理器就暫停待驗證IP,然后向PC發送驗證結果;驗證結果在PC上就會很容易被檢查了。
1)將待驗證IP轉化為Microblazer能夠控制的IP。
MicroBlaze能夠以200Mhz的性能運行,其總線接口OPB/PLB基本能同步運行,8條FSL接口各自運行速度在600Mbps。而一般的待驗證IP運行速度在50~80Mhz。這樣我們就能將待驗證IP轉化為Microblazer能夠控制的IP。
(1)將待驗證視頻IP接口中的全局時鐘,Reset信號上加入控制電路,使得Microblazer通過寄存器操作能對待驗證IP進行全局復位和時鐘速度切換。
(2)將待驗證視頻IP的輸入輸出數據格式,轉化為MicroBlazer總線系統接口,由于PLB總線速率較低,一般采用OPB總線,為了達到更大吞吐量,需要配置OPB總線的DMA模塊,在需要更大實時吞吐量的場合,則采用FSL接口,與Microblazer實現指令級的同步。這樣,在軟處理器看來,待驗證視頻IP可以成為軟處理器子系統的兩個外設設備。
2)利用MicroBlazer資源進行IO資源轉換。
由于軟處理器系統與待驗證IP系統在同一個FPGA內運行,我們要保證軟處理系統能消除待驗證系統的輸入輸出瓶頸。
(1)配置MicroBlazer的存儲器接口為DDR2,64bit,533Mhz,4G容量,Xilinx軟件能自動生成內存控制器。利用MicroBlazer的32位尋址能力,它能實現4GBye容量的總數據吞吐量作為緩存。就高清視頻解碼或者壓縮來說接近20秒,其性能是8.5GB/s,已經能充分滿足驗證需求。
(2)配置MicroBlazer系統與PC通訊的資源,這里我們采用USB接口,能實現熱插拔,我們采用成熟方便的Cypress68013接口芯片與系統掛接,其極限數據持續傳輸率在20MB/s左右。因此,比起通常的PC的IO能力用于驗證,軟處理器系統能輕易提高400倍的性能。
3)生成軟處理器與待驗證IP的硬件系統
Xilinx在轉化用戶邏輯到FPGA配置過程中,有一個網表生成的過程,其軟處理器和周邊資源以宏單元方式在網表階段,與其他IP網表相結合,這樣保證了其軟處理和相關資源不會被盜用到其他FPGA平臺或者用于ASIC設計。因此,我們可以在Xilinx的設計工具EDK里面,按照Wizard生成包含軟處理器、總線、內存控制器等子系統,再將修正過接口的USB通訊接口和待驗證IP作為設備連接在子系統上。只要相關接口符合規范,EDK軟件就自動完成了網表合并,生成FPGA的硬件配置文件。
4)軟處理器的軟件編程
(1)軟件處理器的軟件主要完成3個模塊。與PC的通訊模塊,實現了內存池與PC的數據交換;待測IP的啟動和終止;伺服待驗證IP的數據輸入輸出。前兩個模塊相對穩定是通用模塊,伺服待驗證IP的數據輸入輸出則與待驗證IP的特性有關。在待驗證IP通過硬件橋接到標準軟處理器總線的情況下,軟件通用性和移植性就很好保證;若采用簡單連接,則用軟件來為待測模塊提供輸入輸出特性,靈活性強,但系統運行性能低一些,移植性和通用性也弱一些。Xilinx的EDK工具能使得用戶直接采用C語言和C++進行編程,并自動根據硬件配置設置好軟件環境。因此調整軟件是非常方便的。
(2)軟件處理器的軟件最好控制軟件長度和復雜度。當軟處理器軟件代碼長度能夠在FPGA內部放下的時候,能取得最高的性能;其次,就必須映射到外部存儲器完成,內存帶寬影響到處理器的運行能力;最差就是采用外部的非易失性存儲器來存儲代碼,運行速度最慢。因此建議主要模塊在軟處理器中完成,但負責調度的工作流程可以不在軟件處理器內完成,而由PC軟件遠程調度。這樣能實現更大的靈活性,并節省代碼長度。
經驗表明,FPGA原型驗證方法比PC軟件模擬進行IP驗證,能提高系統運行速度1000倍以上;而如果采用FPGA進行原型驗證,但輸入輸出結果直接依賴PC,不但效率大大降低,而且對IP的驗證覆蓋效果也因為待驗證IP的IO性能瓶頸大大降低;嵌入式處理器系統的出現,結合了PC的靈活資源與FPGA的性能優勢,大大改善了IP設計效果,尤其適合高性能高帶寬要求的IP驗證。
[1] 數據信號處理FPGA電路設計[M]. 高等教育出版社出版.
[2] FPGA嵌入式系統設計[M]. 電子工業出版社出版.
[3] XilinxFPGA開發實用教程[M]. 清華大學出版社出版.