淺析FPGA Editor如何提升設計效率

發(fā)布時(shí)間:2010-7-17 17:45    發(fā)布者:嵌入式公社
關(guān)鍵詞: Editor” , “FPGA
賽靈思資深現場(chǎng)應用工程師Clayton Cameron與您分享ISE工具套件中他最喜歡的工具FPGA Editor的使用技巧

Clayton Cameron 是賽靈思公司(Xilinx, Inc.)資深現場(chǎng)應用工程師 clayton.cameron@xilinx.com

Clayton Cameron是賽靈思公司在多倫多市的一名資深現場(chǎng)應用工程師(FAE)。他于2000年加入賽靈思公司,在賽靈思渥太華的辦公處工作,主要為電信客戶(hù)提供支持。作為一名現場(chǎng)應用工程師,Clayton為客戶(hù)提供支持,幫助他們解決問(wèn)題。他喜歡這一工作的多樣性以及每天遇到的各種挑戰。業(yè)余時(shí)間,他喜歡健身,還十分享受家庭生活。

工程師在設計過(guò)程中,經(jīng)常需要一定的創(chuàng )造力(你不妨稱(chēng)之為數字管道膠帶)才能夠保證設計的順利完成。過(guò)去8年時(shí)間里,我曾經(jīng)目睹許多優(yōu)秀工程師利用這一方法出色地完成了許多工作,而他們采用的最主要工具就是FPGA Editor。

利用FPGA Editor,你可以察看完成的設計并確定是否在FPGA構造一級真正實(shí)現了設計意圖 – 而這對于任何工程師或現場(chǎng)應用工程師來(lái)說(shuō)都是非常需要的。假設你拿到協(xié)作者的設計,需要對其進(jìn)行修改,但他們的HDL源代碼非常難于理解,或者根本沒(méi)有任何注釋或文檔。也許你只是想將某些時(shí)鐘邏輯鎖定,但卻不知道實(shí)例的名稱(chēng)或者如何將其鎖在所希望的位置。下面討論的一些用來(lái)探查FPGA構造以及創(chuàng )建命令行補丁的技巧可以幫助設計人員滿(mǎn)足不斷迫近的任務(wù)期限要求。

FPGA構造勘察技巧

當賽靈思發(fā)布針對新FPGA器件的工具時(shí),通常我做的第一件事就是打開(kāi)FPGA Editor來(lái)勘FPGA器件的內部構造。具體做法是找到Xilinx → ISE →Accessories菜單并點(diǎn)擊FPGA Editor圖標,或者在命令行鍵入fpga_editor。圖形用戶(hù)界面打開(kāi)后,在File菜單下選擇New。FPGA Editor會(huì )詢(xún)問(wèn)設計文件名稱(chēng)和物理約束文件。此時(shí)還沒(méi)有任何設計文件,因此隨便鍵入一個(gè)設計文件名(例如,test.ncd),并選擇希望察看的器件類(lèi)型。FPGA Editor將會(huì )使用同樣的名字作為物理約束文件的名稱(chēng),并加載一個(gè)空白設計。

另一種方法是編譯隨軟件提供的某個(gè)ISE®工具套件設計例子,并將其加載到FPGA Editor中來(lái)察看FPGA構造。加載一個(gè)設計實(shí)例可以顯示更多細節,并且更容易定位感興趣的項目。

在FPGA Editor中瀏覽只需要記住兩件事:

1、如何利用CTRL / Shift快捷鍵進(jìn)行放大縮小。
2、如果利用F11鍵放大選定的項目。

不使用GUI按鈕快速縮放的方法是,按住Ctrl 和 Shift鍵,然后分別利用鼠標左鍵和右鍵進(jìn)入放大和縮小。要想快速找到任何項目,在GUI右上角的列表窗口(List window)中選擇該項目即可。一旦定位了想找的項目,按F11鍵。陣列窗口(Array window)就會(huì )放大顯示該項目。

FPGA Editor有四個(gè)主要窗口:列表(List)、全局(World)、陣列(Array)和塊(Block)。List窗口顯示設計中所有活動(dòng)的項目。通過(guò)此窗口頂部的下拉菜單可選擇其內容 – 列表內容包括已經(jīng)布局或還未使用的部件、網(wǎng)絡(luò )或未布線(xiàn)的網(wǎng)絡(luò )等等。

