對于需要在PCB板上使用大規(guī)模FPGA器件的設(shè)計(jì)人員來說,I/O引腳分配是必須面對的眾多挑戰(zhàn)之一。由于眾多原因,許多設(shè)計(jì)人員發(fā)表為大型FPGA器件和高級BGA封裝確定I/O引腳配置或布局方案越來越困難。但是組合運(yùn)用多種智能I/O規(guī)劃工具,能夠使引腳分配過程變得更輕松。
在PCB上定義FPGA器件的I/O引腳布局是一項(xiàng)艱巨的設(shè)計(jì)挑戰(zhàn),即可能幫助設(shè)計(jì)快速完成,也有可能造成設(shè)計(jì)失敗。在此過程中必須平衡FPGA 和 PCB兩方面的要求,同時(shí)還要并行完成兩者的設(shè)計(jì)。如果僅僅針對PCB或FPGA進(jìn)行引腳布局優(yōu)化,那么可能在另一方面引起設(shè)計(jì)問題。
為了解引腳分配所引起的后果,需要以可視化形式顯示出PCB布局和FPGA物理器件引腳,以及內(nèi)部FPGA I/O點(diǎn)和相關(guān)資源。不幸的是,到今天為止還沒有單個(gè)工具或方法能夠同時(shí)滿足所有這些協(xié)同設(shè)計(jì)需求。
然而,可以結(jié)合不同的技術(shù)和策略來優(yōu)化引腳規(guī)劃流程并積極采用Xilinx PinAhead技術(shù)等新協(xié)同設(shè)計(jì)工具來發(fā)展出一套有效的引腳分配和布局方法。賽靈思公司在ISE軟件設(shè)計(jì)套件10.1版中包含了PinAhead。
賽靈思公司開發(fā)了一種規(guī)則驅(qū)動的方法。首先根據(jù)PCB和FPGA設(shè)計(jì)要求定義一套初始引腳布局,這樣利用與最終版本非常接近的引腳布局設(shè)計(jì)小組就可以盡可能早地開始各自的設(shè)計(jì)流程。如果在設(shè)計(jì)流程的后期由于PCB布線或內(nèi)部FPGA性能問題而需要進(jìn)行調(diào)整,在采用這一方法晨這些問題通常也已經(jīng)局部化了,只需要在PCB或FPGA設(shè)計(jì)中進(jìn)行很小的設(shè)計(jì)修改。
步驟1: 評估設(shè)計(jì)參數(shù)
那么,從哪里開始呢? 首先應(yīng)當(dāng)盡早制定I/O分配策略。 但沒有優(yōu)化工具或完整的網(wǎng)表,完成這一任務(wù)可能很困難。
首先,讓我們先回答幾個(gè)問題來確定PCB物理參數(shù)和限制:
* PCB板有幾層、走線寬度以及過孔尺寸多大?
* PCB參數(shù)對可使用的FPGA封裝類型(如BGA)有限制嗎?
* PCB上有沒有FPGA必須使用的固定接口位置? 其它芯片、連接器或布局限制?
* 哪些高速接口需要特別關(guān)注?
能否將布局策略可視化,從而保證最短互連?
你會發(fā)現(xiàn)畫一張PCB布局圖很有幫助。PCB布局圖上應(yīng)當(dāng)包括所有主要元器件以及關(guān)鍵接口和總線,從而可以幫助確定最佳的FPGA引腳分配。請注意將元器件畫在PCB板的實(shí)際安裝面上。標(biāo)注出需要特別關(guān)注的接口,如高速總線和差分對(圖1)。
下一步,檢查FPGA器件的布局來了解芯片上的物理資源所在。列出設(shè)計(jì)中使用的不同電壓和時(shí)鐘,開始隔離設(shè)計(jì)需要的接口。然后確定設(shè)計(jì)是否使用特殊的I/O接口資源,如千兆收發(fā)器(GT)、BUFR、IODELAY以及數(shù)字時(shí)鐘管理器。這些資源可能需要將有關(guān)的I/O引腳布署得盡量互相靠近。
現(xiàn)在需要確定設(shè)計(jì)中使用的PowerPC、DSP48和RAM16等FPGA資源的位置。將連接到I/O組的任何相關(guān)I/O盡量置于盡相關(guān)資源最近的地方。然后看一下能否將某些I/O信號組合到接口,這對于引腳分配很有幫助。最后,確定FPGA的配置模式。
圖1 PCB連接圖
步驟2: 定義引腳布局要求
一旦了解了主要的FPGA接口并創(chuàng)建了物理布局的原型,就可以定義引腳布局了。有些設(shè)計(jì)人員喜歡使用包含所有I/O信號數(shù)據(jù)表來保持與引腳的對應(yīng)。你可以按電壓、時(shí)鐘、接口或總線對它們進(jìn)行分組。這一方法確實(shí)非常有用,因?yàn)樗蓭椭銓⑿盘柦M合成組,從而在分配引腳時(shí)可以按組進(jìn)行。這一階段,你還會發(fā)現(xiàn)為了實(shí)現(xiàn)最優(yōu)PCB布線,有些關(guān)鍵接口必須置于器件的某個(gè)邊,或者利用外部物理引腳。
在考慮到FPGA和PCB要求并確定了主要的接口位置以后,下一步是根據(jù)所有這些條件將引腳分配給I/O組。這也是真正開始工作的地方。在當(dāng)前的設(shè)計(jì)流程中,引腳分配時(shí)一項(xiàng)耗費(fèi)時(shí)間的任務(wù),在解決任何性能和信號完整性問題的過程中可能會涉及許多嘗試和錯(cuò)誤。傳統(tǒng)上,設(shè)計(jì)人員都是徒手畫圖來完成這項(xiàng)任務(wù)的,因?yàn)?a href="http://ttokpm.com/v/tag/1053/" target="_blank">EDA和芯片供應(yīng)商沒有提供幫助設(shè)計(jì)人員將FPGA和PCB引腳布局可視化的工具。
但現(xiàn)在賽靈思公司提供了相應(yīng)的工具。 在ISE Foundation軟件工具10.1版本中包含的PlanAhead Lite是PlanAhead設(shè)計(jì)、分析和平面布局工具的簡化版。 其中包括的針對PCB 和 FPGA設(shè)計(jì)的PinAhead的工具使得I/O引腳配置更為容易。
這里我們不打算詳細(xì)介紹該工具的所有細(xì)節(jié),而只是看一下如何將其用于I/O引腳分配。如果你希望了解PinAhead的更詳細(xì)信息,包括視頻展示和教程,請?jiān)L問 。
步驟3: 利用PinAhead進(jìn)行引腳分配
PinAhead環(huán)境提供了一組不同的視圖。利用這些視圖可以幫助完成I/O端口信息與物理封裝引腳或裸片I/O盤(Pad)的對應(yīng)和分配(圖2)。
PinAhead的圖形環(huán)境與PlanAhead類似,在器件視圖中清晰地顯示出芯片上的I/O盤和相關(guān)資源,并在封裝視圖中顯示出物理器件引腳。視圖同時(shí)顯示出I/O端口和物理引腳信息,這樣可以通過交叉選取來試探邏輯設(shè)計(jì)和物理器件資源的對應(yīng)。
你可以在沒有設(shè)計(jì)網(wǎng)表的情況下使用PinAhead來嘗試器件資源,或者直接開始I/O引腳規(guī)劃流程。 封裝引腳視圖(“Package Pins” view)根據(jù)器件數(shù)據(jù)表列出了器件封裝技術(shù)參數(shù),因此大多數(shù)情況下在進(jìn)行引腳配置時(shí)都不再需要去參考器件數(shù)據(jù)手冊。封裝引腳視圖以列表形式對I/O組(bank)進(jìn)行了分類,因此可以同時(shí)在器件和封裝視圖中交叉選擇和高亮顯示I/O組。視頻清晰顯示出物理引腳位置和裸片中的I/O盤的關(guān)系,從而簡化了I/O組的優(yōu)化選擇。封裝引腳視頻還顯示了I/O組中每一引腳的信息。
你可以利用PinAhead接口從頭開始創(chuàng)建I/O端口,也可以從CSV格式數(shù)據(jù)表、HDL源文件頭或綜合后的網(wǎng)絡(luò)和UCF格式約束文件中導(dǎo)入I/O端口。 I/O端口視圖(“I/O Ports” view)顯示出設(shè)計(jì)中定義的所有I/O端口信號,總線文件夾則顯示分組的總線和差分對信號。
你可以按不同方式對封裝引腳和I/O端口視圖進(jìn)行排序。可以切換列表視圖顯示基于分類的列表或全部列表,或者點(diǎn)擊鼠標(biāo)對封裝引腳視圖進(jìn)行排序,顯示所有可用的全局時(shí)鐘或地區(qū)時(shí)鐘引腳。同時(shí)還可以將信息導(dǎo)出到CSV格式數(shù)據(jù)表,做為引腳配置的出發(fā)點(diǎn)。
PinAhead還提供了一個(gè)界面,支持有選擇地禁止PinAhead將I/O端口分配給某些I/O引腳、I/O引腳組或I/O組??梢栽诜庋b引腳、器件或封裝視圖中選擇和禁止引腳。例如,你可以對封裝引腳視圖(Package Pins view)排序并禁止所有VREF引腳。
PinAhead允許將相關(guān)的I/O端口和總線組合為“接口”(interface)。這樣組合使你可以將相關(guān)I/O端口做為單個(gè)實(shí)體處理,從而簡化了I/O端口管理和分配任務(wù)。接口組合功能可以更容易地可視化顯示和管理與特定邏輯接口相關(guān)聯(lián)的所有信號。
可方便地在設(shè)計(jì)間拷貝接口,或者利用接口組合生成特定接口的PCB原理圖符號。組合后的接口在I/O端口視圖中以可擴(kuò)展文件夾的形式出現(xiàn),通過在視圖中選擇I/O端口并將其拖動到接口文件夾,可以將額外的I/O端口添加到接口組合中。
來源:() - 克服FPGA I/O引腳分配挑戰(zhàn)
當(dāng)創(chuàng)建I/O端口時(shí),可將其分配到封裝引腳或I/O盤(pad)。在此之前,最好先檢查一下I/O端口的最初PCB互連草圖并與PCB設(shè)計(jì)人員協(xié)商,了解布放不同I/O端口接口的相關(guān)位置和其它需考慮的因素。適當(dāng)?shù)目偩€順序和邊緣距離有PCB布線非常有幫助,可以大大節(jié)約設(shè)計(jì)時(shí)間。
通過將單個(gè)引腳、總線和接口拖動到器件或封裝視圖,可以將它們分配到I/O引腳。利用不同的分配模式,可以將引腳組分配給選定的I/O引腳??捎玫哪J桨ā癙lace I/O Ports in an I/O Bank,” “Place I/O Ports in Area,” 以及 “Place I/O Ports Sequentially.”。
每種模式提供了將I/O端口分配到引腳的不同分配方式。利用這些模式,可以通過鼠標(biāo)光標(biāo)處彈出的窗口了解你所分配的端口數(shù)量信息。直到分配了所有選定I/O端口之前,這一模式一直保持。
器件視圖(Device view)以圖形方式顯示所有時(shí)鐘區(qū)域和時(shí)鐘相關(guān)的邏輯對象,從而使時(shí)鐘相關(guān)的I/O分配更容易、更直觀。選擇一個(gè)時(shí)鐘區(qū)將會顯示所有I/O組、時(shí)鐘相關(guān)的資源以及與其相關(guān)的器件資源。
PlanAhead軟件試圖保證你在引腳分配時(shí)始終符合規(guī)則。在你的指引下,PlanAhead工具將差分以端口分配給適當(dāng)?shù)囊_對。當(dāng)交互式指定I/O端口時(shí),工具會運(yùn)行規(guī)則檢查(DRC)來保證布局是合乎規(guī)則的。
工具缺省設(shè)置運(yùn)行在交互DRC模式,當(dāng)然你也可以選擇關(guān)閉這一模式。工具會檢查電壓沖突、VREF引腳或I/O標(biāo)準(zhǔn)沖突,以及位于GT器件附近的噪聲敏感引腳。當(dāng)發(fā)現(xiàn)錯(cuò)誤或問題時(shí),工具會顯示一條提示信息(Tooltip),告訴你為什么不能夠?qū)⒛硞€(gè)I/O端口分配給特定的引腳。
通過激活 PinAhead的 “Autoplace”命令,還可以讓其自動分配所有或任何選擇的I/O端口到封裝引腳。 Autoplace命令將會遵守所有I/O標(biāo)準(zhǔn)和差分對規(guī)則,并正確布署全局時(shí)鐘引腳。該命令還會嘗試盡量將I/O端口組合為接口(interface)。
器件視圖(Device view)以圖形方式顯示所有時(shí)鐘區(qū)域和時(shí)鐘相關(guān)的邏輯對象,從而使時(shí)鐘相關(guān)的I/O分配更容易、更直觀。選擇一個(gè)時(shí)鐘區(qū)將會顯示所有I/O組、時(shí)鐘相關(guān)的資源以及與其相關(guān)的器件資源。通過可用資源與其物理關(guān)系的探索,區(qū)域時(shí)鐘規(guī)劃過程變得更容易。
還可利用PinAhead布局設(shè)計(jì)中其它與I/O相關(guān)的邏輯,如BUFG、BUFR、IODELAY、 IDELAYCTRL和DCM。利用PlanAhead中的“Find”命令,可以方便地定位這些對象和布放點(diǎn)。要想有選擇地察看的擴(kuò)展邏輯和邏輯連接,請使用工具中的原理圖視圖(“Schematic” view)。
通過在PlanAhead軟件中的某個(gè)視圖中選擇特定的I/O相關(guān)邏輯并將其拖動到器件視圖(Device view)中的選定位置,就可以鎖定其布局。
PlanAhead軟件將會自動判斷,僅允許將有關(guān)邏輯放在合適的位置。在拖動設(shè)計(jì)中的邏輯對象時(shí),動態(tài)光標(biāo)會顯示出適當(dāng)?shù)牟季治恢谩?/p>
步驟4: 為最終核簽(Sign-Off)運(yùn)行DRC和WASSO
一旦完成引腳分配,就可利用 PinAhead豐富的DRC規(guī)則來進(jìn)行核簽前的DRC檢查,保證在運(yùn)行PlanAhead軟件實(shí)施工具前設(shè)計(jì)是無錯(cuò)的。工具中的眾多I/O和時(shí)鐘相關(guān)規(guī)則可保證I/O布局是合法的??衫肞lanAhead的DRC對話框來選擇相應(yīng)的規(guī)則。
如果工具發(fā)現(xiàn)違反規(guī)則的情況,將會顯示帶有錯(cuò)誤信息的DRC結(jié)果表。 選擇相應(yīng)的錯(cuò)誤信息可以更進(jìn)一步入地了解有關(guān)情況。
PlanAhead還提供了加權(quán)平均同步轉(zhuǎn)換輸出(WASSO)分析功能,可幫助識別引腳分配引起的潛在信號完整性問題。為工具提供PCB設(shè)計(jì)的寄生參數(shù)特性,PlanAhead軟件將會分析不同的I/O組以及其近鄰,并報(bào)告每一I/O組的利用情況和狀態(tài)。
步驟5: 導(dǎo)出I/O引腳分配數(shù)據(jù)
你可以將I/O端口列表和封裝引腳信息從PlanAhead軟件導(dǎo)出為CSV格式文件、HDL頭或UCF文件。 CSV文件包括有關(guān)器件封裝引腳的所有信息,以及與設(shè)計(jì)相關(guān)的I/O引腳分配和配置。列表中的封裝引腳部分是數(shù)據(jù)表中定義I/O端口的很好起點(diǎn)。
你還可以利用該數(shù)據(jù)表自動生成設(shè)計(jì)小組開始PCB布局所需要的PCB原理圖符號。然而,有時(shí)這些符號對于原理圖來說太長了,可能需要將它們縮短為幾個(gè)符號。利用PinAhead中的創(chuàng)建的接口組可以快速做到這一點(diǎn)。
以原理圖符號形式提供這些I/O引腳配置為PCB設(shè)計(jì)人員開始PCB布局提供了很好的基礎(chǔ)。因?yàn)槿绻谝_分配的最初就考慮到PCB接口,那么最很可能與最終的引腳配置比較接近。
如果確實(shí)需要改變引腳來方便布線,那么改變也比較容易,因?yàn)樾枰淖兊囊_可能已經(jīng)在I/O組內(nèi)了。這種方法不會對FPGA設(shè)計(jì)造成太大的影響。通過在PCB和FPGA設(shè)計(jì)人員之間傳遞修改過的引腳布局?jǐn)?shù)據(jù)表或UCF文件,可以保證兩個(gè)部分之間的任何修改是同步的。
為防止信號噪聲以及支持某些FPGA功能,你還可能希望將未用的引腳或特定配置的引腳連接到VCC或GND。賽靈思目前正在致力于在PinAhead的下一版本中提供這一功能。通過一個(gè)界面方便FPGA設(shè)計(jì)人員指導(dǎo)此類引腳,并在輸出的CSV數(shù)據(jù)表中包含相應(yīng)的引腳連接。這樣PCB設(shè)計(jì)人員就可以更容易識別相關(guān)引腳并正確連接之。
未來,隨著FPGA集成更復(fù)雜的功能以及使用更先進(jìn)的封裝,發(fā)展可靠的FPGA和PCB引腳布局方法勢在必行。 PinAhead Lite在幫助實(shí)現(xiàn)基于協(xié)同設(shè)計(jì)理念的引腳布局策略方面已經(jīng)能夠提供很大幫助,但我們?nèi)匀灰呀?jīng)在致力于改進(jìn)這一工具以幫助設(shè)計(jì)人員更好地應(yīng)對引腳布局方面的挑戰(zhàn)。
圖 2 PinAhead 環(huán)境
評論
查看更多