張倩莉,于 芳,劉忠立,李 艷,陳 亮,李 明,郭旭峰
(1.中國科學院半導體研究所,100083 北京;2.中國科學院微電子研究所,100029 北京)
結合用戶約束文件的高效多FPGA系統分割方法
張倩莉1,2,于 芳2,劉忠立1,李 艷2,陳 亮2,李 明2,郭旭峰2
(1.中國科學院半導體研究所,100083 北京;2.中國科學院微電子研究所,100029 北京)
針對單個現場可編程門陣列(Field Programmable Gate Array,FPGA)可配置邏輯模塊(Configurable Logic Block,CLB)和輸入/輸出(I/O)數目受限難以滿足大規模復雜電路系統設計需要的問題,提出了一種結合用戶約束文件(User Constraint File,UCF)和單個FPGA的EDA(Electronic Design Automation)設計流程,通過部分人為干涉,對多FPGA(multi-FPGA)系統進行分割的方法.應用這種分割方法,可以提高multi-FPGA系統的劃分效率,簡化設計的復雜度.結果表明:基于這種分割方法的分割工具,結合multi-FPGA系統的硬件結構,可實現一個最多為9芯片multi-FPGA系統的設計和配置.
現場可編程門陣列;電子設計自動化;用戶約束文件;多FPGA系統;分割
隨著專用集成電路(Application Specific Integrated Circuit,ASIC)制造成本的日益增加以及FPGA在性能方面和ASIC差距逐漸縮小,加上FPGA具有市場周期短,成本低等明顯優點,因而FPGA正在成為各種實時設計平臺的重要選擇.但是,利用FPGA完成大規模復雜電路系統設計,仍存在一定的困難.其難點在于:與ASIC相比,FPGA的資源是有限的.由于FPGA在輸入/輸出(I/O)和CLB的數量上都是固定的,因此設計者在用FPGA作為平臺時,其電路規模受到限制.然而如果使用多個FPGA去實現大規模復雜電路系統,上述問題就迎刃而解了[1].
用戶在利用multi-FPGA系統實現大規模復雜電路系統時,電子設計自動化(Electronic Design Automation,EDA)成為了設計multi-FPGA系統的重要工具.利用EDA工具設計multi-FPGA系統時需要參照系統的硬件結構,因此在設計過程中不能按照傳統設計方法那樣在系統設計結束之后再設計PCB板,而是要對multi-FPGA系統和PCB板進行同步設計和修正.
通常情況下,利用multi-FPGA系統實現一個大規模復雜電路系統,設計流程包含:綜合、分割、全局布局、全局布線、單個FPGA布局、單個FPGA布線[2-3].其中,分割步驟中必須考慮如何將分割后的電路分配到multi-FPGA系統的各個FPGA中.分割步驟完成后,按照所使用的FPGA規模和結構,電路被劃分為若干部分.然后將分割后的若干電路在multi-FPGA系統平臺上進行全局布局,之后再通過全局布線進行線路調整和連接,最后進行單個FPGA布局和布線,從而完成multi-FPGA系統的設計工作.
multi-FPGA系統分割算法的基本原則是:使劃分后的邏輯規模小于單個FPGA的容量上限,同時保證劃分后各邏輯模塊之間信號線數量小于FPGA間的物理連線數量[4].目前,國內外采用的傳統分割方法是在綜合后的基本邏輯單元層面上進行的,分割過程在物理層面上考慮了是否滿足單個FPGA容量及FPGA之間信號連線數量等基本原則.通常的分割步驟主要采用以下算法[5]:
1)共享資源分割.將寄存器陣列的邏輯模塊拆分,然后將這些邏輯模塊和其所控制的邏輯模塊集成在一起.這樣,不需要在不同FPGA邊界之間設置寬的總線,并且減少了FPGA在I/O總數上的限制.2)重新分組邏輯以減少FPGA之間的連接.3)復制邏輯以減少FPGA之間的連接.4)對FPGA邊界的I/O采用時分復用.
上述分割算法存在著一些不足:沒有從電路設計者的設計意圖出發,不能在行為級分析整個電路的功能,容易在分割過程中將一個具有獨立功能的模塊拆分開,導致該模塊內部延遲增大.并且,采用這種分割方法的后續工作較多,對全局布局以及全局布線算法的要求很高,由于以整個multi-FPGA系統為單位進行布局布線,復雜度高,延遲也不容易控制.
針對上述傳統分割算法的不足,本文提出了一種結合UCF的高效multi-FPGA系統分割方法.經過本分割方法的劃分以后,可將multi-FPGA系統的設計轉化為多個單FPGA的設計,提高multi-FPGA系統的劃分效率,大大簡化了系統設計的復雜度.
利用FPGA實現電路的設計需要依托于EDA工具,本文自主開發的EDA軟件流程如圖1所示.電路描述文件經綜合、映射、布局布線及碼流生成等步驟,最后將生成的碼流文件下載到FPGA中,實現用戶所描述的電路功能.
在每個步驟之間通過文件的形式來傳遞電路信息,即利用綜合工具讀取電路描述文件,經綜合生成edif格式的文件作為映射工具的輸入;映射工具分析edif網表文件,結合FPGA的硬件結構,將基本邏輯單元(Basic Logic Element,BLE)進行打包(packing)、裝箱(clustering),完成符合可編程邏輯模塊(CLB)結構的映射工作,輸出一個.net格式文件;布局布線工具讀取映射的輸出文件,從而獲得可編程邏輯模塊和輸入輸出模塊(IOB)的網表信息,根據FPGA的硬件結構進行布局布線,生成.p和.r格式的輸出文件;根據布局布線的輸出,結合FPGA的可配置結構,利用碼流生成工具生成最終控制FPGA配置的碼流文件,經下載接口下載到FPGA內完成對FPGA的配置,這樣便完成了應用FPGA實現電路設計的工作.

