最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

邏輯仿真工具VCS的使用-Makefile

2022-03-30 22:53 作者:不吃蔥的酸菜魚  | 我要投稿

????????上一次講了Gvim的基本操作,今天來講講用Gvim寫出一個(gè)RTL codes后怎么用VCS仿真,還會(huì)結(jié)合Makefile做文件的自動(dòng)化處理。之后還會(huì)出DC的使用教程,如果能完成這么一套流程的話,寫在簡(jiǎn)歷上會(huì)很唬人:

????????Gvim寫RTL code,VCS仿真,Verdi看波形,DC做綜合下約束,Primetime做STA,Spyglass做異步時(shí)序分析。

????? ?好家伙,這一套小連招打出來,直接起飛,大家還是盡量別用modelsim和notepad++了,在公司都用linux環(huán)境下的軟件。我室友是數(shù)字科班的,他平時(shí)做老師給的小項(xiàng)目就是這一套公司的流程,所以要想拉近和大佬的距離,先把軟件學(xué)好吧,而且學(xué)軟件也不算難。

? ? ? ? VCS全稱Verilog Computer Simulation ,VCS是邏輯仿真EDA工具的編譯源代碼的命令。要用VCS做編譯仿真,首先得有一個(gè)RTL代碼,比如我們寫了一個(gè)全加器和全加器的testbench,總共兩個(gè).v文件

有了RTL文件后,如何調(diào)用VCS進(jìn)行編譯呢? 在 linux 操作系統(tǒng)的terminal,鍵入:

上面有很多細(xì)節(jié),一個(gè)一個(gè)講:

????????-sverilog:編譯命令選項(xiàng),識(shí)別SystemVerilog語法,如果代碼中有SV語法,則編譯的時(shí)候必須加這個(gè)選項(xiàng)。

????????-debug_all:編譯命令選項(xiàng),可以將debug的信息全部保存下來,比如波形文件。

????????-l com.log:編譯命令選項(xiàng),將編譯過程生成的日志寫入com.log文件。

????????執(zhí)行完上面這條代碼后,如果編譯沒有報(bào)錯(cuò),一切正確,那么在當(dāng)前文件夾就會(huì)生成一個(gè)simv文件,這個(gè)文件就是仿真文件,我們跑仿真就用這個(gè)文件,注意是simv不是sim,當(dāng)初我在Makefile腳本里把simv寫成sim,debug好久都沒找到錯(cuò)誤,在這里提醒一下。

????????當(dāng)然除了寫命令調(diào)用VCS,也可以用命令:dve & 啟動(dòng)邏輯仿真工具VCS自帶的一個(gè)圖形化界面dve。命令中的& 表示后臺(tái)運(yùn)行dve命令,不占用當(dāng)前的 terminal。

VCS的圖形化界面DVE

????圖形化界面如果想要跑仿真,點(diǎn)擊simulate的setup選項(xiàng),然后選中編譯過后的仿真文件simv文件,就可以進(jìn)行跑仿真了。

把需要看波形的信號(hào)點(diǎn)擊,Add to wave,然后就會(huì)打開一個(gè)波形窗口。

生成的波形窗口如下,在底層的輸入命名行輸入:run,就會(huì)開始跑仿真了。

輸入run之后,開始仿真就可以看波形了。

按f鍵,顯示所有波形,下面的log窗口就是顯示仿真的日志。


????????上面講的操作是用界面化的DVE窗口去操作的,實(shí)際上我們都使用腳本命令的方法去操作,寫命令行編譯、寫命令行仿真、寫命令行看波形。

????????看波形命令為:dve -vpd vcdplus.vpd & 想要看波形,我們需要在tb文件里面輸出波形文件才行,在tb中展示為:

????????????????????????????????????????initial begin

????????????????????????????????????????????$vcdpluson;

????????????????????????????????????????end?

輸出波形文件后就可以用腳本命令調(diào)用dve看波形了。

綜上,我們用VCS進(jìn)行編譯、仿真、看波形的腳本命令分別為:

編譯源代碼vcs -sverilog -debug_all full_adder.v full_adder_tb.v -l com.log

跑仿真:./simv -l sim.log

看波形dve -vpd vcdplus.vpd &

????????但事實(shí)上,如果每次編譯仿真看波形,都要用手去打這些字符的話,會(huì)很累,能不能用什么腳本命令,讓我們能夠鍵入很少的字符,就可以進(jìn)行編譯仿真看波形,甚至一條龍服務(wù)呢?有,Makefile。

????????我們用Gvim新建一個(gè)文本文件,命名為Makefile,然后如圖所示寫命令,寫命令的方式就是,寫一個(gè)隨便什么關(guān)鍵字,然后+冒號(hào)+回車,再鍵入你設(shè)置關(guān)鍵字綁定的腳本命令。比如我們上面寫的com,是用來編譯的用戶自定義關(guān)鍵字,下一行就緊跟著我們定義關(guān)鍵字所代表的代碼。注意一個(gè)細(xì)節(jié),怎么判斷我們寫的腳本是否被自定義掛件字鏈接了呢?看顏色,如果沒有連接上的話,顏色是普通的黑色,如下圖:

