Vivado使用誤區與進(jìn)階——在Vivado中實(shí)現ECO功能

發(fā)布時(shí)間:2015-2-17 18:43    發(fā)布者:eechina
關(guān)鍵詞: Vivado
作者:Ally Zhou,Xilinx工具與方法學(xué)應用專(zhuān)家

關(guān)于Tcl在Vivado中的應用文章從Tcl的基本語(yǔ)法和在Vivado中的應用展開(kāi),繼上篇《用Tcl定制Vivado設計實(shí)現流程》介紹了如何擴展甚至是定制FPGA設計實(shí)現流程后,引出了一個(gè)更細節的應用場(chǎng)景:如何利用Tcl在已完成布局布線(xiàn)的設計上對網(wǎng)表或是布局布線(xiàn)進(jìn)行局部編輯,從而在最短時(shí)間內,以最小的代價(jià)完成個(gè)別的設計改動(dòng)需求。

什么是ECO

ECO指的是Engineering Change Order,即工程變更指令。目的是為了在設計的后期,快速靈活地做小范圍修改,從而盡可能的保持已經(jīng)驗證的功能和時(shí)序。ECO的叫法算是從IC設計領(lǐng)域繼承而來(lái),其應用在FPGA設計上尚屬首次,但這種做法其實(shí)在以往的FPGA設計上已被廣泛采用。簡(jiǎn)單來(lái)說(shuō),ECO便相當于ISE上的FPGA Editor。

但與FPGA Editor不同,Vivado中的ECO并不是一個(gè)獨立的界面或是一些特定的命令,要實(shí)現不同的ECO功能需要使用不同的方式。

ECO的應用場(chǎng)景和實(shí)現流程

ECO的應用場(chǎng)景主要包含:修改cell屬性、增減或移動(dòng)cell、手動(dòng)局部布線(xiàn)。還有一些需要多種操作配合的復雜場(chǎng)景,例如把RAM(或DSP)的輸出寄存器放入/拉出RAMB(或DSP48)內部,或是把設計內部信號接到I/O上作調試probe用等等。

針對不同的應用場(chǎng)景,Vivado中支持的ECO實(shí)現方式也略有區別。有些可以用圖形界面實(shí)現,有些則只能使用Tcl命令。但通?梢栽趫D形化界面上實(shí)現的操作,都可以改用一條或數條Tcl命令來(lái)實(shí)現。

ECO的實(shí)現流程如下圖所示:



第一步所指的Design通常是完全布局布線(xiàn)后的設計,如果是在工程模式下,可以直接在IDE中打開(kāi)實(shí)現后的設計,若是僅有DCP文件,不論是工程模式或是非工程模式產(chǎn)生的DCP,都可以用open_checkpoint命令打開(kāi)。

第二步就是ECO的意義所在,我們在布局布線(xiàn)后的設計上進(jìn)行各種操作,然后僅對改動(dòng)的部分進(jìn)行局部布局/布線(xiàn)而無(wú)需整體重跑設計,節約大量時(shí)間的同時(shí)也不會(huì )破壞已經(jīng)收斂的時(shí)序。

第三步就是產(chǎn)生可供下載的bit文件了,此時(shí)必須在Tcl Console中或是Tcl模式下直接輸入命令產(chǎn)生bit文件,而不能使用IDE上的“Generate Bitstream”按鈕。原因是后者讀到的還是ECO前已經(jīng)完成布局布線(xiàn)的原始設計,生成的bit文件自然也無(wú)法使用。

修改屬性

絕大部分的屬性修改都能通過(guò)IDE界面完成,如下圖所示:



比如要修改寄存器的初值INIT或是LUT的真值表,用戶(hù)只需在Vivado IDE中打開(kāi)布局布線(xiàn)后的設計(Implemented Design),在Device View中找到并選中這個(gè)FF/LUT,接著(zhù)在其左側的Cell Properties視圖中選擇需要修改的屬性,直接修改即可。

除了對FF/LUT的操作外,很多時(shí)候我們需要對MMCM/PLL輸出時(shí)鐘的相移進(jìn)行修改。對于這種應用,用戶(hù)也無(wú)需重新產(chǎn)生MMCM/PLL,與上述方法類(lèi)似,可以在布局布線(xiàn)后的Device View上直接修改。



移動(dòng)/交換cells


移動(dòng)/交換cells是對FF/LUT進(jìn)行的ECO操作中最基本的一個(gè)場(chǎng)景,目前也只有這種情況可以通過(guò)圖形化實(shí)現。如要刪減cells等則只能通過(guò)Tcl命令來(lái)進(jìn)行。