圖1 EDA工具設計流程
基于結合UCF的multi-FPGA系統分割方法,開發出用于multi-FPGA系統的分割工具,此工具可以集成在自行開發的EDA流程內,也可以與其他FPGA軟件工具配合使用.
在分割工具中,UCF文件的約束和指導內容由用戶根據自己的設計特點和需求進行編寫,在電路的綜合階段對網表進行模塊標注,分割過程是通過部分人為干涉實現的.分割后生成多個針對各個FPGA的子網表文件,每個FPGA完全按照單個FPGA的EDA設計流程完成后續工作.這種分割工具可以提高multi-FPGA系統的劃分效率,并簡化系統設計的復雜度.
用戶約束文件是由用戶即電路設計者,按照自己的設計特點和需求,參照FPGA的硬件結構,對EDA設計流程中的部分步驟和內容做出約束和指導的文件.
現階段也有部分FPGA軟件采用UCF文件,例如Xilinx的ISE,但是在它的UCF文件中只是對芯片I/O引腳和一些時序進行約束[6].本文提出的多FPGA分割工具中使用的UCF不但可以對系統的結構信息進行描述,還可以針對邏輯和連線進行約束.
用戶約束文件是ucf格式的文件,一部分內容由用戶利用本文提供的EDA工具進行編寫,其余部分內容由本文的工具按照一定規則自動生成.在用戶編寫過程中,EDA工具能提供固定的格式以及內容限定.約束multi-FPGA系統分割的UCF文件包括下列信息:劃分子模塊的個數、劃分后每個子模塊的名稱及對應multi-FPGA系統中FPGA的序號、整個電路中的控制信號、電路中指定要分割的連線、模塊之間根據系統結構需要增加的貫穿連線.
針對其中指定要分割的連線以及貫穿連線部分,用戶只需要把強調需求的內容編寫在UCF內,分割工具會在初始化遍歷網表的過程中分析所有連線,并把需要進行處理的連線自動補充打印在UCF中.
在UCF約束下,multi-FPGA系統設計的流程如圖2所示.UCF文件可以在設計初期編寫,也可以在EDA工具各步驟中,根據生成的中間結果結合用戶需求進行修改并重新載入運行.

