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