侵權投訴

Vivado調用Questa Sim或ModelSim仿真小技巧

FPGA之家 ? 2021-09-02 10:12 ? 次閱讀

Vivado調用Questa Sim或ModelSim仿真中存在的一些自動化問題的解決方案。

Vivado調用Questa Sim仿真中存在的一些問題

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

1、添加新的觀測信號需要重新仿真

Vivado直接調用Modelsim/QuestaSim進行仿真時,波形文件里默認只會出現仿真最頂層中包含的信號,若此時將仿真運行一段時間后,想要查看其他模塊信號波形時,需要重新仿真或者運行do XXX_simulate.do方可。

在這個工程中,我們調用Questa Sim進行仿真,可以看到頂層模塊會自動跑100ns。

此時,我們若想查看l_ethernet_0_pkt_gen_mon這個模塊的波形時,直接進入波形界面進行添加,結果如圖3所示。

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

圖3 QuestaSim仿真波形

從圖3中可以看到,當模塊的信號被添加進來后,已經運行過的仿真時間內,新加入的信號沒有仿真結果。

2、修改邏輯代碼后,需要重新調用仿真器

在代碼調試過程中,修改部分邏輯代碼后(不包括IP核),如果想要查看修改后工程的仿真結果,需要關閉當前的仿真器,從vivado中重新調用方可。其原因是vivado在生成XXX_compile.do文件時,會在其末尾自動添加“quit -force”語句,而更改了相應的代碼文件后,我們需要執行“do XXX_compile.do”命令重新編碼整個庫,然而在運行此文件時,當前的仿真器會被強制退出。

解決方案

為了解決上述問題,同時更加方便使用,本文使用TCL語言,編寫了一個較為方便的do文件,其可以實現如下功能:

1、對XXX_compile.do自動修改

對XXX_compile.do自動修改,去除其末尾的“quit -force”,并生成新的compile.do文件,其對應的源代碼如下:

set filename [glob *_compile.do]

set content [open $filename r+]