圖2 在UCF約束下multi-FPGA系統設計流程
在本設計流程中,綜合器讀取UCF的信息,結合算法對電路進行綜合,同時完成模塊劃分和標注;UCF內信息指導分割工具,結合綜合結果對電路進行分割,分割生成N(N為multi-FPGA系統中FPGA的個數)個子網表文件;映射、布局布線以及碼流生成工具分別針對每個子網表文件繼續EDA流程,最終生成N個配置文件并分別下載到multi-FPGA系統中的N個FPGA中,完成multi-FPGA系統的設計工作.
multi-FPGA 系統設計的核心問題是將電路模塊化,使每個模塊對應multi-FPGA系統中每一個FPGA,而這種模塊化通常在分割步驟中實現[7-8].
本文提出的分割方法除借鑒傳統分割原則外,還結合用戶約束文件進行了部分人為干涉,不僅從物理層面考慮,還考慮了模塊功能的完整性.
綜合工具和分割工具都會讀取UCF文件中關于multi-FPGA系統結構的信息,包括multi-FPGA系統由幾個FPGA組成、每個FPGA在系統中對應的編號及名稱、電路的時鐘信號名稱等信息,以指導后續工作的進行.
2.2.1 模塊的劃分與標注
綜合過程對模塊的劃分和標注是分割工具的主要參照標準,為了更好地還原用戶的設計意圖,在用戶設計電路時,需要在電路描述中對不同模塊進行標注命名,同時把這些作為標注的名稱記錄在UCF文件中.在綜合過程中,綜合工具將RTL級或行為級電路連接轉換為門級電路連接,同時按照電路的功能,參照UCF文件中的約束條件,根據電路的自然邊界將電路劃分為若干子模塊,并且對子模塊中每個基本邏輯單元進行標注命名,這樣綜合產生的每一個基本邏輯單元的名稱都包括它所屬子模塊的名稱.
根據用戶約束文件的內容及功能所述,用戶可以在得到綜合結果后結合自己的需求和目標修改UCF文件和電路描述文件,重新載入綜合器,以得到更適合設計預期的結果,同時可以參照綜合結果在UCF文件中添加約束條件.
2.2.2 分割工具的具體算法
分割過程完成了將一個完整電路信息的網表,分割成若干彼此相對獨立的電路網表的工作.
分割工具以綜合輸出的EDIF網表和UCF文件作為輸入文件,首先遍歷綜合輸出網表中的每一個基本邏輯單元,辨識基本邏輯單元的名稱,結合multi-FPGA系統中FPGA的個數和UCF文件中用戶添加的模塊標注名稱以及FPGA的名稱和編號信息,給每一個基本邏輯單元增加一個分割屬性,屬性值為該基本邏輯單元應屬multi-FPGA系統中FPGA的編號;接下來遍歷綜合輸出網表中的每一個連線,首先對UCF文件中指定的需要分割的連線進行分割.分割工具將其他UCF文件沒有明確約束但不屬于同一個FPGA的兩個邏輯單元之間的連線切斷,在斷開處分別加上I/O;最后,將屬于同一FPGA的所有邏輯單元和連線進行整合分類,生成若干個新的,并對應于multi-FPGA系統中各個FPGA的子網表文件.
在綜合結果的網表中會有一部分衍生邏輯單元由于所屬模塊不明確而沒有標注命名.分割工具將通過分析該邏輯單元與相鄰有標注邏輯單元的連接緊密程度來進行分割分配.具有控制功能或與其他模塊均緊密關聯的模塊將被分配到主芯片(main-chip)中.
2.2.3 控制信號的分割與分配
分割過程中對時鐘信號采用了在單個芯片內復制并在系統中全局控制的方法:時鐘信號是FPGA器件內部邏輯模塊工作所必須的,分割工具將時鐘信號在各個FPGA內部重新生成.所有FPGA的時鐘信號由系統時鐘控制.這樣,就解決了信號在FPGA之間傳遞可能引起偏差的問題,保證了整個multi-FPGA系統的時序同步性.
2.2.4 multi-FPGA系統的配置
multi-FPGA系統中各個FPGA的連接通過FPGA的I/O管腳和PCB板上預置的線路完成.分割結束后生成N個子網表文件,N為multi-FPGA系統中FPGA的個數.
在每個FPGA中,將分割后的子網表作為輸入,結合單個FPGA的EDA設計流程,完成對此芯片的映射、布局、布線、碼流生成及下載.
上述結合UCF的multi-FPGA系統分割方法優點在于:緊密地結合了用戶的設計理念和需求,從電路描述階段開始進行人為的模塊標注命名,實現了人為干涉和設計自動化的結合;分割思路簡單清晰,避免了在具有獨立功能模塊內部由于分割產生的不必要的延遲,并大大提高了系統劃分的效率;分割結束后就把問題從multi-FPGA系統的設計簡化成了幾個對單FPGA設計的問題,避免了算法復雜的全局布局和全局布線,降低了系統設計的復雜度和難度.
利用multi-FPGA系統的EDA工具設計需要參照multi-FPGA系統的硬件結構,即PCB板的設計結構.圖3為一個9芯片的multi-FPGA系統簡圖.圖中main-chip為主芯片,圍繞在主芯片周圍的8個芯片以順時針方向分別為chip0~chip7.各芯片與相鄰芯片之間的信號傳輸,通過芯片的I/O和PCB板上的線路連接直接實現;非相鄰芯片之間的信號傳輸,通過在介于這兩個芯片之間的芯片中加貫穿連線來實現.每個芯片的時鐘控制端都引出并匯集在系統的時鐘控制端,電路的時鐘信號通過系統的時鐘控制電路輸入,從而保證系統的時序同步.
在利用EDA工具進行multi-FPGA系統設計之前,用戶需要按照EDA工具規定的格式及電路設計的內容,設置用戶約束文件的內容.UCF的內容及形式包括:系統被劃分的模塊數量,即例如FPGA的個數9,每個模塊的名稱及其在multi-FPGA系統中對應的FPGA的編號,例如chip0~chip7以及main-chip,分割過程中必須分割的連線名稱及分割后對應的I/O,需要添加的貫穿連線的名稱及對應的I/O.

