vivado 仿真_提高Vivado效率一种自研工具介绍
在之前本公眾號(hào)寫過兩篇關(guān)于工具更新對(duì)仿真調(diào)試提高效率的文章,《【干貨】推薦一款FPGA仿真調(diào)試?guó)B槍換炮的工具!》以及《NCVerilog+SimVision+Vivado仿真環(huán)境搭建》,詳細(xì)描述了Linux環(huán)境下仿真環(huán)境搭建可以縮短五倍以上的仿真時(shí)間。本文仍是實(shí)驗(yàn)室學(xué)生張仲禹所寫,介紹了自己開發(fā)的小工具Vivado Batch Mode Tool,通過使用它可以很簡(jiǎn)單的做到從GUI過渡到命令行使用,希望大家都能用上更好更快的工具,在緊張的工作時(shí)間里創(chuàng)造更多的價(jià)值!
手點(diǎn)Vivado GUI也太低效了,關(guān)注“Z胖實(shí)驗(yàn)室”公眾號(hào),公眾號(hào)內(nèi)回復(fù) Vivado腳本 獲得鏈接,也可在頭條給我留言告知我郵箱。
Vivado Batch Mode就如其字面意思,就是Vivado的批處理模式,用另一種說法也就是使用shell的非GUI(圖形界面)交互模式。但是要注意,非GUI模式還有一種tcl Mode,也就是使用tcl命令的交互模式,這不等同于我們這里所說的Batch mode。或者你可以更簡(jiǎn)單的把它理解為通過命令行與Vivado進(jìn)行交互。
在Batch mode下Vivado使用起來更加快速,操作更加明確簡(jiǎn)潔,可以大大的提高工作效率,提高生產(chǎn)力。
為此,為了實(shí)驗(yàn)室同學(xué)們能更加方便的使用Vivado Batch mode,我寫了這個(gè)小工具Vivado Batch Mode Tool,通過使用它就可以很簡(jiǎn)單的做到從GUI過渡到命令行使用,希望大家都能用上更好更快的工具,在緊張的工作時(shí)間里創(chuàng)造更多的價(jià)值!
需要一提的是,本工具僅僅是一個(gè)簡(jiǎn)單的腳本,使用Shell和tcl進(jìn)行實(shí)現(xiàn)(十分簡(jiǎn)陋且結(jié)構(gòu)簡(jiǎn)單),主要用于實(shí)現(xiàn)我們?nèi)粘i_發(fā)的基礎(chǔ)功能,這里作為拋磚引玉的作用,希望大家有更好的想法也可以動(dòng)手去實(shí)現(xiàn),推薦大家學(xué)習(xí)使用Python進(jìn)行腳本編寫,這樣更有助于編寫更加強(qiáng)大的腳本。
為什么要使用Batch Mode?
這里從兩個(gè)方面分別進(jìn)行說明,為什么要使用Vivado的Batch mode。
1、流程操作效率
我所謂的流程操作效率,是指在使用Vivado時(shí),通過鍵盤輸入、鼠標(biāo)點(diǎn)擊以及進(jìn)行等待等實(shí)際外部操作的效率。例如我需要打開一個(gè)Vivado工程,并進(jìn)行Synthesis,那么在GUI下是這樣的流程操作:點(diǎn)擊打開Vivado GUI并等待----用Vivado點(diǎn)擊打開對(duì)應(yīng)的.xpr文件并等待----點(diǎn)擊run Synthesis并點(diǎn)擊確認(rèn)----等待----Synthesis完成。
而如果使用Batch mode,那么只需要在Terminal輸入以下命令:
Vivado -mode batch -source syn.tcl XXX.xpr
其中syn.tcl是一個(gè)提前寫好了tcl命令用于指示Vivado進(jìn)行Synthesis操作的tcl文件,這也僅需要幾行簡(jiǎn)單的代碼即可。
從這里已經(jīng)可以看出,在有一個(gè)提前準(zhǔn)備好的腳本的情況下,通過腳本指揮,自動(dòng)的去下達(dá)命令,可以極大地減少流程操作,可能只需要輸入幾個(gè)字母再按一下回車,就可以執(zhí)行一套較為復(fù)雜的操作。
上面舉例中的進(jìn)行Synthesis還算是一個(gè)較為簡(jiǎn)單的操作,很明顯在越復(fù)雜的操作中,使用Batch mode越能帶來更高的流程操作效率提升。
一種簡(jiǎn)單的理解方式是,你提前將需要做的事情都告訴了電腦,然后你就玩去了,電腦按照你提供給他的事務(wù)列表逐個(gè)逐個(gè)自己去進(jìn)行,這期間不會(huì)再來煩你。
更為生動(dòng)的GUI和Batch mode在流程操作上的對(duì)比就像這樣:
GUI模式:
第一天
媽媽:你快回屋里去。 我:好的。
媽媽:坐下來。 我:好的。
媽媽:快寫作業(yè)。 我:好的。
我:我能玩電腦嗎? 媽媽:不行。
第二天、第三天……
相同的對(duì)話每天重復(fù)。
Batch 模式:
第一天
媽媽:你快回屋里去寫作業(yè),不準(zhǔn)玩電腦。
我:好的。
第二天、第三天……
媽媽:我之前說的你忘了?快去。
我:好的。
原本每天重復(fù)的長(zhǎng)對(duì)話后面都只能用一句就代替了。
經(jīng)過上面的對(duì)比,相信你已經(jīng)對(duì)Batch mode在流程操作效率上的提升有了明確的認(rèn)識(shí),那么接下來再說說另一方面。
2、運(yùn)行效率
運(yùn)行效率指的就是Vivado在執(zhí)行具體操作的時(shí)候其自身運(yùn)行計(jì)算的效率、速度。這里我并沒有深究讓運(yùn)行效率提升的具體原因,個(gè)人猜測(cè)一部分原因是因?yàn)椴皇褂肎UI而釋放了很多原先被GUI占用的資源,可能還有跟GUI占用的系統(tǒng)中斷更多有關(guān)吧(把這一條歸到前一條也沒問題),有興趣的同學(xué)可以去具體研究一下,我這里只說對(duì)比實(shí)驗(yàn)的結(jié)果。
我用一臺(tái)CPU為i7-8700,16G DDR4 2666MHz 內(nèi)存的PC,分別使用GUI和Batch mode對(duì)同一個(gè)Vivado工程從Synthesis跑到Write Bitstream這樣一個(gè)完整的過程。
GUI花了45分鐘時(shí)間,Batch mode花了18分鐘。
GUI:“我起了,被秒了,有什么好說的。”
Batch mode在運(yùn)行效率上的優(yōu)勢(shì)太明顯,不需要再說更多了吧。
綜合以上兩點(diǎn),使用Batch mode既能提高流程操作效率,解放自己的雙手,還可以大幅提高運(yùn)行效率,縮短運(yùn)行等待時(shí)間,直接有效的提高使用Vivado的整體效率,使開發(fā)速度大大加快。這些,就是我推薦使用Batch mode的原因。
要使用Batch Mode的一些不便
正如前面提到的syn.tcl文件,要指揮Vivado執(zhí)行任何操作,都需要用tcl語(yǔ)言來下達(dá)命令,也就是說你還需要會(huì)用tcl語(yǔ)言把要做的事情告訴Vivado才行,這就增加了難度。
TCL語(yǔ)言全稱是Tool Command Language,一般簡(jiǎn)寫成tcl(讀音同tickle),它是許多的EDA工具都使用的一種語(yǔ)言,既有tcl原生的語(yǔ)法,也有各家EDA自己定義的語(yǔ)法,Vivado的tcl語(yǔ)法可以參照Xilinx UG835文檔,很全面的手冊(cè)。或者你也可以參照著平常使用Vivado工程時(shí)出現(xiàn)的vivado.jou這個(gè)文件,它里面記錄了你這一次從打開到關(guān)上Vivado整個(gè)過程中按順序每一步使用的tcl命令,我個(gè)人更偏向于用后者作為主要材料學(xué)習(xí),然后隨時(shí)翻看UG835文檔作為補(bǔ)充講解。
另外,除了需要tcl語(yǔ)言來寫具體的命令,還需要一個(gè)框架來進(jìn)行流程控制,就好像你知道Synthesis的命令是什么,也知道Implement的命令是什么樣,但是你還需要什么時(shí)候用什么命令,用完之后再做什么,什么時(shí)候停止......等等這些都要考慮在內(nèi)。這個(gè)框架根據(jù)需求可以很簡(jiǎn)單也可以很復(fù)雜,同時(shí)它也需要再使用另一種語(yǔ)言來搭建,常見的有Shell、Perl以及Python。這些就又為寫一個(gè)腳本增加了難度。
因?yàn)檫@些原因,許多人對(duì)Batch mode望而卻步,畢竟都是從Windows過來的人,不看圖形界面就發(fā)慌,關(guān)GUI是不可能關(guān)的,這輩子都不可能關(guān)的,寫腳本又不會(huì),就只有點(diǎn)來點(diǎn)去才能勉強(qiáng)應(yīng)付的了生活這樣子。
但是,不用擔(dān)心!
我給你都準(zhǔn)備好了,我把一切都放在那里了,One Piece是......(不好意思串場(chǎng)了)這是一個(gè)一個(gè)簡(jiǎn)陋但是又能實(shí)現(xiàn)基本功能的腳本,暫且叫它Vivado Batch Mode Tool吧,我盡可能讓它的在Terminal中能顯示出一個(gè)類似GUI的操作界面。可能你用了之后會(huì)覺得“Batch mode比GUI好多了!里面各個(gè)東西都實(shí)用,界面又簡(jiǎn)潔,我超喜歡Batch Mode的!”
Vivado Batch Mode Tool
介紹與使用方法
1、Vivado Batch Mode Tool功能介紹
本工具的初衷是能為本人所在實(shí)驗(yàn)室的各位同學(xué)們提供一個(gè)方便的途徑去接觸使用Vivado Batch mode,因此需要方便的與Vivado工程配合使用,于是便設(shè)計(jì)成了類似外置助手工具這樣的框架。
Vivado Batch Mode Tool可以使用戶方便的使用Vivado的Batch mode,僅需要輸入提供的選項(xiàng)就可以做到基礎(chǔ)的Synthesis、Implement、Write Bitstream以及Program Device這些操作,相當(dāng)于為用戶準(zhǔn)備了一個(gè)不同于GUI的操作界面,可以較好的服務(wù)于習(xí)慣GUI的用戶。本工具僅能實(shí)現(xiàn)一些基礎(chǔ)必要的功能,一些更為復(fù)雜的特別是需要用戶自己定義的(例如Debug Core)仍然需要通過GUI完成,在工具中也提供了進(jìn)入GUI的選項(xiàng)。
2、Vivado Batch Mode Tool文件總覽
Vivado Batch Mode Tool我將其放入一個(gè)文件夾內(nèi),如下圖。
其中包含了這樣的一個(gè)文件夾和兩個(gè)文件,如下圖。這其中Vivado_init.tcl的作用我已經(jīng)寫在它的注釋里了,不希望每一次打開vivado都產(chǎn)生兩個(gè)備份的.log和.jou的同學(xué)可以看一看它。
在tcl_dir內(nèi)有7個(gè).tcl文件,如下圖。
這些就是這個(gè)腳本的全貌。
3、Vivado Batch Mode Tool使用介紹
1)將Vivado_bat_mod_tool文件夾放置在與你的Vivado工程的.xpr同一級(jí)目錄下,如下圖。
2)修改文件夾內(nèi)的Vivado_batch_mode_tool這個(gè)文件的權(quán)限為允許作為可執(zhí)行文件,可以使用chmod命令,也可以右鍵----Properties----Permission----下方勾選Allow executing file as program。
3)在Vivado_bat_mod_tool文件夾這一級(jí)使用Terminal,運(yùn)行Vivado_batch_mode_tool:
./Vivado_batch_mode_tool
4)如果文件夾放置正確,則會(huì)檢測(cè)到Vivado工程,顯示如下的界面:
如果文件夾放置不正確,則會(huì)報(bào)錯(cuò),如下圖:
5)下面介紹各個(gè)選項(xiàng)的使用,請(qǐng)根據(jù)需要,輸入相應(yīng)的選項(xiàng)并回車即可。
syn:僅執(zhí)行Synthesis操作,執(zhí)行完會(huì)詢問是否需要打開 Synthesis Design的GUI界面,請(qǐng)輸入y/n來決定是否打開。這里是為了當(dāng)一些工程需要添加debug core的時(shí)候,可以在綜合完成后,進(jìn)入GUI去set Debug,設(shè)置完成后再手動(dòng)關(guān)閉GUI即可。
imp:僅執(zhí)行Implement操作,執(zhí)行完會(huì)詢問是否需要打開 Implemention Design的GUI界面,請(qǐng)輸入y/n來決定是否打開。這里是為了有時(shí)需要在實(shí)現(xiàn)完成后檢查布線圖。
bit:僅執(zhí)行Write Bitstream操作,會(huì)將生成的.bit文件和.ltx文件(如果有的話)放置在Vivado_bat_mod_tool文件夾中的bitstream文件夾內(nèi)。
syn_imp:連續(xù)執(zhí)行Synthesis和Implement,執(zhí)行完會(huì)詢問是否需要打開 Implemention Design的GUI界面,請(qǐng)輸入y/n來決定是否打開。
all:連續(xù)執(zhí)行Synthesis、Implement和Write Bitstream。
prog:將bitstream內(nèi)的[current_project].bit下載入FPGA。如果沒有發(fā)現(xiàn)匹配的Device則會(huì)報(bào)錯(cuò)。注意,目前此腳本還僅能下載.bit文件,如果有.ltx文件請(qǐng)進(jìn)入GUI去下載,畢竟抓信號(hào)有時(shí)候還是需要用GUI觀察。
gui:使用GUI打開這個(gè)Vivado工程。
exit:退出腳本。
6)每一次執(zhí)行完之后只需要按回車就可以返回主界面,不要反復(fù)開關(guān)腳本。
使用實(shí)例
接下來,我將通過講解一次完整的從Synthesis到Program Device的操作來為大家提供一個(gè)使用這個(gè)腳本的實(shí)例。
1)如前文描述一樣放置正確路徑并打開腳本,得到下圖:
2)單獨(dú)執(zhí)行Synthesis(當(dāng)然也可以一步到位執(zhí)行all),輸入syn并回車得到下圖。
然后Vivado就會(huì)開始對(duì)你當(dāng)前的工程進(jìn)行Synthesis,完成之后會(huì)有詢問是否要打開Synthesis Design,如下圖。
不需要就輸入n然后回車,如下圖。
需要打開Synthesis Design則輸入y并回車,然后就會(huì)打開Synthesis Design的GUI。
下圖是打開的Synthesis Design GUI界面。
之后關(guān)掉GUI時(shí)也會(huì)顯示
只需要按回車就可以返回主界面。
3)直接執(zhí)行all,從Synthesis跑到Write Bitstream,輸入all并回車,如下圖。
然后Vivado就會(huì)開始自動(dòng)的先執(zhí)行Synthesis,再執(zhí)行Implemention,最后執(zhí)行Write Bitstream。完成后會(huì)有如下圖的提示。
同時(shí)bitstream文件夾下會(huì)出現(xiàn).bit文件,有debug core時(shí)還會(huì)出現(xiàn).ltx文件。
4)最后我要進(jìn)行Program Device操作
此時(shí)我的PC上沒有連接任何FPGA板,如果此時(shí)執(zhí)行prog,則會(huì)出現(xiàn)下圖的報(bào)錯(cuò)。
我現(xiàn)在就去拿塊板子插上。
好的板子插上了,我們現(xiàn)在再來prog一下。
Program完成后會(huì)有提示,如下圖。
并且此時(shí)開發(fā)板上是這樣的
沒錯(cuò)它就是個(gè)流水燈。
全程完成,操作少,速度快,易掌握。
只需要執(zhí)行all和prog就能完成這一系列的操作。
寫在最后
希望看完了以上內(nèi)容的你能夠掌握這種Vivado的Batch mode用法,并能夠去開發(fā)自己的腳本工具。
希望本工具能夠起到拋磚引玉的作用,帶給以前沒有接觸過使用腳本進(jìn)行開發(fā)的同學(xué)們一個(gè)新的體驗(yàn),然后打開一個(gè)新的大門,提高更多的能力。
目前這個(gè)Vivado Batch Mode Tool V1.0也是我關(guān)于Vivado Batch mode的第一個(gè)腳本,比較簡(jiǎn)陋的shell腳本,也希望后面我也加強(qiáng)學(xué)習(xí),等到V2.0的時(shí)候給大家?guī)砀δ軓?qiáng)大的Python版本的腳本。
全文完。
總結(jié)
以上是生活随笔為你收集整理的vivado 仿真_提高Vivado效率一种自研工具介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python画一只可爱的皮卡丘_用py
- 下一篇: 交通银行微银行为什么查不了余额了?