這就代表沒鏈接上通常是由于縮進(jìn)問題導(dǎo)致的,這點(diǎn)需要注意。

????????還有一個(gè)細(xì)節(jié),細(xì)心的人會(huì)發(fā)現(xiàn),我們編譯的時(shí)候,沒有把文件的名字寫到com腳本連接的命令里,而是寫 -f rtl.list。這是什么意思呢,這里的rtl.list用來存放我們r(jià)tl 代碼的名字,用這種方式更方便,后續(xù)修改rtl代碼名稱也好,增減也好都好修改,我們只需要把所有rtl代碼的名字都存放到rtl.list中,生成rtl.list的命令也很簡(jiǎn)單,只要檢索當(dāng)前目錄下所有以.v結(jié)尾的文件的文件名,然后存入rtl.list就行了,linux命令:find -name "*.v" > rtl.list

????????對(duì)于某個(gè)信號(hào),還有一些好用的快捷鍵可以實(shí)用比如圈出來的三個(gè)按鍵

????????它們分別是:Trace Drivers (Ctrl + D)追蹤它的驅(qū)動(dòng)、Trace Value Change ( Ctrl + Shift + D) 追蹤代碼中數(shù)值改變的位置、Trace Loads (Ctrl + Loads)追蹤它的負(fù)載。

選擇要追蹤的邊沿或者數(shù)值,可以直接追蹤。


Makefile 腳本命令:

在上面已經(jīng)提到過Makefile 腳本的書寫格式,就是寫一個(gè)關(guān)鍵字加冒號(hào),然后回車輸入一行命令,輸入完后,以后要運(yùn)行這行命令就不用全部打全了,只需要在terminal界面,輸入make 關(guān)鍵字就行了。

比如,我們已經(jīng)在當(dāng)前文件夾下寫好了上面所示的Makefile腳本文件,然后我們也寫好了rtl代碼,并在terminal 中輸入:find -name "*.v" >rtl.list,把.v文件的相對(duì)路徑都放到了rtl.list中。這時(shí)候如果要編譯,我們只需要在terminal界面輸入:make com 回車

系統(tǒng)會(huì)自動(dòng)幫我們打出com關(guān)鍵字所鏈接的命令行,如圖所示:

Makefile 腳本命令解釋:

vcs表示調(diào)用vcs軟件,-sverilog 表示編譯所用的規(guī)范,如果我們寫的代碼里有systemverilog就一定要有這個(gè)選項(xiàng),-debug_all 完全調(diào)試模式, -timescale = 1ns/1ps 這個(gè)在編譯的時(shí)候就寫,那么在tb里面就不用寫了,表示最小仿真時(shí)間是1ns,最小仿真精度是1ps。-f rtl.list意思是吧rtl.list里的所有文件都編譯進(jìn)去, -l com.log 意思是把編譯產(chǎn)生的編譯文件保存在com.log文件中。

./simv 表示運(yùn)行當(dāng)前文件夾下的simv文件,這個(gè)文件在com命令過后會(huì)生成,也就是編譯結(jié)束后會(huì)生成。-l sim.log,意思是把仿真產(chǎn)生的仿真信息都存儲(chǔ)在sim.log文本文件中。

調(diào)用dve 做波形查看,dve表示調(diào)用dve軟件,-vpd vcdplus.vpd意思是選中這個(gè)波形文件,這個(gè)文件的產(chǎn)生需要在tb中加入一條$vcdpluson;否則不會(huì)產(chǎn)生。& 意思是后臺(tái)運(yùn)行。

把以后綴“.vpd”、“.log”、“.key”、“.vdb”的文件刪掉,把csrc文件刪掉,把sim開頭的文件刪掉,把DVEfiles文件刪掉。

刪掉運(yùn)行verdi軟件產(chǎn)生的一些附屬文件。


這里寫的是設(shè)計(jì)的一些VCS操作,實(shí)際上如果是做驗(yàn)證的話,還會(huì)有更多的一些操作,比如收覆蓋率,仿真給隨機(jī)種子等,這個(gè)以后專門出個(gè)驗(yàn)證專題的VCS教程再說。

邏輯仿真工具VCS的使用-Makefile的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
年辖:市辖区| 安国市| 钟山县| 常宁市| 怀集县| 子洲县| 张北县| 乌什县| 卢龙县| 桐城市| 阜宁县| 南投市| 温州市| 德钦县| 平潭县| 襄城县| 玉山县| 榆林市| 丰顺县| 邹城市| 黑水县| 焦作市| 松原市| 新郑市| 凤庆县| 丰镇市| 茂名市| 颍上县| 福泉市| 黔江区| 嫩江县| 城固县| 宿松县| 九龙县| 柘城县| 正蓝旗| 海原县| 东阳市| 扎兰屯市| 拉萨市| 哈巴河县|