全局視圖窗口(World Windows)始終顯示完整FPGA硅片視圖,這在試圖確定某個(gè)網(wǎng)絡(luò )的布線(xiàn)情況時(shí)非常有用。同時(shí),陣列窗口(Array window)則是FPGA構造和邏輯的動(dòng)態(tài)視圖。如果雙擊Array視圖中的任何項目,會(huì )顯示Block視圖,給出所選擇項目或邏輯單元的詳細情況。

利用FPGA Editor,你可以察看物理實(shí)施后的設計并確定是否在FPGA構造一級真正實(shí)現了設計意圖 – 而這對于任何工程師或現場(chǎng)應用工程師來(lái)說(shuō)都是非常需要的。

為方便瀏覽或對設計進(jìn)行編輯,這些窗口可以復制。許多情況下,打開(kāi)第二個(gè)Array窗口會(huì )比較方便同時(shí)在設計的兩個(gè)不同部分工作。例如,假設需要在全局時(shí)鐘緩沖器和芯片底部的觸發(fā)器之間增加一條布線(xiàn)。如果在一個(gè)Array窗口中顯示全局時(shí)鐘緩沖器的輸出,另一個(gè)Array窗口則顯示觸發(fā)器時(shí)鐘輸入,那么會(huì )做起來(lái)會(huì )更方便。不然的話(huà)就必須來(lái)回縮放來(lái)定位布線(xiàn)的兩端,顯然這很繁瑣。

在FPGA Editor GUI的右側是一組由20個(gè)功能按鈕組成的工具條,用于設計察看和編輯。通過(guò)編輯$XILINX/data目錄下的fpga_editor.ini文件可以增加更多功能按鈕。當察看設計時(shí),應當隨時(shí)使用INFO按鈕。該功能會(huì )將所選擇項目的所有信息轉錄到控制臺(Console)窗口。這一功能非常方便,你可以在控制臺窗口中標注數據并將其拷貝到其它地方使用,例如編寫(xiě)UCF約束。

一旦了解了最基本的概念和操作,就可以開(kāi)始察看FPGA構造。通常我都從時(shí)鐘邏輯開(kāi)始。這包括數字時(shí)鐘管理器(DCM)、鎖相環(huán)(PLL)、全局時(shí)鐘緩沖器(BUFG)、區域時(shí)鐘緩沖器(BUFR)、I/O緩沖器(BUFIO)以及不同的時(shí)鐘區域。(要想按字母列出項目表,可以到LIST窗口點(diǎn)擊 Type來(lái)排序。)點(diǎn)擊一個(gè)DCM并按F11。ARRAY窗口會(huì )定位到選擇的DCM并放大顯示它。繼續點(diǎn)擊DCM并觀(guān)察GUI底部的Console窗口,其中會(huì )顯示與下面類(lèi)似的內容:

comp “DCM_BASE_inst_star”, site “DCM_ADV_X0Y9”, type = DCM_ADV
(RPM grid X73Y202)

這是有用的數據。 拷貝并粘貼上述內容到UCF文件中,并作如下更改以鎖定這一DCM邏輯:

INST “DCM_BASE_inst_star”
LOC=DCM_ADV_X0Y9;

利用這一方法,幾乎可以鎖定FPGA中的任何項目。 下面是BUFG鎖定的另一個(gè)例子:

comp “BUFG_inst_star”, site “BUFGCTRL_X0Y20”, type = BUFG (RPM grid X73Y124)

INST “BUFG_inst_star”
LOC=BUFGCTRL_X0Y20;

再次回到List窗口并標注同一DCM。 雙擊之后將會(huì )在Block視圖中顯示該DCM以及所有設置和參數。這是一項非常強大的功能,可用于FPGA構造中的任何邏輯項目。如果選擇一個(gè)邏輯片并雙擊它,就可以看到邏輯片是如何布線(xiàn)連接的,以及是否使用了進(jìn)位鏈或本地觸發(fā)器。

Block視圖的按鈕條包含許多其它選項。值得一提的是 F= button按鈕,其功能是顯示邏輯片中使用的項目的完整配置。例如,如果使用了一個(gè)LUT6和一個(gè)觸發(fā)器,按下F= 按鈕將會(huì )給出LUT的布爾議程以及觸發(fā)器的配置模式。