圖3 一個9芯片multi-FPGA系統簡圖
利用文中介紹的分割工具,將一個規模較大的電路分割成了9個相對獨立、分別對應于系統中9個芯片的子網表文件.分割結果如表1所示,其中multi-FPGA系統中9個FPGA全部使用本文自主研發的基于SOI工藝輻射加固的FPGA VS1000系列,每個FPGA有208個I/O引腳以及576個邏輯資源.所用實例名為pingpongd8.v,內容包括描述8個獨立的乒乓球運動軌跡的電路以及系統控制端.在電路描述中,對8個乒乓球的模塊分別命名為 pingpong0~pingpong7,并在 UCF文件中做相應的標注.分割結果顯示,分割工具將具有3 347個基本邏輯單元的原始文件按8個乒乓球及控制端的劃分方式分成了9個子網表,每個子網表所占用的邏輯資源及I/O數量滿足單個FPGA的容量.
然后將9個網表文件按照單個FPGA設計流程逐個進行映射、布局布線、碼流生成等操作,生成9個對應于各個FPGA的碼流文件并下載到相應的芯片中,最終完成了本例9FPGA的multi-FPGA系統設計.
通過上述方式,就把設計任務由用一個系統實現一個大規模集成電路轉換成為用9個芯片實現9個確定連接關系的電路,從而從基本思路上大大簡化了multi-FPGA系統設計的復雜性,提高了劃分效率.結合UCF文件的約束和指導,從用戶的設計意圖出發,保證電路各模塊功能和結構上的完整性.