具體操作方法也相當簡(jiǎn)便,要互換cells位置的情況下,只要在Device View上選中需要的那兩個(gè)cells,如上圖所示的兩個(gè)FFs,然后右鍵調出菜單,選擇Swap Locations即可。若要移動(dòng)cells則更簡(jiǎn)單,直接在圖中選中FF拖移到新的位置即可。



當用戶(hù)移動(dòng)或改變了cells的位置后會(huì )發(fā)現與其連接的nets變成了黃色高亮顯示,表示這些nets需要重新布線(xiàn)。這時(shí)候需要做的就是在圖中選中這些nets然后右鍵調出菜單,選擇Route進(jìn)行局部布線(xiàn)。



局部布線(xiàn)后一定要記得在Tcl Console中使用report_route_status命令檢查布線(xiàn)情況,確保沒(méi)有未完成布線(xiàn)(unrouted)或是部分未完成布線(xiàn)(partial routed)的nets存在。給這個(gè)命令加上選項則可以報告出更細致的結果,如下圖所示。



如果換個(gè)稍復雜些的Tcl命令配合圖形化顯示,更加直觀(guān)的同時(shí),也可以方便右鍵調出命令進(jìn)行針對性的局部布線(xiàn)。



手動(dòng)布線(xiàn)

手動(dòng)布線(xiàn)是一種非常規的布線(xiàn)方式,一次只能針對一根net在圖形化界面下進(jìn)行。所謂手動(dòng)布線(xiàn),除了完全手動(dòng)一個(gè)節點(diǎn)一個(gè)節點(diǎn)的選擇外,也支持工具自動(dòng)選擇資源來(lái)布線(xiàn)。通常我們并不建議全手動(dòng)的方式,Vivado是時(shí)序驅動(dòng)的工具,所以其自動(dòng)選擇的布線(xiàn)結果已經(jīng)是遵循了時(shí)序約束下的最佳選擇。

在Device View中選擇一根沒(méi)有布線(xiàn)或是預先Unroute過(guò)的net(顯示為紅色高亮),右鍵調出菜單并選擇Enter Assign Routing Mode… 便可進(jìn)入手動(dòng)布線(xiàn)模式。



復雜的ECO場(chǎng)景


篇幅過(guò)半,一直在鋪墊,其實(shí)最有實(shí)踐意義的ECO還沒(méi)提到。相信大部分用戶(hù)最懷念FPGA Editor中的一個(gè)功能就是probe了,如何快速地把一根內部信號連接到FPGA管腳上,無(wú)需重新布局布線(xiàn),直接更新bit文件后下載調試。曾經(jīng)數次被客戶(hù)問(wèn)及,很多人還為Vivado中不支持這樣的做法而深表遺憾。

其實(shí)這樣類(lèi)似的功能在Vivado中一直支持,唯一的問(wèn)題是暫時(shí)還沒(méi)有圖形化界面可以一鍵操作(相關(guān)開(kāi)發(fā)工作已經(jīng)在進(jìn)行中)。但受益于Tcl的靈活多變,我們可以更有針對性地實(shí)現probe功能,效率也更高。

Tcl操作命令

在UG835中把Vivado支持的Tcl命令按照Category分類(lèi),這些列于Netlist目錄下的命令就是實(shí)現ECO需要用到的那些。



通常涉及到增減cells的ECO基本分為三步實(shí)現:首先用create_cell / create_net 等創(chuàng )建相關(guān)cell和/或net,然后用disconnect_net / connect_net 等命令修正因為cell和net的改動(dòng)而影響到的連接關(guān)系,最后用route_design加選項完成局部布線(xiàn)。

不同的Vivado版本對此類(lèi)ECO修改有稍許不同的限制,例如在2014.1之后的版本上,需要在改變cell的連接關(guān)系前先用unplace_cell將cell從當前的布局位置上釋放,在完成新的連接關(guān)系后,再用place_cell放到新的布局位置上。

具體操作上可以根據Vivado的提示或報錯信息來(lái)改動(dòng)具體的Tcl命令,但操作思路和可用的命令相差無(wú)幾。