閱讀賽靈思用戶(hù)指南是一回事,而從計算機屏幕上展開(kāi)的視圖上探察所有邏輯、開(kāi)關(guān)和參數則是另一回事。一旦熟悉了FPGA構造及所有資源,那么在編寫(xiě)和驗證設計時(shí)獲得的幫助將會(huì )令人感到驚奇。

在設計流程中記錄生成補丁腳本

當用戶(hù)在GUI環(huán)境中編輯設計時(shí),FPGA Editor能夠記錄用戶(hù)動(dòng)作。用戶(hù)不僅可以保存記錄動(dòng)作流程,還可在以后重新使用記錄的腳本并加以重復。當無(wú)法更改RTL,但又需要在設計過(guò)程中對設計進(jìn)行修改時(shí),這一功能特別有用。假設設計采用了第三方IP或賽靈思加密IP,其中包括一個(gè)全局時(shí)鐘和一個(gè)DCM來(lái)生成稱(chēng)為 interface_clk的時(shí)鐘。然后再假設接口所連接的ASIC出現問(wèn)題,無(wú)法在預定的interface_clk的上升沿接收數據。如何修正這一問(wèn)題?

當然,你可以改變PCB,更換出現問(wèn)題的ASIC或者讓第三方IP小組來(lái)修改時(shí)鐘輸出邏輯以提供90度相移的interface_clk。所有這些解決方案都既耗費時(shí)間又成本高昂。一個(gè)更簡(jiǎn)單的建議是利用FPGA Editor來(lái)記錄修改動(dòng)作,對interface_clk邏輯進(jìn)行必要的更改,從而為出現問(wèn)題的ASIC提供正確的時(shí)鐘相位。一旦有了相關(guān)修改的 FPGA Editor腳本,就可以回放這些命令行腳本記錄的修改步驟,而你也可以正常繼續你的FPGA設計流程。當出現問(wèn)題的ASIC修復正常以后,你只需要將 FPGA Editor腳本從編譯腳本中移除就可以,而interface_clk也會(huì )恢復其正常的行為。

要想對設計進(jìn)行手動(dòng)編輯,首先需要在FPGA Editor中開(kāi)啟讀/寫(xiě)(read/write)權限。在菜單條中點(diǎn)擊File → Main Properties。在此菜單下,可以調整編輯模式(從No logic Change到Read/Write)。點(diǎn)擊Apply,現在就可以開(kāi)始對設計進(jìn)行編輯了。在下一步利用FPGA Editor記錄對設計進(jìn)行的所有修改時(shí),只需要簡(jiǎn)單地從菜單條中點(diǎn)擊Tools → Scripts →Begin Recording。FPGA Editor將會(huì )提示輸入一個(gè)腳本名字(如patch.scr)。輸完腳本名字,就可以對設計進(jìn)行必要的修改了。

在設計中運行設計規則檢查(DRC)來(lái)看一下是否有規則沖突的紅色標志是一個(gè)很好的方式。在我的設計例子中,有14條警告,但都可以忽略。下一步我們將需要定位interface_clk使用的DCM,并為此DCM的90度相移輸出創(chuàng )建另一個(gè)稱(chēng)為DCM_clk90_out的時(shí)鐘。這需要利用全局時(shí)鐘布線(xiàn)資源將時(shí)鐘連接到BUFG。要增加一個(gè)BUFG,先在FPGA構造中找到一個(gè)未用的BUFG位置,右擊并選擇 Add(添加)。然后,工具會(huì )提醒你為BUFG命名(clk90_bufg)并確定其類(lèi)型:BUFG(參見(jiàn)圖1)。



圖1:屬性窗口允許用戶(hù)配置并命名選定的邏輯項目

創(chuàng )建了新的BUFG,就需要將其輸入和輸出連接到適當的位置。在本例中,DCM的90度相移輸出將驅動(dòng)BUFG。在窗口A(yíng)rray1中,點(diǎn)擊DCM 的90度輸出端衰減器,在窗口A(yíng)rray2中,點(diǎn)擊BUFG的輸入端衰減器,同時(shí)按住Ctrl鍵,可實(shí)現連接。然后釋放Ctrl鍵,點(diǎn)擊鼠標右鍵并選擇 Add。工具會(huì )提示為新網(wǎng)絡(luò )連接輸入名字。這樣就將DCM 和 BUFG通過(guò)新網(wǎng)絡(luò )連接到一起了(參看圖2)。


