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