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

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

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

Vivado調(diào)用Questa Sim或ModelSim仿真小技巧

FPGA之家 ? 來源:網(wǎng)絡(luò)交換FPGA ? 作者:董勐 ? 2021-09-02 10:12 ? 次閱讀

Vivado調(diào)用Questa Sim或ModelSim仿真中存在的一些自動(dòng)化問題的解決方案。

Vivado調(diào)用Questa Sim仿真中存在的一些問題

首先說明一下Modelsim與Questa Sim都可以與Vivado聯(lián)調(diào),也比較相似,但是Questa Sim比Modelsim功能更加廣泛,對(duì)于System Verilog的語(yǔ)法支持更加完善,本文以Questa Sim為例說明一下Vivado調(diào)用第三方仿真軟件查看波形的過程中存在的一些問題。

1、添加新的觀測(cè)信號(hào)需要重新仿真

Vivado直接調(diào)用Modelsim/QuestaSim進(jìn)行仿真時(shí),波形文件里默認(rèn)只會(huì)出現(xiàn)仿真最頂層中包含的信號(hào),若此時(shí)將仿真運(yùn)行一段時(shí)間后,想要查看其他模塊信號(hào)波形時(shí),需要重新仿真或者運(yùn)行do XXX_simulate.do方可。

在這個(gè)工程中,我們調(diào)用Questa Sim進(jìn)行仿真,可以看到頂層模塊會(huì)自動(dòng)跑100ns。

此時(shí),我們?nèi)粝氩榭磍_ethernet_0_pkt_gen_mon這個(gè)模塊的波形時(shí),直接進(jìn)入波形界面進(jìn)行添加,結(jié)果如圖3所示。

b72ff162-0b49-11ec-8fb8-12bb97331649.jpg

圖3 QuestaSim仿真波形

從圖3中可以看到,當(dāng)模塊的信號(hào)被添加進(jìn)來后,已經(jīng)運(yùn)行過的仿真時(shí)間內(nèi),新加入的信號(hào)沒有仿真結(jié)果。

2、修改邏輯代碼后,需要重新調(diào)用仿真器

在代碼調(diào)試過程中,修改部分邏輯代碼后(不包括IP核),如果想要查看修改后工程的仿真結(jié)果,需要關(guān)閉當(dāng)前的仿真器,從vivado中重新調(diào)用方可。其原因是vivado在生成XXX_compile.do文件時(shí),會(huì)在其末尾自動(dòng)添加“quit -force”語(yǔ)句,而更改了相應(yīng)的代碼文件后,我們需要執(zhí)行“do XXX_compile.do”命令重新編碼整個(gè)庫(kù),然而在運(yùn)行此文件時(shí),當(dāng)前的仿真器會(huì)被強(qiáng)制退出。

解決方案

為了解決上述問題,同時(shí)更加方便使用,本文使用TCL語(yǔ)言,編寫了一個(gè)較為方便的do文件,其可以實(shí)現(xiàn)如下功能:

1、對(duì)XXX_compile.do自動(dòng)修改

對(duì)XXX_compile.do自動(dòng)修改,去除其末尾的“quit -force”,并生成新的compile.do文件,其對(duì)應(yīng)的源代碼如下:

set filename [glob *_compile.do]

set content [open $filename r+]

set row 0while {?。踖of $content]} {

incr row

gets $content line

set list($row) $line

}

close $contentset filename2 “compile.do”;

set content [open $filename2 w+]

for {set i 1} {$i 《= $row} {incr i} {

if {?。踫tring match “quit -force” $list($i)]} {

puts $content $list($i)

}

};

close $content

