VCS基本選項命令介紹

2021-10-10 11:31:18 字數 4140 閱讀 6604

$vcs source_file[compile_time_options],  例如 vcs +v2k filename.v -debug_all   (+2k指2001版本)

compile_time_options 可選項

a:基本可選項

-mupdate     :增量編譯,再次編譯時只編譯改變的檔案,提高速率

-r                :run after compilation,編譯後繼續執行run

-gui             :開啟dve圖形介面

-l:set log file name,用於寫編譯資訊,大型專案中經常使用,如 -l compile.log

-sverilog      :支援system verilog

+v2k    :支援verilog2001的標準

b:工藝庫可選項

-v lib_file  :lib_file(工藝庫名字) rtl**裡涉及到工藝庫

-y lib_dir   :告訴vcs到**找這個工藝庫

+libext+lib_ext:當用到很多庫,代替-v

+incdir+inc_dir:**裡如果有include,使用這個命令告訴vcs包含檔案的位置。verilog**裡面寫`include "filename.vh"

c: 檔案可選項

-f file               :當有很多源**時,將這些源**整合到file裡

d:修改可執行檔案名字

-o foo     :可執行檔名為simv,使用此命令改名字;      如 -o my_simv

f:define 乙個巨集

+define +=:macro_name 巨集名;value 初始化值;    如+define+incr_counter

2:執行

$simv[run_tiime_options]

例如   ./sim -gui &(./指在當前檔案,sim指編譯得到的可執行檔案,gui指開啟vcs的gui介面-dve,&指後台執行)將會得到執行的pid值

-s   結束**時間

$plusargs() 動態接收引數

-e echo     

-l logfile   把**資訊寫入logfile檔案裡

1:  verilog compiled simulator;包含pli 1.0/vpi介面(呼叫c++/c的程式);

2:  支援多抽象層** 

行為級描述(驗證,不可綜合) - rtl級描述(設計,暫存器傳輸級) - gate-level(門級,rtl級經過綜合得到,與具體工藝              庫相關,tsmc,smic,csmc)

三種debug方法:system task calls,vcs ucli,vcs dve(gui)

考慮因素:速度,訊號可見性,訊號。。可用性

1:  system task calls

$display 列印變數賦值前值

$montor 列印變數賦值後值,變數值改變,列印值也變

$time  **時間

$readmemb  將檔案裡的內容讀入儲存器中,讀二進位制binary

$readmemh 將檔案裡的內容讀入儲存器中,讀十六進製制hexadmecimal

2:  vcs ucli命令列  效果不好   $vcs filename +v2k -ucli -r

3:  dve

根據此筆記的一開啟dve軟體,dve支援互動式**(在終端輸入命令),支援後仿分析

tips1:task裡面的引數在波形上顯示不出來,所以最好使用display顯示出來

tips2:debug 

f10 單步執行(括號加外箭頭),f11單步且進入函式體執行(括號加內箭頭);每次單步**結束需點下箭頭重新**方可再次**

tips3:波形知識點 

f鍵:波形自動,全屏

group:將多個訊號組成一組

set radix:波形的不同顯示形式,十進位制,二進位制....狀態機顯示狀態為set radix - state name

找波形裡面具體數字有沒有出現:右上角空-value-數字-前後點,可發現有沒有這個數字

compare:選中比較的兩個圖形-signal-compare-name輸入-creat-close

構造bus:選中訊號-set bus-觀察bus後的匯流排波形

tips4:dpi  (在verilog裡呼叫c語言的**)

第一步:寫乙個c檔案,c檔案要求:#include「svdpi.h「

第二步:在verilog原始檔裡新增呼叫c**的語句

第三步:在終端執行編譯命令時,新增c**檔案以及sverilog命令

第四步:終端執行 ./simv

顯示hello,verilog

vcd(verilog change dump)是vcs的早期波形檔案,vcd+是vcd壓縮檔案;大的專案波形檔案很佔記憶體與影響速度,所以產生了vcd波形檔案,記錄暫存器的值,層次等;將一些系統函式(例如$vcdpluson)嵌入到源**中,編譯**產生vcd檔案(字尾名為vdp),開啟dve,參考log文件與波形檔案,快速解決bug。

1:什麼時候使用vcd+

當debug乙個成熟的設計時,當**分析需要多名設計人員參與時,當**採用script(如makefile)時

2:vcd+的系統函式

$vcdpluson(level_number,module_instance)從module這個模組開始,記錄number-1層

level_number:  0-記錄特定模組的所有層次模組

1-記錄特定模組的頂層模組

n-記錄特定模組向內的n個模組

module_instance:以此模組為基準

$vcdplusoff(module_instance) 關閉

3:vcd+的編譯執行

compiling:  vcs files vcdplus_switches other_switches

files: sources files

vcdplus_switches: 更改vcd檔名,否則在simulator後預設生成vcdplus.vpd檔案。+vpdfile

+vdpfilename.vpd

other wsitches: vcs的其他開關選項;

還有debug選項開關選項:-debug,-debug_all, debug_pp

simulate:  ./simv

開啟dve,開啟vcd檔案:dve -vpd vcdplus.vpd。  或者dve &—>file—>open database—>vcdplus.vpd

4:在源**如何新增系統函式

`ifdef dumpme

$vcdpluson();

`endif

通過是否定義dumpme(一般在指令碼的complier裡定義巨集)+define+dumpme

5:$test$plusargs  鍵盤動態接收引數

6 :  在已有makefile檔案的基礎上,使用vcd檔案的步驟

make clean -> make com -> make sim -> dve &(或者dve -dvp vcdplus.vpd) -> 檢視波形,可雙擊波形上的某個數值進入源** - >debug   

7:readmemb:將檔案裡的內容存在陣列裡。一般在vcd檔案裡沒有陣列的波形,可使用$vcdplusmemon將陣列匯入。

8:$display

$display("hello verilog  ",`__file__,`__line__);  //打出具體檔案具體行的hello verilog,兩個下劃線

VCS 常見VCS 編譯選項總結

vcs 普遍被業界所使用,很多公司都對該eda軟體進行各自的封裝,設計和驗證人員只要遵從公司的特定用法,便能很好的達到自己的設計和驗證需求。本文對常見的vcs編譯選型進行總結。選項代表含義 help vcs幫助選項,執行列出所有編譯選項的含義 full64 當系統是64位時候,需要新增此項,否則編譯...

grep命令選項介紹

color auto 或者 color 表示對匹配的文字著色顯示 i 在搜尋時忽略大小寫 n 顯示結果所在行號 c 統計匹配到的行數,注意,是匹配到的總行數,不是匹配到的次數 o 只顯示符合條件的字串,但是不整行顯示,每個符合條件的字串單獨顯示一行 v 輸出不帶關鍵字的行 反向查詢,反向匹配 w 匹...

VCS中coverage常用的選項

在ic驗證的過程中,使用vcs來統計覆蓋率,下面簡單介紹一下 compile option vcs cm code coverage option run option simv cm code coverage option cm name name cm dir cov dir 其中 1 cm的...