這是一個(gè)在Vivaod上實(shí)現probe功能的Tcl腳本,已經(jīng)寫(xiě)成了proc子程序,簡(jiǎn)單易懂?梢灾苯诱{用,也可以做成Vivado的嵌入式擴展命令。調用其生成probe只需先source這個(gè)腳本,然后按照如下所示在Tcl Console中輸入命令即可。
Vivado% addProbe inst_1/tmp_q[3] D9 LVCMOS18 my_probe_1

該腳本已經(jīng)在Vivado2014.3和2014.4上測試過(guò),一次只能完成一個(gè)probe的添加,而且必須按照上述順序輸入信號名,管腳位置,電平標準和probe名。因為不具備預檢功能,可能會(huì )碰到一些報錯信息而導致無(wú)法繼續。例如選擇的信號是只存在于SLICE內部的INTRASITE時(shí),則無(wú)法拉出到管腳。再比如輸入命令時(shí)拼錯了電平標準等,也會(huì )造成Tcl已經(jīng)部分修改Vivado數據庫而無(wú)法繼續的問(wèn)題。此時(shí)只能關(guān)閉已經(jīng)打開(kāi)的DCP并選擇不保存而重新來(lái)過(guò)。

用戶(hù)可以根據自己的需要擴展這個(gè)Tcl腳本,也可以仿照這個(gè)Tcl的寫(xiě)法來(lái)實(shí)現其它的ECO需求。例如文章開(kāi)始舉例時(shí)提到過(guò)一個(gè)將RAMB輸出一級的FF拉出到Fabric上實(shí)現的場(chǎng)景,基本的實(shí)現方法和思路也類(lèi)似:先將RAMB的輸出口REG的屬性改為0,然后創(chuàng )建一個(gè)新的FF,將其輸入與RAMB的輸出連接,再將FF的輸出與原本RAMB輸出驅動(dòng)的cell連接,并完成FF的時(shí)鐘和復位端的正確連接,然后選擇合適的位置放置這個(gè)新的FF,最后針對新增加的nets局部布線(xiàn)。

由此可見(jiàn),用Tcl來(lái)實(shí)現的ECO雖然不及圖形化界面來(lái)的簡(jiǎn)便直觀(guān),但是帶給用戶(hù)的卻是最大化的自由。完全由用戶(hù)來(lái)決定如何修改設計,那怕是在最后已經(jīng)完成布局布線(xiàn)時(shí)序收斂的結果上,也能直接改變那些底層單元的連接關(guān)系,甚至是增減設計。

ECO在Vivado上的發(fā)展


經(jīng)過(guò)了兩年多的發(fā)展,在Vivado上實(shí)現ECO已經(jīng)有了多種方式,除了前面提到的圖形化上那些可用的技巧,還有用戶(hù)自定義的Tcl命令和腳本等。隨著(zhù)Xilinx Tcl Store的推出,用戶(hù)可以像在A(yíng)pp Store中下載使用app一樣下載使用Tcl腳本,簡(jiǎn)化了Tcl在Vivado上應用的同時(shí),進(jìn)一步擴展了Tcl的深入、精細化使用,其中就包括Tcl在ECO上的應用。

目前Vivado 2014.4版本上新增了很多有用的腳本。安裝好Vivado后,只需打開(kāi)Tcl Store,找到Debug Utilities,點(diǎn)擊Install,稍等片刻,即可看到一個(gè)add_probe的Tcl proc被安裝到了你的Vivado中。



這個(gè)add_probe是在上述addProbe例子的基礎上擴展而來(lái),不僅可以新增probe,而且可以改變現有probe連接的信號。此外,這個(gè)腳本采用了argument寫(xiě)法,點(diǎn)擊程序可以看help,所以不一定要按照順序輸入信號、電平標準等選項,輸錯也沒(méi)有問(wèn)題。另外增加了預檢和糾錯功能,碰到問(wèn)題會(huì )報錯退出而不會(huì )改變Vivado數據庫,效率更高。

此外,Tcl Store上還有很多其它好用的腳本,歡迎大家試用并反饋給我們寶貴意見(jiàn)。雖然里面關(guān)于ECO的腳本還很少,但我們一直在補充。此外Tcl Store是一個(gè)基于GitHub的完全開(kāi)源的環(huán)境,當然也歡迎大家上傳自己手中有用的Tcl腳本,對其進(jìn)行補充。

總體來(lái)說(shuō),ECO是一個(gè)比較大的命題,因為牽扯到的改動(dòng)需求太多,其實(shí)也很難限制在一個(gè)GUI界面中實(shí)現。這篇文章的目的就是為了讓大家對在FPGA上實(shí)現ECO有個(gè)基本的認識,梳理看似復雜無(wú)序的流程,所謂觀(guān)一葉而知秋,窺一斑而見(jiàn)全豹,希望能帶給更多用戶(hù)信心,用好Vivado其實(shí)一點(diǎn)都不難。
本文地址:http://selenalain.com/thread-146132-1-1.html     【打印本頁(yè)】

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

相關(guān)視頻

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