在使用Altium Designer繪制FPGA相關的電路原理圖的過程中,我們會遇到這樣的問題:FPGA和外圍設備以及相互之間需要進行信號線相連,由于在大型系統之中,使用到的FPGA和相關芯片具有大量的引腳(很多情況下多達千根以上),在引腳分配和信號線相連的過程之后中,需考慮很多其他的問題,比如引腳的輸入輸出、差分和電平標準等特性,后期PCB布線時候的信號線是否交叉和長短,FPGA在連線過程中是否使用同一個Bank,Bank利用率與GC引腳的特性等。很多情況下設計步驟是先進行Verilog/VHDL邏輯設計,然而有的時候也需要先制作PCB板,再在此基礎上進行開發。因此整個過程會因為考慮的因素眾多以及管腳數量巨大而非常麻煩。
?
?
首先是FPGA的引腳分配問題。Xilinx公司的FPGA都有相關的Pinout and Package文檔,介紹某種型號FPGA引腳的功能、分類、排布以及封裝信息。但是工程師還是會遇到許多挑戰,包括創建最初引腳分配、FPGA與原理圖相結合、以及確保FPGA的合理布線。Cadence OrCAD FPGA SystemPlanner正是為了解決這類問題的工具,下面一段介紹摘自
當工程師在PCB板上設計大規模引腳FPGA時,他們將遇到一些挑戰:包括創建最初引腳分配、FPGA與原理圖相結合、以及確保FPGA的合理布線。Cadence OrCAD FPGA SystemPlanner正是為了應對如此的挑戰,該模塊為FPGA和PCB的協同設計提供了一個完整的、并具有可擴展性的解決方案,它能使以創建最優“器件-規則-準確”為目標的引腳分配過程自動進行。使用自動引腳分配綜合技術來代替以前容易出錯的手動操作過程,就可通過這個獨特的布局解決方案減少在PCB板設計過程當中出現的反復迭代次數,同時縮短了創建最優引腳分配所需要的時間。
在PCB板上進行大規模引腳的FPGA設計
在PCB板上集成結構復雜的FPGA需要花費大量的時間,并且要延長設計周期,這些FPGA有很多不同種類的分配規則和需要用戶配置的引腳,通常這些FPGA的引腳是用戶通過手工操作一個挨著一個進行配置的,這些配置是在忽略PCB板上關鍵元件的擺放位置的情況下進行的,而這些關鍵元件恰恰是和FPGA相連接的。如果忽略以上操作給將來的PCB布線帶來的影響,基于FPGA的設計工程將被迫面臨兩個困難的選擇:非最優的引腳分配,這可能增加所設計的PCB板的疊層數;或者在設計周期的最后階段要進行一些不必要的設計迭代。即使經過多次反復,這種較容易出錯手動操作過程帶來的后果仍然是不必要的PCB重復設計。
如果使用手動操作對FPGA的引腳進行分配,這將增加對FPGA進行引腳分配的時間,用戶將不能在所提供的不同FPGA器件和其子系統當中使用的器件設計之間進行權衡,因為進行權衡意味著用戶將同時處理兩個不同工程,而他們兩者之間并沒有設計相互借鑒之處。
Cadence OrCADFPGA System Planner為FPGA和PCB之間的協同設計提供了一種全面的、可擴展的解決方案,它能使用戶創建一個正確的、最優的引腳分配。FPGA的引腳分配是根據用戶的指定、基于接口的連接(設計目標)、FPGA的引腳分配規則(FPGA規則)和FPGA在PCB板上的實際位置(相對位置)來進行自動綜合的。自動引腳分配綜合避免了用戶在手動操作過程當中容易出現的錯誤,同時縮短了在PCB板上創建FPGA初始引腳分配的時間(關系到被擺放的FPGA的引腳分配綜合),這種獨特的、關系到擺放位置的引腳分配方法消除了在手動操作過程當中容易出現的不必要的設計反復。
OrCAD FPGA System Planner集成在了OrCAD Capture和OrCAD PCB Editor當中,它可以讀取Capture當中的原理圖和元器件符號。另外,它可使用OrCAD PCB Editor當中現有的封裝庫。如果FPGA在布線過程中的擺放位置發生了變化,可在OrCAD PCB Editor當中直接調用FPGA System Planner進行的引腳優化。
特點
OrCAD FPGASystem Planner技術
一個FPGA系統是整個PCB電路板設計下面的一個組成部分,其中包括其他和該FPGA相連接的一個或多個FPGA,以及其他的非FPGA元件。
傳統的引腳分配方法是典型的基于手動操作的引腳分配,或者常常要依靠一個電子表格來進行引腳分配。這些工具要求用戶在不考慮其他元器件的擺放位置,以及接口和信號線的可布線性的情況下進行引腳分配。首先,沒有在線規則檢查能確保為FPGA引腳指定的信號線分配到的引腳種類是正確的。這樣做帶來的后果是,用戶要在基于電子表格的工具和FPGA廠商提供的工具之間要進行很多的重復操作。
這樣做影響到了在當前電路板層上不能完成對FPGA引腳進行布線的PCB布線設計者和接受這些PCB布線設計者紙面上或者口頭上引腳分配建議的FPGA設計者,在他們兩者之間常常增加很多不必要的重復操作。一旦FPGA設計者改變了最初的引腳分配,硬件設計者就得在所設計的原理圖當中改變其引腳分配。這些不必要的重復操作將使設計周期延長幾周或者幾天的時間,同時給設計團隊成員增加了很多麻煩。由于是手動操作過程,未發現的錯誤很可能導致電路板必須重新制作,這是十分昂貴的。
雖然FPGA設計者、硬件設計者和PCB布線設計者可同時對引腳分配作自動更改,但是這樣做沒有解決導致這些重復操作的根本問題。引腳分配并非受以下的的三個因素所制約:FPGA資源可用性、FPGA供應商的引腳分配規則、以及FPGA在PCB板上的布線可行性——在設計進程的最后要進行很多的重復操作,從而延長了在PCB板上集成如今復雜的、大規模引腳FPGA所要花費的時間。
指定設計意圖
OrCAD FPGA System Planner
使用FPGA器件庫來幫助用戶選擇所要使用到的元器件。它可使用OrCAD PCB Editor的封裝功能來查看FPGA的平面圖,它可以使用戶對FPGA系統元件進行快速布局。OrCAD FPGA System Planner能確定在FPGA子系統當中各元件的可連接性,這是在高層次所定義的接口中進行的。用戶能創建諸如DDR2、DDR3、以及PCI總線的接口,這樣做便可確定FPGA和內存DIMM模塊之間的可連接性,以及兩個FPGA之間的可連接性。OrCAD FPGA System Planner可以識別差分信號、電源信號、以及時鐘信號。
FPGA器件規則
OrCAD FPGA System Planner
提供一個精確的FPGA模型器件庫,元件庫里模型符合由FPGA器件供應商指定的引腳分配規則和電氣規則。這些FPGA模型可在綜合引擎下面使用,這樣做確保其嚴格遵守由FPGA供應商指定的電氣使用規則。這些規則約束諸如時鐘及時鐘區域的選擇、庫的分配、SSO預算、利用緩沖區驅動、I/O標準電壓基準水平等等。在綜合過程中,OrCAD FPGA SystemPlanner自動檢查數百個這樣的規則,以確保FPGA的引腳得到準確和最佳的利用。
關系到擺放位置的引腳分配綜合
OrCAD FPGA System Planner
向用戶提供一種使用OrCAD PCB封裝來創建FPGA系統擺放位置的方法,用戶使用諸如DDRx、PCI Express、SATA、前端總線等等的接口在各元件之間以及各FPGA之間使用元件放置視角來確定其連接性,這些接口在設計當中和FPGA以及其他元件相連接,這樣做縮短了用于確定FPGA系統設計方案的時間。
一旦確定了子系統當中FPGA和其他元器件的連接,OrCAD FPGA System Planner根據用戶的設計意圖、現有的FPGA資源、FPGA周圍元器件的擺放位置、以及FPGA供應商的引腳分配規則來對FPGA的引腳分配進行綜合。
OrCAD FPGA System Planner有一個內置的DRC引擎,它能結合由FPGA供應商提供的一些規則,比如引腳分配、參考電壓和終端設備等。這些符合規則的引擎能使FPGA得到正確的連接,從而防止了在PCB板制作過程當中的重復制作。
引腳分配算法可使對某組引腳分配的接口信號線最優化,這樣做減少了PCB板上的網絡交叉,改進了PCB板上網絡的布通率。
與Cadence創建的設計緊密相連
OrCAD FPGASystem Planner為FPGA子系統生成了OrCAD Capture原理圖文件。它使用的是OrCAD Capture元器件庫里現有的FPGA元器件符號。如果用戶愿意的話,FPGA System Planner產品還可以為FPGA創建單獨的符號,這需要基于每個元件庫的單個元器件符號的可連接性。
與FPGA供應商提供工具集成
除了集成OrCAD PCB設計工具以外,OrCAD FPGA System Planner還和FPGA進行著緊密的通訊。它生成并讀取所支持FPGA供應商的引腳分配約束文件。這些功能使得FPGA設計者能根據FPGA所需要的功能來評估引腳分配。FPGA設計者根據這些要求所做的更改可直接導入OrCAD FPGA SystemPlanner,使得整套引腳分配保持同步。
預布線過程中引腳分配的最優化
考慮到FPGA在PCB板上的擺放位置和布線的最初的引腳分配,如果要減少FPGA設計者、PCB布線設計者和硬件設計者之間的設計迭代,在達到這個目標之前有一段很長的路要走。PCB布線設計者一旦確定要在FPGA的接口和信號線上開始布線,它要進一步完善基于設計意圖、疊層約束、扇出選擇的FPGA引腳分配。OrCADFPGA System Planner為用戶提供了一種優化FPGA引腳的方法,這種優化在擺放FPGA之后,或者對FPGA的接口和信號線進行布線之后。
FPGA System Planner支持器件系列
Artix-7
Kintex-7
Spartan-3
Spartan-3A
Spartan-6 LX
Virtex-4
Virtex-4 FX
Virtex-4 LX
Virtex-4 SX
Virtex-5
Virtex-5 LX
Virtex-6 LXT
Virtex-7
Zynq
CandanceFPGA System Planner 使用介紹
具體使用可以參考該產品用戶指南《Allegro? FPGA System Planner User Guide》
?
?
該工具自帶Xilinx和Altera兩個公司的主流FPGA庫,基本不需要自己創建相關的元器件,另外包括一些常用的接口,處理器,SystemACE等庫。如果實際使用用使用到了其他的器件,可以自己創建相關的Part,使用相應的菜單和向導即可,但是只提供8種類型的封裝,平常使用已經足夠。
?
自定義的器件不僅可以自定義管腳的數量,間距等信息,還能定義相關的IO方向,電平標準以及分類管理。
?
連線的時候,可以右鍵編輯相應的器件實例對象,選擇要連接的其他器件,并定義器件之間的連接規則(是否在同一Bank或哪幾個特定的Bank,時鐘域以及管腳連續分配),另外還提供一種叫做Deep and Wide的連接,可以相同器件的相同管腳連接到同一片FPGA的某些相同的管腳上,非常方便。
?
?
?
使用時只需要拖放相應的器件到繪圖區,自動生成元器件的實例對象,該對象可以進行旋轉,平移等編輯操作,配置好相應的連接關系,直接點擊Tools→Run design即可生成連接線。生成之后可以修改連接信號名稱,導出NetList等文件。
AltiumDesigner Scripting腳本系統
在完成連線之后,需要在Altium Designer中放置對應引腳之間的網絡標號NetLabel,由于Altium沒有提供相應的自動化功能,這個工作在大規模引腳設計的時候如果手工操作也是十分繁重的工作量,也很容易出現錯誤。
幸好Altium Designer提供一套強大的腳本系統和完善的API,我們通過編寫JavaScript/Pascal/Delphi/VB等腳本,根據前面使用Candance FPGA SyatemPlanner導出的Netlist文件自動完成網絡標號的添加,整個設計過程將會省去很多麻煩。
AltiumDesigner支持的腳本可以直接調用其提供的API,包括系統操作,Workspace和Project管理,Schemetic以及PCB編輯,也支持語言標準庫的調用。代碼示例可以從+Examples+Reference#JScriptScripts找到,
不過Altium Designer自帶的腳本開發編輯器除了代碼智能提示之外沒有過多的亮點,使用的時候可能不會很順暢,讀者可以自行體驗。
?
評論