0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

vcs和verdi的調(diào)試及聯(lián)合仿真案例

西西 ? 來源:博客園 ? 作者:任懷魯 ? 2020-09-22 15:01 ? 次閱讀

環(huán)境配置

首先搭建好vcs和Verdi都能工作的環(huán)境,主要有l(wèi)icense問題,環(huán)境變量的設(shè)置。在220實(shí)驗(yàn)室的服務(wù)器上所有軟件的運(yùn)行環(huán)境都是csh。所以,所寫的腳本也都是csh的語法。

生成波形文件

Testbench的編寫

若想用Verdi觀察波形,需要在仿真時(shí)生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通過兩個(gè)系統(tǒng)調(diào)用$fsdbDumpfile $fsdbDumpvars來實(shí)現(xiàn)的。而這兩個(gè)系統(tǒng)調(diào)用并不是Verilog中規(guī)定的,是Verdi以pli(Programming Language Interface)的方式實(shí)現(xiàn)的。這就需要讓vcs編譯時(shí)能找到相應(yīng)的庫。

首先在testbench中需加入以下語句

`ifdef DUMP_FSDB

initialbegin

$fsdbDumpfile(“test.fsdb”);

$fsdbDumpvars;

end

`endif

這個(gè)編譯開關(guān)在用vcs編譯時(shí)加入+define+DUMP_FSDB選項(xiàng)就可以打開,也可以在define.v文件中定義DUMP_FSDB這個(gè)宏。

我們現(xiàn)在所接觸的仿真波形文件主要有

? Wlf文件: WLF波形日志文件,是modelsim的專用文件。這個(gè)wlf文件只能是由modelsim來生成,也只能通過modelsim來顯示。在用modelsim做仿真時(shí),仿真結(jié)束都會(huì)生成一個(gè)*.wlf的文件(默認(rèn)是vsim.wlf)。下次就可以通過通過modelsim直接打開這個(gè)保存下來的波形。vsim -view vsim.wlf -do run.do其中run.do中的內(nèi)容為要查看的波形信號(hào)。要強(qiáng)調(diào)的是不是一個(gè)通用的文件文件格式。