表1 對實例pingpongd8的分割結果
1)分割過程以功能模塊為單位進行劃分,使各個FPGA的功能清晰獨立,并且彌補了在寄存器級劃分導致子系統間連線數目過多并容易產生延遲的不足;分割之后的流程完全簡化為針對單個FPGA進行的設計,相對于以整個系統為對象進行全局布局布線,提高了系統劃分的效率,大大降低了布局布線的難度和復雜性;加入用戶約束文件的約束和指導,在整個EDA設計過程中參照UCF文件并實時反饋,可以做到由用戶指導自動化設計工具,用戶可以在一定程度上根據自己設計思路和需求,對整個系統設計做出指導.本分割方法適用于在電路描述中模塊劃分清晰、各模塊功能定義較明確的大規模電路設計.
2)當用戶的大規模集成電路設計模塊化不夠清晰或者模塊之間的聯系過于緊密時,利用本算法分割出的各個子模塊之間的連線會比較多,單個FPGA的I/O數目可能成為限制;貫穿連線的添加也會造成FPGA的I/O負擔.針對這兩個問題的對策是:分割過程中加強全局布局的考慮,對子模塊的位置信息進行分析和調整,以減少貫穿連線的添加;以模塊自然邊界劃分為基礎,對于多連線邊界進行拆分重組,適當調整模塊歸屬,以減少I/O的使用.
[1]LADDHA S,De KUMAR B.EDA tools and design methodology for multi-fpga designing/prototyping[EB/OL].[2009-11 -16].http://http://www.design-reuse.com/articles/22074/for-multi-fpga-designing-prototyping.html.
[2]HIDALGO J I,LANCHARES J,HERMIDA R.Partitioning and placement for multi-fpga systems using genetic algorithms[C]//Proceedings of the 26th Euromicro Conference.Washington,DC:IEEE Xplore,2000:204 -211.
[3]HAUCK S,BORRIELLO G.Pin assignment for multi-FPGA systems[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,1997,16(9):956-964.
[4]ARCE-NAZARIO R A,JIMENEZ M,RODRIGUEZ D.High-level paritioning of discrete signal transforms for multi-FPGA architectures[C]//Proceedings of the 2006 International Conference on Field-Programmable Logic and Applications.Washington,DC:IEEE Xplore,2006:1 -4.
[5]胡文彬,吳劍旗,洪一.多FPGA驗證平臺引腳限制的解決方案[J].合肥工業大學學報(自然科學版),2010,33(10):1519-1522.
[6]薛小剛,葛毅敏.Xinlinx ISE 9.X FPGA/CPLD設計指南[M].北京:人民郵電出版社.2007:173-207.
[7]宋威,方穗明,姚丹,等.多FPGA設計的時鐘同步[J].計算機工程,2008,34(7):245-247.
[8]HAUCK S,BORRIELLO G.Logic partition orderings for multi-FPGA systems[C]//Proceedings of the 1995 ACM Third International Symposium on Field-Programmable Gate Arrays.New York,NY:ACM,1995:32-38.
[9]SUH Jinwoo,KANG Dong-In,CRAGO S P.A communication scheduling algorithm for multi-FPGA system[C]//Proceedings of the 2000 IEEE Symposium on Field-Programmable Custom Computing Machines.Washington,DC:IEEE Computer Society,2000:299 -300.
[10]VOOTUKURU M,VEMURI R,KUMAR N.Resource constrained RTL partitiong for synthesis of multi-FPGA design[C]//Proceedings of the Tenth International Conference on VLSI Design:VLSI in Multimedia Applications.Washington,DC:IEEE Computer Society,1997:140-144.
An efficient partitioning method with UCF for a multi-FPGA system
ZHANG Qian-li1,2,YU Fang2,LIU Zhong-li1,LI Yan2,CHEN Liang2,LI Ming2,GUO Xu-fen2
(1.Institute of Semiconductor,Chinese Academy of Sciences,100083 Beijing,China;2.Institute of Microelectronics,Chinese Academy of Sciences 100029 Beijing,China)
FPGA has fixed number of I/O or CLB,which resulting in a limitation to the implementation of a very large complex system in a single FPGA.This paper addresses a partitioning method used for a multi-FPGA system implementation with partly guidance of User Constraint File and FPGA EDA flow.The partitioning method can improve the partitioning efficiency,and reduce the complexity of a multi-FPGA system design.Based on the proposed method and the multi-FPGA system architecture,a partitioning tool was implemented,which has the capability of designing a nine-chip multi-FPGA system.
FPGA;EDA;UCF;multi-FPGA system;partitioning
TP47
A
0367-6234(2012)07-0144-05
2011-07-15.
張倩莉,(1986-),女,博士研究生;
于 芳,(1960-),女,研究員,博士生導師;
劉忠立,(1940-),男,研究員,博士生導師.
張倩莉,zhangqianli@ime.ac.cn.
(編輯 張 紅)