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