set row 0while {![eof $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

2、使用“log -r /*”命令

該命令可以讓modelsim/Questa Sim在進行仿真中,對所有信號同步進行仿真,從而解決新加入的觀測信號沒有仿真結果的問題;

3、保證仿真器不退出

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

set filename compile.do

do $filenameset filename [glob *_simulate.do]

do $filenamelog -r /*

restart -force

run 1ms

例程

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

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

圖4 QuestaSim仿真波形

添加了l_ethernet_0_pkt_gen_mon這個模塊,可以發現仿真過的時間內同樣有仿真結果,如圖5所示。

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

圖5 QuestaSim仿真波形

完整源碼

set filename [glob *_compile.do]

set content [open $filename r+]

set row 0while {![eof $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

原文標題:[源碼]Vivado調用Questa Sim仿真小技巧

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
分享:

評論

相關推薦

MSK調制解調器的matlab仿真

繼續講解程序!MSK也能進行相干解調?是的!同樣是采用鎖相環!先來看看MSK的優點,這是由于下面的這....
的頭像 通信工程師專輯 發表于 09-18 11:43 ? 107次 閱讀
MSK調制解調器的matlab仿真

介紹3種方法跨時鐘域處理方法

跨時鐘域處理是FPGA設計中經常遇到的問題,而如何處理好跨時鐘域間的數據,可以說是每個FPGA初學者....
的頭像 FPGA設計論壇 發表于 09-18 11:33 ? 666次 閱讀
介紹3種方法跨時鐘域處理方法

機智云追蹤外賣騎手保溫箱硬件開發和項目演示

01 本章實現功能介紹 追蹤外賣騎手的保溫箱的GPS定位信息以及外賣箱是否被人打開,以防止騎手在送餐....
的頭像 機智云開發者 發表于 09-18 11:03 ? 103次 閱讀

如何充分利用各種類型的斷點

代碼斷點是最簡單的斷點。開發人員只需要選擇C代碼或者反匯編窗口中的ASM指令并設置斷點即可。一旦斷點....
發表于 09-18 11:03 ? 643次 閱讀
如何充分利用各種類型的斷點

深入探究Linux系統噪音統計(osnoise tracer)

在Linux系統中作為一個普通線程是非常苦逼的。不僅NMI 、硬中斷、軟中斷可以打斷它,甚至其它普通....
的頭像 Linux閱碼場 發表于 09-18 10:53 ? 145次 閱讀
深入探究Linux系統噪音統計(osnoise tracer)

avr單片機INT0是如何去模擬代碼的

avr單片機INT0是如何去模擬代碼的?怎樣去編寫其代碼?...
發表于 09-18 06:49 ? 0次 閱讀

前TI高級副總裁加盟匯頂

電子發燒友網報道(文/章鷹)近日,匯頂科技發布《關于第三屆董事會、監事會換屆選舉》公告,其中重點提及....
的頭像 電子發燒友網 發表于 09-17 10:01 ? 117次 閱讀

三菱交流伺服系統伺服故障和報警代碼

伺服故障和報警代碼大全,超實用!使用三菱交流伺服系統主要由三個系列:MR-ES、MR-J2S、MR-J3。通常故障情況可由伺服...
發表于 09-17 08:54 ? 0次 閱讀

如何利用51單片機制作從左至右再從右制作的流水燈呢

如何利用51單片機制作從左至右再從右制作的流水燈呢?如何編寫其代碼程序?...
發表于 09-17 06:52 ? 0次 閱讀

松下伺服報警代碼保護功能

《松下伺服故障報警代碼分析及處理》由會員分享,可在線閱讀,更多相關《松下伺服故障報警代碼分析及處理(2頁珍藏版)》請在人人文...
發表于 09-17 06:20 ? 0次 閱讀

?開發板上玩GTA RISC-V多項移植項目成功運作中

電子發燒友網報道(文/周凱揚)RISC-V近期再度掀起了不小的熱度,蘋果招募RISC-V程序員負責其....
的頭像 電子發燒友網 發表于 09-16 11:59 ? 144次 閱讀
?開發板上玩GTA RISC-V多項移植項目成功運作中

嵌入式開發中實用的宏打印函數

宏打印函數在我們的嵌入式開發中,使用printf打印一些信息是一種常用的調試手段。但是,在打印的信息....
的頭像 FPGA之家 發表于 09-16 10:05 ? 102次 閱讀
嵌入式開發中實用的宏打印函數

使用Kotlin替代Java重構AOSP應用

兩年前,Android 開源項目 (AOSP) 應用團隊開始使用 Kotlin 替代 Java 重構....
的頭像 谷歌開發者 發表于 09-16 09:26 ? 103次 閱讀
使用Kotlin替代Java重構AOSP應用

魔方網表,無代碼開發平臺NCDP的無冕之王

NCDP也就是No-code development platform,無代碼開發平臺,我第一次聽到....
的頭像 話說科技 發表于 09-15 14:34 ? 87次 閱讀

51單片機的啟動文件作用是什么

在我們使用kei c51創建一個51單片機項目時,會有如下圖所示的提示: 一般情況下,需要選擇“是”....
的頭像 嵌入式ARM 發表于 09-15 09:12 ? 181次 閱讀
51單片機的啟動文件作用是什么

如何充分利用Heroku CI

ci/cd heroku 持續集成和持續交付(CI / CD)是當今軟件工程開發過程中的最佳實踐。  持續集成 (CI)允許開發人...
發表于 09-15 08:43 ? 0次 閱讀

代碼生成有哪些用途

代碼生成有許多用途:  我們可以從模式或現有信息源中生成重復代碼。 例如,我們可以從數據庫模式文件生成數據訪問對象...
發表于 09-15 08:04 ? 0次 閱讀

3200故障代碼服務器顯示說明

3200故障代碼 服務器顯示 說 明AT400門機隨機文件受控文件編號: AT400-OIM-ZH更 改 記 錄序號更改文件號更 改 內 容 描...
發表于 09-15 07:51 ? 0次 閱讀

ros_control是怎樣去控制真實電機的

ros_control是怎樣去控制真實電機的?如何去編寫其代碼程序? ...
發表于 09-15 07:09 ? 0次 閱讀

力/力矩傳感器的使用

1. 插件的添加在相應的標簽內添加如下代碼:                  3...
發表于 09-15 06:37 ? 0次 閱讀

實時監測手機是否接通電源

最近項目中遇到一個需求,實時監測手機是否接通電源,大概效果如下:怎么實現呢,第一想到的就是使用廣播來進行監聽,代碼如下:...
發表于 09-14 08:43 ? 0次 閱讀

IP知識百科之網絡中的隧道技術

什么是隧道技術 隧道技術是指利用一種網絡協議將另一個網絡協議的報文封裝起來傳輸的技術。封裝后的報文在....
的頭像 華為產品資料 發表于 09-13 09:36 ? 161次 閱讀

IP百科知識之什么是MPLS

MPLS是一種在IP骨干網上利用標簽來指導數據報文高速轉發的協議,由IETF (Internet E....
的頭像 華為產品資料 發表于 09-13 09:19 ? 206次 閱讀

FastThreadLocal快在哪里

blog.csdn.net/mycs2012/article/details/90898128 1 ....
的頭像 Android編程精選 發表于 09-13 09:17 ? 132次 閱讀

使用Vivado License Manager時Vivado的錯誤信息

Vivado License Manager在使用Vivado License Manager時,如....
的頭像 TeacherGaoFPGAHub 發表于 09-12 15:15 ? 346次 閱讀

C++基礎語法友元類和友元函數

本期是C++基礎語法分享的第五節,今天給大家來分享一下: (1)explicit(顯式)關鍵字; (....
的頭像 C語言編程學習基地 發表于 09-12 09:52 ? 190次 閱讀

一條SQL語句是怎么被執行的

一直是想知道一條SQL語句是怎么被執行的,它執行的順序是怎樣的,然后查看總結各方資料,就有了下面這一....
的頭像 Linux愛好者 發表于 09-12 09:44 ? 170次 閱讀
一條SQL語句是怎么被執行的

如何通過Python腳本實現WIFI密碼的暴力破解

前言 本文將記錄學習下如何通過 Python 腳本實現 WIFI 密碼的暴力破解,從而實現免費蹭網。....
的頭像 馬哥Linux運維 發表于 09-10 17:09 ? 329次 閱讀
如何通過Python腳本實現WIFI密碼的暴力破解

軟件工程師為什么要寫文檔

在大多數軟件工程師對編寫、使用和維護代碼的抱怨中,一個常見的問題是缺乏高質量的文檔。缺乏文檔有什么副....
的頭像 Linux閱碼場 發表于 09-09 11:26 ? 251次 閱讀

使用deepstream-test的范例代碼修改車牌識別與遮蓋

前一篇文章提到使用deepstream-test的范例代碼,修改成“車牌識別”與“遮蓋(redact....
的頭像 NVIDIA英偉達企業解決方案 發表于 09-09 10:04 ? 178次 閱讀
使用deepstream-test的范例代碼修改車牌識別與遮蓋

在STM32G4片內不同存儲空間運行的速度差異

最近有人問起程序在STM32G4片內不同存儲空間運行的速度差異。說實在的,這個很難說死或說出個絕對的....
的頭像 茶話MCU 發表于 09-09 09:57 ? 237次 閱讀
在STM32G4片內不同存儲空間運行的速度差異

騎手保溫箱追蹤及溫濕度監測4G設備接入機智云教程

01 前言 利用機智云提供的通用版App即使不懂云和App開發,也可以在不用寫任何代碼的情況下,輕松....
的頭像 機智云開發者 發表于 09-09 09:16 ? 147次 閱讀
騎手保溫箱追蹤及溫濕度監測4G設備接入機智云教程

Kitronik ARCADE游戲手柄實現連連看

連連看相信大家都玩過,但這個用Kitronik AR CADE游戲手柄來玩連連看的項目你相信是一個高....
的頭像 電子森林 發表于 09-08 11:47 ? 223次 閱讀
Kitronik ARCADE游戲手柄實現連連看

如何把Docker Registry遷移到Harbor

“要如何將 docker registry 中的鏡像遷移至 harbor?本文介紹了四種具體的思路和....
的頭像 馬哥Linux運維 發表于 09-07 16:29 ? 302次 閱讀
如何把Docker Registry遷移到Harbor

最為精簡的一個Linux Fork炸彈解析

轉自:http://blog.saymagic.cn/2015/03/25/fork-bomb.ht....
的頭像 Linux愛好者 發表于 09-07 16:12 ? 115次 閱讀

使用Intellij IDEA的一些小技巧

https://blog.csdn.net/linsongbin1/article/details/....
的頭像 Android編程精選 發表于 09-05 15:03 ? 320次 閱讀

內聯匯編代碼中的關鍵語法規則講解

一、基本 asm 格式 1. 語法規則 2. test1.c 插入空指令 3. test2.c 操作....
的頭像 硬件攻城獅 發表于 09-05 09:46 ? 229次 閱讀

C語言代碼中的extern

在你的C語言代碼中,不知能否看到類似下面的代碼: 這好像沒有什么問題,你應該還會想:“嗯?是啊,我們....
的頭像 STM32嵌入式開發 發表于 09-02 15:13 ? 207次 閱讀
C語言代碼中的extern

你們知道指針和引用正確的使用場景嗎

先解決兩個疑問 ◆ 指針和引用的不同之處是什么? ◆ 何時用用指針?何時用引用? 指針和引用的不同之....
的頭像 STM32嵌入式開發 發表于 09-02 14:37 ? 180次 閱讀
你們知道指針和引用正確的使用場景嗎

比Arduino更簡單易用的開發套件ShineBlink

Hi 機友們,我想向你推薦一個小而美的產品,一個比Arduino更簡單易用的開發套件——ShineB....
的頭像 機智云物聯網 發表于 09-02 10:04 ? 578次 閱讀

Go編譯器已默認啟用-G=3支持泛型

Go 項目代碼倉庫昨日提交和合并的一個 PR 顯示,Go 語言已在 cmd/compile 中默認啟....
的頭像 馬哥Linux運維 發表于 09-01 15:52 ? 1210次 閱讀
Go編譯器已默認啟用-G=3支持泛型

分享一個最新的的Python對象序列化方式

許多Python標準庫都有一些未被賞識的精華。其中之一是允許簡單優雅的基于參數類型的函數分發。這一特....
的頭像 馬哥Linux運維 發表于 09-01 15:19 ? 676次 閱讀
分享一個最新的的Python對象序列化方式

Go常用的加密算法詳細解讀

【導讀】本文介紹了常用的加密算法,并對這些加密算法結合實際 golang 代碼段進行了詳細解讀。 前....
的頭像 開關電源芯片 發表于 09-01 14:47 ? 127次 閱讀

一文透析Nginx-ingress 控制器如何實現的

主機nginx 一般nginx做主機反向代理(網關)有以下配置 upstream order{ se....
的頭像 Linux愛好者 發表于 09-01 14:44 ? 873次 閱讀
一文透析Nginx-ingress 控制器如何實現的

代碼中是數學圖像解法和貪心解法

今天講一個貪心的老司機的故事,就是力扣第 134 題「加油站」: 題目應該不難理解,就是每到達一個站....
的頭像 新材料在線 發表于 09-01 14:14 ? 199次 閱讀
代碼中是數學圖像解法和貪心解法

如何才能夠翻轉二叉樹

這道題目是非常經典的題目,也是比較簡單的題目(至少一看就會)。 但正是因為這道題太簡單,一看就會,一....
的頭像 新材料在線 發表于 09-01 11:45 ? 225次 閱讀

Python 代碼加速運行的的小技巧

Python 是一種腳本語言,相比 C/C++ 這樣的編譯語言,在效率和性能方面存在一些不足。但是,....
的頭像 Android編程精選 發表于 09-01 11:28 ? 245次 閱讀

K8S集群服務訪問失敗怎么辦 K8S故障處理集錦

問題1:K8S集群服務訪問失敗? ? ? 原因分析:證書不能被識別,其原因為:自定義證書,過期等。 ....
的頭像 開關電源芯片 發表于 09-01 11:11 ? 250次 閱讀
K8S集群服務訪問失敗怎么辦 K8S故障處理集錦

UDP的主要特點及其使用場景

User Datagram Protocol的簡稱是UDP, 中文名是用戶數據報協議。UDP為應用程....
的頭像 Les 發表于 08-31 17:25 ? 274次 閱讀

簡述DNS服務的作用及記錄類型

域名系統英文全稱為:Domain Name System 縮寫為DNS。是一種可以將域名和IP地址相....
的頭像 Les 發表于 08-31 14:56 ? 238次 閱讀

ADI-blackfin-PPI驅動TFT屏的代碼-TFT-Init

ADI-blackfin-PPI驅動TFT屏的代碼-TFT-Init(電源技術投稿模版)-ADI-b....
發表于 08-31 11:28 ? 25次 閱讀
ADI-blackfin-PPI驅動TFT屏的代碼-TFT-Init

C語言冒泡排序工程代碼匯總

C語言冒泡排序工程代碼匯總
發表于 08-30 11:06 ? 24次 閱讀

為什么有時候會寫出爛代碼

本文的內容是最近我剛剛遇到的一個問題,問題代碼是我自己寫的,也是我自己寫單元測試的時候發現的,也是我....
的頭像 深圳東裕光大 發表于 08-27 10:23 ? 244次 閱讀
為什么有時候會寫出爛代碼

軟件工程師加入新開發團隊時需要思考的問題

?? 作者 | Thomas Stringer 譯者 | 彎月 出品 | CSDN(ID:CSDNn....
的頭像 深圳東裕光大 發表于 08-27 10:14 ? 238次 閱讀

主流編程開發工具分享介紹

俗話說的好:工欲善其事,必先利其器。一款好的開發工具對程序員來說是至關重要的,可以降低開發成本、提高....
的頭像 深圳東裕光大 發表于 08-27 10:09 ? 248次 閱讀

四個方面全面解析Linux 下 C++ 編譯&鏈接

【導讀】:編譯與鏈接對CC++程序員既熟悉又陌生,熟悉在于每份代碼都要經歷編譯與鏈接過程,陌生在于大....
的頭像 開關電源芯片 發表于 08-27 09:36 ? 2805次 閱讀
四個方面全面解析Linux 下 C++ 編譯&鏈接

怎么樣才能讓Java代碼編寫更規范化

作者 | 濤姐濤哥 鏈接 | cnblogs.com/taojietaoge/p/11575376.....
的頭像 Android編程精選 發表于 08-27 09:31 ? 1255次 閱讀

如何測量ARM Cortex-M MCU代碼的執行時間

在許多實時應用中,如電機控制、發動機控制、無線通信等時間敏感的應用,CPU可能花費不到5%的時間執行....
的頭像 奈因PCB電路板設計 發表于 08-26 09:20 ? 323次 閱讀
如何測量ARM Cortex-M MCU代碼的執行時間

網絡IO的弊端以及多路復用IO的優勢

為了講多路復用,當然還是要跟風,采用鞭尸的思路,先講講傳統的網絡 IO 的弊端,用拉踩的方式捧起多路....
的頭像 開關電源芯片 發表于 08-25 18:01 ? 500次 閱讀
網絡IO的弊端以及多路復用IO的優勢

深度解讀LabVIEW的彩色*obj文件讀取及渲染

隨著應用場合的增多,掃描設備不僅得到物體的三維坐標信息,也得到了物體的紋理信息。*.OBJ三維文件格....
的頭像 Q哥學逆向 發表于 08-25 17:41 ? 1787次 閱讀
免费无限看黄app_蜜柚app官网下载入口_成版人黄瓜app