$vcs source_file[compile_time_options], 例如 vcs +v2k filename.v -debug_all (+2k指2001版本)
compile_time_options 可選項
a:基本可選項
-mupdate :增量編譯,再次編譯時只編譯改變的檔案,提高速率b:工藝庫可選項-r :run after compilation,編譯後繼續執行run
-gui :開啟dve圖形介面
-l:set log file name,用於寫編譯資訊,大型專案中經常使用,如 -l compile.log
-sverilog :支援system verilog
+v2k :支援verilog2001的標準
-v lib_file :lib_file(工藝庫名字) rtl**裡涉及到工藝庫c: 檔案可選項-y lib_dir :告訴vcs到**找這個工藝庫
+libext+lib_ext:當用到很多庫,代替-v
+incdir+inc_dir:**裡如果有include,使用這個命令告訴vcs包含檔案的位置。verilog**裡面寫`include "filename.vh"
-f file :當有很多源**時,將這些源**整合到file裡d:修改可執行檔案名字
-o foo :可執行檔名為simv,使用此命令改名字; 如 -o my_simv2:執行f:define 乙個巨集
+define +=:macro_name 巨集名;value 初始化值; 如+define+incr_counter
$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 列印變數賦值前值2: vcs ucli命令列 效果不好 $vcs filename +v2k -ucli -r$montor 列印變數賦值後值,變數值改變,列印值也變
$time **時間
$readmemb 將檔案裡的內容讀入儲存器中,讀二進位制binary
$readmemh 將檔案裡的內容讀入儲存器中,讀十六進製制hexadmecimal
3: dve
根據此筆記的一開啟dve軟體,dve支援互動式**(在終端輸入命令),支援後仿分析
tips1:task裡面的引數在波形上顯示不出來,所以最好使用display顯示出來
tips2:debug
f10 單步執行(括號加外箭頭),f11單步且進入函式體執行(括號加內箭頭);每次單步**結束需點下箭頭重新**方可再次**
tips3:波形知識點
f鍵:波形自動,全屏tips4:dpi (在verilog裡呼叫c語言的**)group:將多個訊號組成一組
set radix:波形的不同顯示形式,十進位制,二進位制....狀態機顯示狀態為set radix - state name
找波形裡面具體數字有沒有出現:右上角空-value-數字-前後點,可發現有沒有這個數字
compare:選中比較的兩個圖形-signal-compare-name輸入-creat-close
構造bus:選中訊號-set bus-觀察bus後的匯流排波形
第一步:寫乙個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層3:vcd+的編譯執行level_number: 0-記錄特定模組的所有層次模組
1-記錄特定模組的頂層模組
n-記錄特定模組向內的n個模組
module_instance:以此模組為基準
$vcdplusoff(module_instance) 關閉
compiling: vcs files vcdplus_switches other_switches4:在源**如何新增系統函式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
`ifdef dumpme5:$test$plusargs 鍵盤動態接收引數$vcdpluson();
`endif
通過是否定義dumpme(一般在指令碼的complier裡定義巨集)+define+dumpme
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的...