|
在Vivado中實(shí)現(xiàn)ECO功能
關(guān)于Tcl在Vivado中的應(yīng)用文章從Tcl的基本語法和在Vivado中的應(yīng)用展開,繼上篇《用Tcl定制Vivado設(shè)計(jì)實(shí)現(xiàn)流程》介紹了如何擴(kuò)展甚至是定制FPGA設(shè)計(jì)實(shí)現(xiàn)流程后,引出了一個更細(xì)節(jié)的應(yīng)用場景:如何利用Tcl在已完成布 什么是ECO
ECO指的是Engineering Change Order,即工程變更指令。目的是為了在設(shè)計(jì)的后期,快速靈活地做小范圍修改,從而盡可能的保持已經(jīng)驗(yàn)證
但與FPGA Editor不同,Vivado中的ECO并不是一個獨(dú)立的界面或是一些特定的命令,要實(shí)現(xiàn)不同的ECO功
ECO的應(yīng)用場景和實(shí)現(xiàn)流程
ECO的應(yīng)用場景主要包含:修改cell屬性、增減或移動cell、手動局部布線。還有一些需要多種操作配
針對不同的應(yīng)用場景,Vivado中支持的ECO實(shí)現(xiàn)方式也略有區(qū)別。有些可以用圖形界面實(shí)現(xiàn),有些則只能
ECO的實(shí)現(xiàn)流程如下圖所示:
第一步所指的Design通常是完全布局布線后的設(shè)計(jì),如果是在工程模式下,可以直接在IDE中打開實(shí)現(xiàn)后
第二步就是ECO的意義所在,我們在布局布線后的設(shè)計(jì)上進(jìn)行各種操作,然后僅對改動的部分進(jìn)行局部布局/布
第三步就是產(chǎn)生可供下載的bit文件了,此時必須在Tcl Console中或是Tcl模式下直接輸入命令產(chǎn)生bit文件,而不能使用IDE上的“Generate Bitstream”按鈕。原因是后者讀到的還是ECO前已經(jīng)完成布局布線的原始設(shè)計(jì),生成的bit文件自
修改屬性
絕大部分的屬性修改都能通過IDE界面完成,如下圖所示:
比如要修改寄存器的初值INIT或是LUT的真值表,用戶只需在Vivado IDE中打開布局布線后的設(shè)計(jì)(Implemented Design),在Device View中找到并選中這個FF/LUT,接著在其左側(cè)的Cell Properties視圖中選擇需要修改的屬性,直接修改即可。
除了對FF/LUT的操作外,很多時候我們需要對MMCM/PLL輸出時鐘的相移進(jìn)行修改。對于這種應(yīng)用,
移動/交換cells
移動/交換cells是對FF/LUT進(jìn)行的ECO操作中最基本的一個場景,目前也只有這種情況可以通過圖
具體操作方法也相當(dāng)簡便,要互換cells位置的情況下,只要在Device View上選中需要的那兩個cells,如上圖所示的兩個FFs,然后右鍵調(diào)出菜單,選擇Swap Locations即可。若要移動cells則更簡單,直接在圖中選中FF拖移到新的位置即可。
局部布線后一定要記得在Tcl Console中使用report_route_status命令檢查布線情況,確保沒有未完成布線(un
如果換個稍復(fù)雜些的Tcl命令配合圖形化顯示,更加直觀的同時,也可以方便右鍵調(diào)出命令進(jìn)行針對性的局部布
手動布線
手動布線是一種非常規(guī)的布線方式,一次只能針對一根net在圖形化界面下進(jìn)行。所謂手動布線,除了完全手動
在Device View中選擇一根沒有布線或是預(yù)先Unroute過的net(顯示為紅色高亮),右鍵調(diào)出菜單并選擇En
復(fù)雜的ECO場景
篇幅過半,一直在鋪墊,其實(shí)最有實(shí)踐意義的ECO還沒提到。相信大部分用戶最懷念FPGA Editor中的一個功能就是probe了,如何快速地把一根內(nèi)部信號連接到FPGA管腳上,無需重新布局
其實(shí)這樣類似的功能在Vivado中一直支持,唯一的問題是暫時還沒有圖形化界面可以一鍵操作(相關(guān)開發(fā)工
Tcl操作命令
在UG835中把Vivado支持的Tcl命令按照Category分類,這些列于Netlist目錄下的命令就是實(shí)現(xiàn)
通常涉及到增減cells的ECO基本分為三步實(shí)現(xiàn):首先用create_cell / create_net 等創(chuàng)建相關(guān)cell和/或net,然后用disconnect_net / connect_net 等命令修正因?yàn)閏ell和net的改動而影響到的連接關(guān)系,最后用route_design加選項(xiàng)完成局部
不同的Vivado版本對此類ECO修改有稍許不同的限制,例如在2014.1之后的版本上,需要在改變c
具體操作上可以根據(jù)Vivado的提示或報錯信息來改動具體的Tcl命令,但操作思路和可用的命令相差無幾
Add Probe
這是一個在Vivaod上實(shí)現(xiàn)probe功能的Tcl腳本,已經(jīng)寫成了proc子程序,簡單易懂??梢灾苯?wbr>調(diào)用,也可以做成Vivado的嵌入式擴(kuò)展命令。調(diào)用其生成probe只需先source這個腳本,然后按
該腳本已經(jīng)在Vivado2014.3和2014.4上測試過,一次只能完成一個probe的添加,而且必
由此可見,用Tcl來實(shí)現(xiàn)的ECO雖然不及圖形化界面來的簡便直觀,但是帶給用戶的卻是最大化的自由。完全
ECO在Vivado上的發(fā)展
經(jīng)過了兩年多的發(fā)展,在Vivado上實(shí)現(xiàn)ECO已經(jīng)有了多種方式,除了前面提到的圖形化上那些可用的技巧
這個add_probe是在上述addProbe例子的基礎(chǔ)上擴(kuò)展而來,不僅可以新增probe,而且可以
此外,Tcl Store上還有很多其它好用的腳本,歡迎大家試用并反饋給我們寶貴意見。雖然里面關(guān)于ECO的腳本還很少
總體來說,ECO是一個比較大的命題,因?yàn)闋砍兜降母膭有枨筇啵鋵?shí)也很難限制在一個GUI界面中實(shí)現(xiàn)。
Ally Zhou 2015-2-9 于 Xilinx San Jose |
|
|