? VCD文件:VCD 是一個(gè)通用的格式。 VCD文件是IEEE1364標(biāo)準(zhǔn)(Verilog HDL語言標(biāo)準(zhǔn))中定義的一種ASCII文件??梢酝ㄟ^Verilog HDL的系統(tǒng)函數(shù)$dumpfile,$dumpvars等來生成。我們可以通過$dumpvars的參數(shù)來規(guī)定我們抽取仿真中某個(gè)特定模塊和信號(hào)的 VCD數(shù)據(jù)。它主要包含了頭信息,變量的預(yù)定義和變量值的變化信息。正是因?yàn)樗诵盘?hào)的變化信息,就相當(dāng)于記錄了整個(gè)仿真的信息??梢杂眠@個(gè)文件來再現(xiàn)仿真,也就能夠顯示波形。另外我們還可以通過這個(gè)文件來估計(jì)設(shè)計(jì)的功耗。因?yàn)閂CD是 Verilog HDL語言標(biāo)準(zhǔn)的一部分,因此所有的verilog的仿真器都要能實(shí)現(xiàn)這個(gè)功能。因此我們可以在verilog代碼中通過系統(tǒng)函數(shù)來dump VCD文件。另外,我們可以通過modelsim 命令來dump VCD文件,這樣可以擴(kuò)展到VHDL中。具體的命令: vcd file myfile.vcd vcd add /test/dut/* 這個(gè)就生成一個(gè)含dut下所有信號(hào)的VCD數(shù)據(jù)信息。我們?cè)谑褂脕磉M(jìn)行仿真 vsim -vcdstim myfile.com test;add wave /*;run -all;

? FSDB文件:fsdb文件是verdi使用一種專用的數(shù)據(jù)格式,類似于VCD,但是它是只提出了仿真過程中信號(hào)的有用信息,除去了VCD中信息冗余,就像對(duì) VCD數(shù)據(jù)進(jìn)行了一次huffman編碼。因此fsdb數(shù)據(jù)量小,而且會(huì)提高仿真速度。我們知道VCD文件使用verilog內(nèi)置的系統(tǒng)函數(shù)來實(shí)現(xiàn) 的,fsdb是通過verilog的PLI接口來實(shí)現(xiàn)的。$fsdbDumpfile,$fsdbDumpvars等 另外,在VCS仿真器中還有一種VCD+的數(shù)據(jù)格式VPD,詳細(xì)情況參照VCS的使用。 注意:WIF:波形中間格式;WLF:波形日志文件。由于在ModelSim下只能打開WLF文件 使用ModelSim行命令vcd2wlf 將VCD文件轉(zhuǎn)化為WLF文件。

而在dump fsdb文件需要幾個(gè)文件,Verdi.tab, pli.a 以及與仿真器相應(yīng)版本的.so庫文件(需要修改LD_LIBRARY_PATH變量)。而這些目錄在以往的版本中是比較凌亂的。

在Verdi200907版本之后它的dumper就做了統(tǒng)一化的處理:

How to Link the New Unified Dumper?

Prerequisites:

? ${NOVAS_INST_DIR} :

Verdi/Siloti install directory.

? ${PLATFORM} :

LINUX: Linux OS (32-bit)

LINUX64: Linux OS (64-bit)

SOL2: SunOS 5.x (32-bit)

SOL7: SunOS 5.x (64-bit)

IBM5: IBM 5.1

? Tab file:

novas.tab

? LD_LIBRARY_PATH

${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM} needs to be added as one of the

LD_LIBRARY_PATH searching paths all the time.

? Novas banner:

*Novas*

? novas.vhd file:

For VHDL and mixed language users who transfer from the old FSDB dumper, the first time use of new unified FSDB dumper needs the “novas.vhd” to be re-compiled (or re-analyzed) if the FSDB dumping commands have been specified in the VHDL design.

The related unified dumper directories are:

  • ${NOVAS_INST_DIR}/share/PLI/VCS
  • ${NOVAS_INST_DIR}/share/PLI/MODELSIM
  • ${NOVAS_INST_DIR}/share/PLI/IUS
  • ${NOVAS_INST_DIR}/share/PLI/lib

在我設(shè)的vcs環(huán)境中(csh)中設(shè)計(jì)的腳本如下

#!/bin/tcsh

if(-esimv)then

\rm-rsimv

endif

if(-esimv.daidir)then

\rm-rfsimv.daidir

endif

if(-ecsrc*)then

\rm-rfcsrc

endif

vcs0809

#verdi env setting

setPLATFORM=LINUX

setNOVAS_INST_DIR=/opt/spring/verdi201004

setenvLD_LIBRARY_PATH${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM}:${LD_LIBRARY_PATH}

vcs -l vcs.log \

-notice \

-line -debug_all \

-P $NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/novas.tab \

$NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/pli.a \

-f vcs.args

。/simv

需要注意:

  • Csh中設(shè)置環(huán)境變量,需把環(huán)境變量用{}括起來,這一點(diǎn)我試了很多次,它確實(shí)不如bash的解析器更加智能。
  • 在220的服務(wù)器上,vcs的版本是201006的,而Verdi的版本時(shí)間比較低,編譯時(shí)會(huì)提示,相應(yīng)的libsscore_vcs201006.so文件找不到?,F(xiàn)在我用的Verdi的版本是201004,而vcs的版本是200809

其中的vcs.args的參考腳本如下(以intra mode decision為例)

+libext+.v

+v2k

+acc

+define+DUMP_FSDB

-y http://www.cnblogs.com/rtl

-work work

//

// Testbench files

//

+incdir+http://www.cnblogs.com/bench

http://www.cnblogs.com/bench/tb_ip_mode_decision.v

// RTL files

//

+incdir+http://www.cnblogs.com/rtl

http://www.cnblogs.com/rtl/ip_mode_decision.v

http://www.cnblogs.com/rtl/defines.v

http://www.cnblogs.com/rtl/timescale.v

在csh中運(yùn)行

。/run_vcs

即可生成Verdi所需要的fsdb文件

之后運(yùn)行以下命令啟動(dòng)Verdi

verdi -2001 -f vcs.args -ssf test.fsdb

Verdi調(diào)試

Verdi調(diào)試主要分為以下幾步

? Load design and testbench into Debussy;

? 打開nWave,載入對(duì)應(yīng)的FSDB;

? 在nTrace中將要觀察的信號(hào)通過鼠標(biāo)中鍵Drag&Drop拖放到nWave中;

? 通常都是在波形上發(fā)現(xiàn)問題,找到錯(cuò)誤地方并雙擊鼠標(biāo),會(huì)自動(dòng)跳到Real driver statement,也即會(huì)跳到源代碼所在。

? nTrace中,Active Annotation(快捷鍵X)標(biāo)出仿真結(jié)果在source code下;

? 在先前driver statement中找個(gè)driver來使用active trace來追蹤有效驅(qū)動(dòng)。

Verdi就是之前的Debussy,在調(diào)試時(shí)有著諸多的優(yōu)點(diǎn),現(xiàn)在我感覺最基礎(chǔ)的幾點(diǎn)就是它

? 只需執(zhí)行一遍仿真就可以查看所有的波形,而在modelsim中則需要反復(fù)運(yùn)行add wave命令,每一次都要重新仿真。

? 可以查看設(shè)計(jì)的原理圖schematic,這非常方便查看每一個(gè)module和wire的所對(duì)應(yīng)的硬件結(jié)構(gòu),modelsim現(xiàn)在還沒有這個(gè)功能。

? 在仿真時(shí)可以很輕易地追蹤每個(gè)信號(hào)所對(duì)應(yīng)的源碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9160

    瀏覽量

    85425
  • 波形
    +關(guān)注

    關(guān)注

    3

    文章

    379

    瀏覽量

    31565
  • VCS
    VCS
    +關(guān)注

    關(guān)注

    0

    文章

    79

    瀏覽量

    9611
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)教VCSverdi怎么聯(lián)合使用

    最近要用到VCS仿真后生成FSDB文件,然后在Verdi中進(jìn)行自動(dòng)偵錯(cuò),請(qǐng)問我怎么安裝Verdi這個(gè)軟件以及如何啟動(dòng)license,并且怎么寫testbench文件才可以產(chǎn)生FSDB文
    發(fā)表于 01-22 14:53

    怎樣去使用Makefile+VCS+Verdi做個(gè)簡(jiǎn)單的Test Bench?

    怎樣去使用Makefile+VCS+Verdi做個(gè)簡(jiǎn)單的Test Bench?有哪些操作步驟?
    發(fā)表于 06-18 06:28

    VCS+Verdi如何安裝?怎么破解?

    VCS+Verdi如何安裝?怎么破解?
    發(fā)表于 06-21 06:11

    VCS仿真卡住,為什么無法生成verdi波形文件呢?

    在make com編譯成功后,terminal卡住了一直沒有反應(yīng),這是什么情況有大佬知道嗎?VCS仿真卡住,為什么無法生成verdi波形文件呢?
    發(fā)表于 06-21 08:14

    在Linux上用vcs+verdi對(duì)demo_nice進(jìn)行仿真沒有成功的原因?

    請(qǐng)教大神,我在Linux上用vcs+verdi對(duì)demo_nice進(jìn)行仿真,但是沒有成功 我是用hibrd.sdk把demo_nice編譯成.verilog文件的,其內(nèi)容如下 另外我還對(duì)tb
    發(fā)表于 08-12 08:07

    新思科技采用VCSVerdi 結(jié)合,推出與眾不同的芯片設(shè)計(jì)

    Verdi 交互調(diào)試解決方案非常適合我們的大型設(shè)計(jì),讓我們的仿真團(tuán)隊(duì)能夠縮短回歸周轉(zhuǎn)時(shí)間,從而大大提升我們驗(yàn)證工作的效率?!?/div>
    的頭像 發(fā)表于 08-28 15:22 ?3615次閱讀

    AImotive采用新思科技VCS?仿真Verdi?調(diào)試驗(yàn)證其下一代自動(dòng)駕駛

    新思科技(Synopsys, Inc., 納斯達(dá)克股票代碼:SNPS)近日宣布,AImotive已采用新思科技VCS?仿真Verdi?調(diào)試(Verification Continuu
    的頭像 發(fā)表于 01-13 15:57 ?2075次閱讀

    如何通過自動(dòng)化腳本實(shí)現(xiàn)Questasim和Verdi聯(lián)合仿真

    verdi聯(lián)合仿真。 由于verdi工具支持FSDB格式的波形文件,所以在仿真時(shí)要把文件的信號(hào)轉(zhuǎn)存到FSDB格式的波形文件中,這里需要借
    的頭像 發(fā)表于 06-13 17:00 ?4583次閱讀
    如何通過自動(dòng)化腳本實(shí)現(xiàn)Questasim和<b class='flag-5'>Verdi</b>的<b class='flag-5'>聯(lián)合</b><b class='flag-5'>仿真</b>

    利用vcs+verdi仿真工具蜂鳥E200系列處理器仿真分析

    開源RISC-V Hummingbird E203(蜂鳥E203)的仿真工具是開源的iverilog,這里利用vcs+verdi仿真工具進(jìn)行仿真;
    的頭像 發(fā)表于 11-17 10:28 ?2934次閱讀

    全網(wǎng)最實(shí)用的Verdi教程1

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的
    的頭像 發(fā)表于 05-05 14:49 ?1.7w次閱讀
    全網(wǎng)最實(shí)用的<b class='flag-5'>Verdi</b>教程1

    全網(wǎng)最實(shí)用的Verdi教程2

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的
    的頭像 發(fā)表于 05-05 14:53 ?8657次閱讀
    全網(wǎng)最實(shí)用的<b class='flag-5'>Verdi</b>教程2

    全網(wǎng)最實(shí)用的Verdi教程3

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的
    的頭像 發(fā)表于 05-05 14:53 ?5751次閱讀
    全網(wǎng)最實(shí)用的<b class='flag-5'>Verdi</b>教程3

    如何用vcs+verdi仿真Verilog文件并查看波形呢?

    我們以一個(gè)簡(jiǎn)單的加法器為例,來看下如何用vcs+verdi仿真Verilog文件并查看波形。
    的頭像 發(fā)表于 05-08 16:00 ?6465次閱讀
    如何用<b class='flag-5'>vcs+verdi</b><b class='flag-5'>仿真</b>Verilog文件并查看波形呢?

    如何用vcs+verdi仿真Verilog文件

    我們以一個(gè)簡(jiǎn)單的加法器為例,來看下如何用vcs+verdi仿真Verilog文件并查看波形。 源文件內(nèi)容如下:
    的頭像 發(fā)表于 05-11 17:03 ?1927次閱讀
    如何用<b class='flag-5'>vcs+verdi</b><b class='flag-5'>仿真</b>Verilog文件

    Verdi環(huán)境配置、生成波形的方法

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用的就是VCS+Verdi或或者Xcelium(xrun)+Verdi的方式進(jìn)行代碼的
    的頭像 發(fā)表于 05-29 09:48 ?3962次閱讀
    <b class='flag-5'>Verdi</b>環(huán)境配置、生成波形的方法