2、使用“l(fā)og -r /*”命令

該命令可以讓modelsim/Questa Sim在進(jìn)行仿真中,對(duì)所有信號(hào)同步進(jìn)行仿真,從而解決新加入的觀測(cè)信號(hào)沒有仿真結(jié)果的問題;

3、保證仿真器不退出

當(dāng)修改工程中的邏輯代碼(不含IP核)后,只需要運(yùn)行該do文件,其自動(dòng)進(jìn)行編譯和仿真,且使用修改后的compile.do文件,保證仿真器不退出,其對(duì)應(yīng)的源代碼如下:

set filename compile.do

do $filenameset filename [glob *_simulate.do]

do $filenamelog -r /*

restart -force

run 1ms

例程

在使用該do文件之前,需要首先通過vivado調(diào)用modelsim/ questasim,然后將do文件拷貝到工程對(duì)應(yīng)的behave文件夾下。仍以工程為例,當(dāng)修改了代碼內(nèi)部分邏輯后,在QuestaSim的transcrip界面,輸入命令do auto_update_sim.do即可自動(dòng)重新編譯、仿真,結(jié)果如圖4所示(默認(rèn)仿真時(shí)間設(shè)置為1ms)

b73a161a-0b49-11ec-8fb8-12bb97331649.png

圖4 QuestaSim仿真波形

添加了l_ethernet_0_pkt_gen_mon這個(gè)模塊,可以發(fā)現(xiàn)仿真過的時(shí)間內(nèi)同樣有仿真結(jié)果,如圖5所示。

b74a2398-0b49-11ec-8fb8-12bb97331649.jpg

圖5 QuestaSim仿真波形

完整源碼

set filename [glob *_compile.do]

set content [open $filename r+]

set row 0while {?。踖of $content]} {

incr row

gets $content line

set list($row) $line

}

close $contentset filename2 “compile.do”;

set content [open $filename2 w+]

for {set i 1} {$i 《= $row} {incr i} {

if {![string match “quit -force” $list($i)]} {

puts $content $list($i)

}

};

close $content

set filename compile.do

do $filename

set filename [glob *_simulate.do]

do $filename

log -r /*

restart –force

run 1ms

編輯:jq

聲明:本文內(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)投訴
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1579

    瀏覽量

    149138
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1011

    瀏覽量

    83552
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4694

    瀏覽量

    68075
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    799

    瀏覽量

    66128

原文標(biāo)題:[源碼]Vivado調(diào)用Questa Sim仿真小技巧

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Efinity FIFO IP仿真問題 -v1

    幾個(gè)文件? 我們來看下modelsim.do文件,里面vlog了fifo_tb.sv文件,另外還調(diào)用了flist文件里的文件,flist只有一個(gè)文件那就是fifo_sim.v。所以這個(gè)仿真
    的頭像 發(fā)表于 10-21 11:41 ?420次閱讀
    Efinity FIFO IP<b class='flag-5'>仿真</b>問題 -v1

    如何在ModelSim中添加Xilinx仿真庫(kù)

    今天給大俠帶來在FPGA設(shè)計(jì)應(yīng)用中如何在ModelSim中添加Xilinx仿真庫(kù),話不多說,上貨。 注意:ModelSim一定要安裝在不帶空格的目錄下,即不要安裝在“Program
    發(fā)表于 07-03 18:16

    ISE 關(guān)聯(lián) Modelsim 詳細(xì)操作

    在兩者之間即可,然后保存。 第三步,打開ISE,在菜單Edit-Preferences…,調(diào)出設(shè)置窗口。 設(shè)置好之后就到了最后一步,在新建工程時(shí),選擇對(duì)應(yīng)的modelsim即可,在看仿真時(shí)正常打開就行了。
    發(fā)表于 03-22 18:55

    最實(shí)用的Modelsim使用教程

    過程又有兩種方法,一種是通過Quartus調(diào)用Modelsim,Quartus在編譯之后自動(dòng)把仿真需要的.vo文件以及需要的仿真庫(kù)加到modelsi
    發(fā)表于 03-19 16:40

    fpga仿真文件怎么寫

    首先,你需要選擇一個(gè)FPGA仿真軟件,如ModelSim、Vivado、Quartus II等。這些軟件都提供了強(qiáng)大的仿真功能,可以幫助你驗(yàn)證FPGA設(shè)計(jì)的正確性。
    的頭像 發(fā)表于 03-15 14:00 ?653次閱讀

    ADS調(diào)用spectre網(wǎng)表仿真異?!Χㄖ@的NetlistInclude

    ADS是支持調(diào)用spice/spectre等網(wǎng)表文件進(jìn)行仿真的,可以用NetlistInclude控件來進(jìn)行調(diào)用。
    的頭像 發(fā)表于 03-07 09:57 ?1844次閱讀
    ADS<b class='flag-5'>調(diào)用</b>spectre網(wǎng)表<b class='flag-5'>仿真</b>異常—薛定諤的NetlistInclude

    最實(shí)用的Modelsim使用及仿真的基本步驟

    仿真也稱為時(shí)序仿真或者布局布線后仿真,是指電路已經(jīng)映射到特定的工藝環(huán)境以后,綜合考慮電路的路徑延遲與門延遲的影響,驗(yàn)證電路能否在一定時(shí)序條件下滿足設(shè)計(jì)構(gòu)想的過程,是否存在時(shí)序違規(guī)。
    的頭像 發(fā)表于 03-06 09:58 ?8298次閱讀
    最實(shí)用的<b class='flag-5'>Modelsim</b>使用及<b class='flag-5'>仿真</b>的基本步驟

    【基于Lattice MXO2的小腳丫FPGA核心板】02ModelSim仿真

    ModelSim軟件用于FPGA的模塊仿真 軟件安裝 ModelSim仿真軟件隨著Diamond一同安裝,軟件的安裝和證書申請(qǐng)流程很簡(jiǎn)單可以參考電子森林Lattice Diamond教
    發(fā)表于 02-29 08:25

    Modelsim報(bào)錯(cuò), -novopt 開關(guān)打開,仿真失敗

    在使用紫光同創(chuàng)PDS和Modelsim聯(lián)合仿真時(shí),modelsim報(bào)錯(cuò)不會(huì)解決,如下圖
    發(fā)表于 02-18 10:26

    sim卡pin碼怎么設(shè)置 sim卡pin碼怎么重置

    SIM卡PIN碼是一種用于保護(hù)SIM卡的安全性的功能,它要求在每次啟動(dòng)手機(jī)更換SIM卡時(shí)輸入正確的PIN碼才能使用。如果你想設(shè)置重置
    的頭像 發(fā)表于 01-31 14:34 ?1.9w次閱讀

    如何使用 ModelSim 進(jìn)行設(shè)計(jì)仿真

    ModelSim為HDL仿真工具,我們可以利用該軟件來實(shí)現(xiàn)對(duì)所設(shè)計(jì)的VHDLVerilog程 序進(jìn)行仿真,支持IEEE常見的各種硬件描述語(yǔ)言標(biāo)準(zhǔn)??梢赃M(jìn)行兩種語(yǔ)言的混合
    發(fā)表于 01-14 09:47 ?0次下載

    modelsim安裝運(yùn)行patch閃退

    模擬器的安裝和運(yùn)行是計(jì)算機(jī)科學(xué)中非常重要的一環(huán)。ModelSim是一種流行的數(shù)字電子設(shè)計(jì)自動(dòng)化工具,用于驗(yàn)證和仿真硬件設(shè)計(jì)。然而,有時(shí)安裝和運(yùn)行Patch可能會(huì)導(dǎo)致閃退問題。本文將詳細(xì)解釋如何安裝
    的頭像 發(fā)表于 01-04 10:43 ?1298次閱讀

    怎樣單獨(dú)使用modelsim仿真xilinx呢?

    直接在modelsim軟件內(nèi)執(zhí)行.do文件進(jìn)行仿真,不通過vivado調(diào)用modelsim,vivado
    的頭像 發(fā)表于 12-04 18:26 ?1204次閱讀
    怎樣單獨(dú)使用<b class='flag-5'>modelsim</b><b class='flag-5'>仿真</b>xilinx呢?

    使用JTAG仿真器在vivado環(huán)境下抓信號(hào)時(shí)報(bào)錯(cuò)咋辦?

    在使用JTAG仿真器在vivado環(huán)境下抓信號(hào)時(shí),報(bào)如下錯(cuò)誤:
    的頭像 發(fā)表于 11-14 10:37 ?3434次閱讀

    Vivado2018版本中Modelsim的配置

    Vivado自帶的仿真工具在一些基本功能的仿真測(cè)試時(shí)是可以滿足的,但如果你的工程較為龐大,那么自帶的仿真工具將有些勉強(qiáng),除了在數(shù)據(jù)輸出方面的卡頓,在
    的頭像 發(fā)表于 11-08 14:47 ?1646次閱讀
    <b class='flag-5'>Vivado</b>2018版本中<b class='flag-5'>Modelsim</b>的配置