張海平,萬 清
(中國電子科技集團公司第58研究所,江蘇 無錫 214035)
FPGA(Field Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。當(dāng)前,中國所采用的FPGA芯片基本依賴于進口,受制于國外巨頭公司的壟斷,在芯片型號和封裝類型等方面都受到很多限制,成本壓力很大,在國防戰(zhàn)略安全方面也有很大的風(fēng)險。與ASIC不同,F(xiàn)PGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,用戶需要對片內(nèi)的RAM進行編程。FPGA產(chǎn)品不僅包含F(xiàn)PGA芯片,還必須提供配套的EDA軟件才能使用。配套的EDA軟件的主要功能包括設(shè)計輸入、綜合、仿真、實現(xiàn)和下載,涵蓋用戶FPGA 編程的全過程。
研發(fā)具有自主知識產(chǎn)權(quán)的FPGA芯片及其配套的EDA工具具有重要意義,已成為一個迫在眉睫的問題。自主千萬門級FPGA產(chǎn)品開發(fā)平臺集成了軟件開發(fā)和芯片設(shè)計兩種環(huán)境,用于研發(fā)具有自主知識產(chǎn)權(quán)的千萬門級FPGA產(chǎn)品。軟件開發(fā)環(huán)境集成了 Microsoft Visual Studio和其他軟件開發(fā)工具,用于開發(fā)與FPGA芯片配套的EDA軟件。芯片設(shè)計環(huán)境集成了一套滿足pdk庫要求的EDA工具,用于開發(fā)FPGA集成電路芯片。兩種環(huán)境集成在一個平臺上,便于軟件開發(fā)工程師和芯片設(shè)計工程師之間的數(shù)據(jù)傳輸和信息共享。
系統(tǒng)集成(SI,System Integration)是以用戶的應(yīng)用需要為出發(fā)點,綜合應(yīng)用各種計算機網(wǎng)絡(luò)相關(guān)技術(shù),適當(dāng)選擇各種軟硬件設(shè)備,經(jīng)過相關(guān)人員的集成設(shè)計、安裝調(diào)試、應(yīng)用開發(fā)等大量技術(shù)性工作,使集成后的系統(tǒng)能夠滿足用戶對實際工作的要求,開發(fā)出具有良好性能的計算機網(wǎng)絡(luò)系統(tǒng)的全過程。FPGA開發(fā)平臺的系統(tǒng)集成以虛擬化技術(shù)為基礎(chǔ),集成了軟件開發(fā)和芯片設(shè)計兩種環(huán)境。虛擬化技術(shù)是對物理資源(CPU、內(nèi)存、網(wǎng)絡(luò)等)的邏輯表示,以降低物理資源不同層次之間的耦合程度,使系統(tǒng)所需資源不受物理資源的限制,從而獲得高性能、高可擴展性等特性。通過應(yīng)用虛擬化技術(shù),實現(xiàn)主機和存儲資源的一體化整合、主機和存儲資源的共享利用,提高資源利用率。
虛擬化軟件品牌有VMWare(免費的是ESXi,收費的是vSphere)、思杰(免費的是XenServer,收費的是Essentials)、KVM、微軟(Hyper-V)等。VMWare的vSphere相對比較成熟,可以安裝于大多數(shù)操作系統(tǒng)。通過服務(wù)器虛擬化,可以將一臺服務(wù)器當(dāng)做N臺服務(wù)器來使用,比如一臺性能強勁的物理服務(wù)器可以虛擬出數(shù)臺虛擬服務(wù)器,這樣對于計算能力要求不高的系統(tǒng),可以實現(xiàn)多個系統(tǒng)在一臺物理服務(wù)器上運行而不會互相影響。多臺物理服務(wù)器可以組建服務(wù)器集群,使用相應(yīng)管理軟件來托管,實現(xiàn)負載均衡和故障轉(zhuǎn)移。服務(wù)器集群包括運行服務(wù)器和存儲服務(wù)器。運行服務(wù)器承載計算負載,存儲服務(wù)器承載存儲負載。服務(wù)器集群將運行服務(wù)器組構(gòu)成一個虛擬化資源池,然后將虛擬化計算資源重新劃分,并分配給桌面虛擬機的實例。虛擬機實例能夠無縫運行電腦操作系統(tǒng)和應(yīng)用。根據(jù)同一個虛擬機模板復(fù)制、創(chuàng)建而成的桌面虛擬機實例具有相同的配置和功能。當(dāng)服務(wù)器集群中的某個物理服務(wù)器出現(xiàn)異常時,其上面運行的虛擬機實例可以快速地遷移到其他物理服務(wù)器上繼續(xù)運行。存儲服務(wù)器上存放所有的桌面虛擬機實例,集中存儲用戶配置文件、用戶資料及虛擬機OS鏡像。
本文的FPGA開發(fā)平臺選用VMware ESXi5.1作為服務(wù)器虛擬化軟件,平臺總體框架如圖1所示。
圖1 FPGA開發(fā)平臺總體框架
(1)用5臺戴爾R720物理服務(wù)器組建服務(wù)器集群,用NetApp FAS3210提供共享存儲。服務(wù)器集群提供一個虛擬化層,該層可將物理主機的處理器、內(nèi)存、存儲器及網(wǎng)絡(luò)資源等抽象化為多臺虛擬機。
(2)vCenter Server是整個虛擬化架構(gòu)的管理中心,主動監(jiān)控客戶端設(shè)備與桌面虛擬機的連接狀態(tài),當(dāng)客戶端設(shè)備請求與桌面虛擬機斷開連接時,vCenter Server便會結(jié)束會話、斷開此連接,根據(jù)相應(yīng)的調(diào)度策略釋放虛擬機資源,對桌面虛擬機實例做相應(yīng)的處理。vCenter Server同時動態(tài)地監(jiān)測服務(wù)器的負載情況,保證將用戶連接到負載最輕的服務(wù)器,并保證任何服務(wù)器出現(xiàn)故障后自動把用戶引導(dǎo)到正常工作的服務(wù)器上。
(3)vShere Client用作虛擬機的管理控制臺,提供vCenter Serve和ESX主機的管理界面。
(4)按照FPGA芯片設(shè)計流程,在兩臺高性能服務(wù)器上集成FPGA芯片設(shè)計流程中各個階段所需要的Cadence、Synopsys、Mentor等公司的各種EDA工具。
(5)本地用戶使用SunRay瘦客戶機訪問各自的虛擬機,遠程用戶使用SGD訪問各自的虛擬機。本地或遠程訪問都是通過SunRay server或SGD Server推送桌面到終端,在服務(wù)器和終端之間傳輸?shù)膬H僅是鼠標(biāo)鍵盤的輸入和屏幕的變化量,終端只負責(zé)交互,所有計算和存儲都在服務(wù)器端完成。
依據(jù)上述設(shè)計方案,具體實施的關(guān)鍵步驟如下:
(1)在5臺戴爾R720物理服務(wù)器上安裝VMware ESXi 5.1操作系統(tǒng)。在其中一臺ESXi主機上安裝vCenter Server,在管理用PC機上安裝vShere Client。在vShere Client上登錄到vCenter Server,建立主機集群cluster,將5臺主機加入cluster,將NetApp分配的存儲加入數(shù)據(jù)存儲群集,為每個vlan建立對應(yīng)的虛擬交換機。至此,一個完整的虛擬化層構(gòu)建完畢。
(2)新建幾個虛擬機,分別安裝Windows 2008 R2、Windows7、Windows8、Solaris10、Redhat Enterprise等操作系統(tǒng),并將安裝好的操作系統(tǒng)轉(zhuǎn)換成模板。
(3)從模板部署虛擬機,分別建立SunRay server、SGD server、SGD GateWay server、AD server、exchange server、ftp server、svn server、bugzilla server、NTP server、NIS server、FLEXlm server等服務(wù)器。
(4)根據(jù)EDA工具對操作系統(tǒng)版本的要求,分別在兩臺高性能服務(wù)器(戴爾R910,每臺1T內(nèi)存,40核CPU)上安裝Redhat Enterprise 4 update 8和Redhat Enterprise 5 update 8兩個版本的操作系統(tǒng)。集成電路芯片設(shè)計集成環(huán)境IDE(Integrated Development Environment)需要滿足foundary廠家PDK庫的要求。PDK(process design kit)是溝通IC設(shè)計公司、代工廠與EDA廠商的橋梁。PDK用代工廠的語言定義了一套反映foundary工藝的文檔資料,包含了反映制造工藝的基本數(shù)據(jù)集。根據(jù)PDK對EDA工具及版本的要求,在兩臺高性能服務(wù)器上按照FPGA芯片設(shè)計流程,集成了設(shè)計流程中各個階段所需要的Cadence、Synopsys、Mentor等公司的EDA工具。
(5)安裝版本控制和缺陷追蹤等管理軟件。在整個FPGA開發(fā)流程中,無論是配套EDA軟件的開發(fā)還是FPGA芯片設(shè)計,每一個設(shè)計環(huán)節(jié)都需要一個團隊來完成。在多團隊緊密合作開發(fā)流程中,版本控制和缺陷追蹤等管理軟件是必不可少的。在FPGA開發(fā)平臺上,安裝了SVN、SOS版本管理軟件和Bugzilla缺陷追蹤軟件。SVN是開源軟件,適合配套EDA軟件開發(fā)中的代碼版本控制和芯片設(shè)計流程中的文檔版本管理。SOS是ClioSoft公司開發(fā)的集成電路設(shè)計數(shù)據(jù)版本控制軟件,支持Cadence公司virtuoso平臺的DFII。 開源的Bugzilla是一個搜集缺陷的數(shù)據(jù)庫,它用于記錄和管理產(chǎn)品缺陷從發(fā)現(xiàn)到修復(fù)的全流程。
(6)從模板部署虛擬機,按設(shè)計工作需求,為每位用戶分配一臺或兩臺虛擬機。每臺虛擬機均按需求配置好軟件開發(fā)編程、文檔處理、郵件通訊等環(huán)境。為保障FPGA開發(fā)平臺穩(wěn)定運行和資源的充分利用,需要對平臺中的虛擬機進行合理的調(diào)度,確保虛擬化服務(wù)器集群的負載均衡和存儲系統(tǒng)的負載均衡。在優(yōu)化過程中需要分析虛擬機的歷史數(shù)據(jù),統(tǒng)計虛擬機資源的使用情況,對分配不合理的虛擬機進行優(yōu)化,為每個虛擬機分配合理的計算能力(CPU和內(nèi)存)以及存儲和網(wǎng)絡(luò)流量。
(7)登錄SunRay server,將分配給用戶的虛擬機和集成電路芯片設(shè)計集成環(huán)境發(fā)布到對應(yīng)的SunRay終端。打開Windows虛擬機上的遠程登錄服務(wù),選擇僅允許運行使用網(wǎng)絡(luò)級別身份驗證的遠程桌面的計算機連接。Linux操作系統(tǒng)配置XDM服務(wù)以允許遠程登錄。
(8)登錄到SGD Server,發(fā)布用戶對應(yīng)的虛擬機和集成電路芯片設(shè)計集成環(huán)境。SGD(Secure Global Desktop)是一個跨平臺的應(yīng)用軟件,具有Web化、跨域的安全訪問控制、優(yōu)化的遠程訪問效率和靈活的用戶認證等特點,可以快速實現(xiàn)網(wǎng)絡(luò)應(yīng)用的集中管理和發(fā)布、安全地實現(xiàn)遠程應(yīng)用訪問。在FPGA開發(fā)平臺中,軟件開發(fā)環(huán)境和集成電路芯片設(shè)計環(huán)境中的各種應(yīng)用,如linux系統(tǒng)的EDA工具、windows系統(tǒng)的軟件開發(fā)工具等應(yīng)用程序,都可以通過SGD遠程顯示,遠程用戶用IE瀏覽器或Firefox瀏覽器通過互聯(lián)網(wǎng)就能夠使用FPGA開發(fā)平臺上的各種應(yīng)用軟件。
在FPGA開發(fā)平臺上已經(jīng)完成第一個全自主千萬門級FPGA的MPW芯片設(shè)計。設(shè)計團隊采用中芯國際SMIC 40 nm CMOS技術(shù),用正向設(shè)計的方法,設(shè)計基于SRAM配置的面向高性能通用邏輯與信號處理的自主千萬門級FPGA器件。器件含有數(shù)字ASIC電路、全定制電路、數(shù)?;旌想娐芬约癿emory complier等。
FPGA開發(fā)平臺采用虛擬化的網(wǎng)絡(luò)架構(gòu),集成FPGA軟件開發(fā)環(huán)境和集成電路芯片設(shè)計環(huán)境,利用SVN、SOS版本控制和Bugzilla缺陷管理軟件,進行設(shè)計數(shù)據(jù)和文檔的規(guī)范化、標(biāo)準(zhǔn)化管理,實現(xiàn)了設(shè)計數(shù)據(jù)的版本可追溯、可查詢、可更新。FPGA開發(fā)平臺是為面向高性能通用邏輯與信號處理的自主千萬門級FPGA課題產(chǎn)品研發(fā)建立的設(shè)計平臺。在FPGA開發(fā)平臺上,已經(jīng)完成第一個全自主千萬門級FPGA的第一次MPW芯片設(shè)計,打通了數(shù)字ASIC設(shè)計、定制設(shè)計、數(shù)?;旌显O(shè)計全流程。
[1] 張峰,李艷,等. 用于FPGA的多層次集成設(shè)計系統(tǒng)的設(shè)計與實現(xiàn)[J]. 深圳大學(xué)學(xué)報理工版,2012,29(5):377-385.
[2] 朱運航. EDA技術(shù)在芯片設(shè)計中的發(fā)展與應(yīng)用[J]. 信息技術(shù),2006,(5):184-186.
[3] 宋正國,刁秀麗. 虛擬實驗教學(xué)環(huán)境研究現(xiàn)狀及趨勢探悉[J]. 現(xiàn)代教育技術(shù),2009,19(12):115-117.