圖2:在兩個(gè)邏輯項目中手動(dòng)布線(xiàn)時(shí),如紅色三角所示,使用兩個(gè)Array窗口可以輕松選擇源頭和目標

clk90_bufg的輸出要代替由原interface_clk驅動(dòng)的IOB上的時(shí)鐘。要將IOB從原來(lái)的時(shí)鐘域中移開(kāi),需要定位IOB,標注時(shí)鐘輸入端衰減器并按下Delete鍵移除這一連接。這樣我們就可以將新的clk90_bufg時(shí)鐘連接到這兒,從而完成整個(gè)補丁。要連接BUFG (clk90_bufg)的輸出,按住Ctrl鍵不放,在窗口A(yíng)rray2中標注BUFG的輸出端衰減器并在A(yíng)rray1窗口中選擇IOB的時(shí)鐘輸入。松開(kāi)Ctrl鍵,點(diǎn)擊鼠標右鍵顯示選項菜單并選擇Add。這樣就最終完成了BUFG輸出和IOB之間的連接,而IOB則用來(lái)驅動(dòng)下游ASIC的新建接口,利用interface_clk90時(shí)鐘就可以正確地捕獲傳輸的數據。

這樣就完成了ASIC的補丁,F在重新運行設計規則(DRC)檢查器,確保沒(méi)有引入任何新的錯誤。在菜單條中點(diǎn)擊Tools →DRC →Run。

腳本完成并且沒(méi)有錯誤的情況下,就可以回到菜單選擇Tool →Script →End Recording。這將停止并關(guān)閉腳本記錄過(guò)程,下次需要這一ASIC補丁時(shí)你還可以重新利用這一腳本。一個(gè)不錯的方法是在文本編輯器中打開(kāi)腳本文件,將所有GUI Post 和 Unpost命令去除。這些命令并不是必要的,而且留著(zhù)它們還讓腳本難于閱讀。下面的文本就是我們ASCI補丁的腳本。 如前面所述,內容非常直接,易于讀取。

unselect -all
setattr main edit-mode Read-Write
add -s “BUFGCTRL_X0Y28” comp
clk90_bufg ;
setattr comp clk90_bufg type BUFG
unselect -all
select pin ‘BUFGCTRL_X0Y28.I0’
select pin ‘DCM_ADV_X0Y11.CLK90’
add
post attr net $NET_0
setattr net $NET_0 name
DCM_clk90_out
unselect -all
select pin ‘OLOGIC_X0Y2.CLK’
delete
unselect -all
select pin ‘ILOGIC_X0Y3.CLK’
delete
unselect -all
select pin ‘ILOGIC_X0Y3.CLK’

select pin ‘OLOGIC_X0Y2.CLK’
select pin ‘BUFGCTRL_X0Y28.O’
add
post attr net $NET_1
setattr net $NET_1 name
clk90_bufg_out
unselect -all
drc
save -w design “patch.ncd”
“patch.pcf”
exit
end

仔細看看腳本內容,看能否分辨出對應GUI中做的動(dòng)作。

很重要的是,可以從GUI(在菜單條 Tool →Scripts →Playback下)中或命令行回放這一腳本。 要在編譯腳本中加入補丁,只需要增加下面一條命令就可以了:
fpga_edline yourdesign.ncd
yourdesign.pcf -p yourscript.scr

應當在布局布線(xiàn)(PAR)完成后再執行這一命令,即當NCD和PCF文件完成后。

FPGA Editor真的是一項強大的用戶(hù)工具,盡管并非每個(gè)人都希望或需要在設計過(guò)程中用到它。 但當需要一些特殊處理或需要在某些地方突破規則以使設計功能更強時(shí),沒(méi)有其它工具能夠像FPGA Editor一樣提供如此強大的能力。你的FAE能夠向你展示其功能,展示FPGA Editor如何幫助你完成設計調試和驗證,當然還包括對規則的突破。

評分

參與人數 1積分 +1 收起 理由
nolie + 1

查看全部評分

本文地址:http://selenalain.com/thread-15466-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页