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

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

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

使用Vivado Simulator運(yùn)行功能和時(shí)序仿真案例

電子設(shè)計(jì) ? 來(lái)源:CSDN博主 ? 作者:FPGADesigner的博客 ? 2020-12-31 10:02 ? 次閱讀

Vivado Simulator基本操作
Vivado Simulator是一款硬件描述語(yǔ)言事件驅(qū)動(dòng)的仿真器,支持功能仿真和時(shí)序仿真,支持VHDL、Verilog、SystemVerilog和混合語(yǔ)言仿真。點(diǎn)擊運(yùn)行仿真后,工具欄中顯示了控制仿真過(guò)程的常用功能按鈕:

這些控制功能依次是:

  • Restart:從0時(shí)刻開(kāi)始重新運(yùn)行仿真;
  • Run All:運(yùn)行仿真一直到處理完所有event或遇到指令指示停止仿真 ;
  • Run For:按照設(shè)定的時(shí)間運(yùn)行仿真,每點(diǎn)擊一次都運(yùn)行指定時(shí)長(zhǎng);
  • Step:運(yùn)行仿真直到下一個(gè)HDL狀態(tài);
  • Break:暫停仿真運(yùn)行;
  • Relaunch Simulation:重新編譯仿真源文件且restart仿真,當(dāng)修改了源代碼并且保存了文件后,只需要Relaunch即可,而不必關(guān)閉仿真再重新打開(kāi)運(yùn)行。

Scope窗口

Vivado Simulator中將HDL設(shè)計(jì)中的一個(gè)層次劃分稱作一個(gè)scope,比如實(shí)例化一個(gè)設(shè)計(jì)單元便創(chuàng)建了一個(gè)scope。在Scope窗口中可以看到設(shè)計(jì)結(jié)構(gòu),選中一個(gè)scope后,該scope中所有的HDL對(duì)象都會(huì)顯示在Object窗口中??梢赃x擇將Object窗口中的對(duì)象添加到波形窗口中,這樣便可以觀察到設(shè)計(jì)中的內(nèi)部信號(hào)

pIYBAF9uKHCAb4GgAABhBV2NiYo015.png

Scope窗口中可以在Settings中設(shè)置顯示哪種類型的scope,但注意當(dāng)某一scope被關(guān)閉顯示后,其內(nèi)部的所有對(duì)象(不論什么類型)都會(huì)被隱藏。對(duì)某一scope右鍵,彈出菜單如下:

  • Add to Wave Window:將所有狀態(tài)為可見(jiàn)的HDL對(duì)象添加到波形窗口,值從添加到仿真波形的時(shí)刻開(kāi)始顯示,想要顯示插入之前的值,必須restart(注意不是relaunch,否則會(huì)耗費(fèi)更多的時(shí)間);
  • Go to Source Code:打開(kāi)定義選中scope的源代碼;
  • Go to Instantiation Source Code:打開(kāi)實(shí)例化選中實(shí)例的源代碼(對(duì)于Verilog而言是module,對(duì)于VHDL而言是entity)
  • Log to Wave Database:可以選中記錄當(dāng)前scope的對(duì)象,或者記錄當(dāng)前scope的對(duì)象與所有下級(jí)的scope。相關(guān)數(shù)據(jù)會(huì)存儲(chǔ)在project_name.sim/sim_1/behav目錄下的wdb文件中。

Objects窗口
該窗口中顯示了當(dāng)前選中的scope所包含的HDL對(duì)象,不同類型或端口的對(duì)象顯示為不同的圖標(biāo),在Settings中可以設(shè)置顯示的類型:

Object的右鍵菜單中有一些新的設(shè)置功能:

  • Show in Wave Window:在波形窗口中高亮選定的對(duì)象;
  • Radix:設(shè)置Objects窗口中選定對(duì)象的值的顯示數(shù)字格式,包括默認(rèn)、2進(jìn)制(Binary)、16進(jìn)制(Hexadecimal)、8進(jìn)制(Octal)、ASCII碼、無(wú)符號(hào)10進(jìn)制(Unsigned Decimal)、帶符號(hào)10進(jìn)制(Signed Decimal)和符號(hào)量值(Signed Magnitude)。注意此處設(shè)置不會(huì)影響到波形窗口中的顯示方式;
  • Defult Radix:設(shè)置Radix中Default所表示的值;
  • Show as Enumeration:顯示SystemVerilog枚舉信號(hào)的值,不選中時(shí),枚舉對(duì)象的值按radix的設(shè)置方式顯示;
  • Force Constant:將選中對(duì)象的值強(qiáng)行定義為一個(gè)常量;
  • Force Clock:將選中對(duì)象強(qiáng)行設(shè)定為一個(gè)來(lái)回振蕩的值(像時(shí)鐘一樣);
  • Remove Force:移除選定對(duì)象的所有Force設(shè)置。

Wave窗口
當(dāng)運(yùn)行仿真后,會(huì)自動(dòng)打開(kāi)一個(gè)波形窗口,默認(rèn)顯示仿真頂層模塊中的HDL對(duì)象的波形配置。如果關(guān)閉了波形窗口,可以點(diǎn)擊Window->Waveform重新打開(kāi)。

窗口中的HDL對(duì)象和分組情況稱作一個(gè)波形配置,可以將當(dāng)前配置保存為wcfg文件,下次運(yùn)行仿真時(shí)就不需要重新添加仿真對(duì)象或分組。窗口中還有游標(biāo)、記號(hào)、時(shí)間尺等功能幫助設(shè)計(jì)者測(cè)量時(shí)間。右鍵菜單中有一些新的設(shè)置功能:

  • Show in Wave Window:在Object窗口中高亮選定的對(duì)象;
  • Find/Find Value:前者是搜尋某一對(duì)象,后者是搜索對(duì)象中的某一值;
  • Ungroup:拆分group或虛擬總線(virtual bus);
  • Rename/Name:前者設(shè)置用戶自定義的對(duì)象顯示名稱,后者選中名稱的顯示方式:long(顯示所處層次結(jié)構(gòu))、short(僅顯示信號(hào)名稱)、custom(Rename設(shè)置的名稱);
  • Waveform Style:設(shè)置波形顯示為數(shù)字方式或模擬方式;
  • Signal Color:設(shè)置波形的顯示顏色;
  • Divider Color:設(shè)置隔離帶的顏色;
  • Reverse Bit Order:將選定對(duì)象的數(shù)值bit顯示順序反轉(zhuǎn);
  • New Virtual Bus:將選定對(duì)象的bit組合為一個(gè)新的邏輯向量;
  • New Group:將選定對(duì)象添加到一個(gè)group中,可以像文件夾一樣排列;
  • New Divider:在波形窗口中添加一個(gè)隔離帶,將信號(hào)分開(kāi),便于觀察。

Vivado Simulator會(huì)將配置(用戶接口控制和Tcl命令)保存到仿真運(yùn)行目錄的xsimSettings.ini文件中,下此打開(kāi)仿真時(shí)就會(huì)自動(dòng)恢復(fù)相關(guān)設(shè)置。使用此功能時(shí)在Simulation Settings中關(guān)閉clean up simulation files,以防止重新運(yùn)行仿真時(shí)配置文件被刪除。如果想要恢復(fù)默認(rèn)設(shè)置,則開(kāi)啟clean up simulation files,或直接刪除xsimSettings.ini文件即可。

本文只對(duì)Wave窗口做了簡(jiǎn)單介紹,本系列第20篇對(duì)其中的具體術(shù)語(yǔ)和功能使用做了詳細(xì)描述。

運(yùn)行功能和時(shí)序仿真

工程創(chuàng)建好后,便可運(yùn)行行為級(jí)仿真(behavioral simulation),在成功地綜合和實(shí)現(xiàn)之后,可以運(yùn)行功能仿真(functional simulation)和時(shí)序仿真(timing simulation)。在Flow Navigator中點(diǎn)擊Run Simulation,彈出菜單中選擇需要運(yùn)行的仿真:

  • 綜合后功能仿真:綜合后,通用的邏輯轉(zhuǎn)換為器件相關(guān)的原語(yǔ),綜合后功能仿真可以確保綜合優(yōu)化不會(huì)影響到設(shè)計(jì)的功能性。運(yùn)行時(shí),會(huì)生成一個(gè)功能網(wǎng)表,并使用UNISIM庫(kù)。
  • 實(shí)現(xiàn)后功能仿真:實(shí)現(xiàn)后,設(shè)計(jì)已經(jīng)在硬件中完成布局和布線工作,實(shí)現(xiàn)后功能仿真可以確保物理優(yōu)化不會(huì)影響到設(shè)計(jì)的功能性。運(yùn)行時(shí),會(huì)生成一個(gè)功能網(wǎng)表,并使用UNISIM庫(kù)。
  • 綜合后時(shí)序仿真:該仿真使用器件模型中估算的時(shí)間延遲,并且不包括內(nèi)部連線延遲。通用的邏輯轉(zhuǎn)換為器件相關(guān)的原語(yǔ)后,可以使用估算的布線和組件間延遲。使用此仿真可以在實(shí)現(xiàn)之前查看潛在的時(shí)序嚴(yán)苛路徑。
  • 實(shí)現(xiàn)后時(shí)序仿真:該仿真使用真實(shí)的時(shí)間延遲。使用該仿真來(lái)檢查設(shè)計(jì)功能是否能工作在設(shè)定的速度上,可以檢測(cè)出設(shè)計(jì)中未約束的路徑、異步路徑時(shí)序錯(cuò)誤(比如異步復(fù)位)。

添加仿真啟動(dòng)腳本文件

設(shè)計(jì)者可以創(chuàng)建一個(gè)批處理文件,添加到工程中,其中的命令將在仿真開(kāi)始后運(yùn)行,常用的流程步驟如下所示:
1. 創(chuàng)建一個(gè)包含仿真命令的Tcl腳本,比如如果想仿真運(yùn)行到5μs,添加“run 5us”命令;如果想監(jiān)測(cè)設(shè)計(jì)內(nèi)部信號(hào),將其添加到波形窗口中,添加“add_wave/top/I1/signalName”命令;
2. 將腳本文件命名為post.tcl并保存;
3. 將post.tcl文件以仿真源文件的形式添加到工程中,會(huì)顯示在Sources窗口的Simulation文件夾下;
4. 在仿真工具欄中點(diǎn)擊“Relaunch”重新編譯運(yùn)行仿真,Vivado會(huì)自動(dòng)讀取并執(zhí)行文件中的命令。

編輯:hfy


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

    關(guān)注

    0

    文章

    7

    瀏覽量

    8221
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66539
  • 時(shí)序仿真
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7425
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Vivado使用小技巧

    有時(shí)我們對(duì)時(shí)序約束進(jìn)行了一些調(diào)整,希望能夠快速看到對(duì)應(yīng)的時(shí)序報(bào)告,而又不希望重新布局布線。這時(shí),我們可以打開(kāi)布線后的dcp,直接在Vivado Tcl Console里輸入更新后的時(shí)序
    的頭像 發(fā)表于 10-24 15:08 ?336次閱讀
    <b class='flag-5'>Vivado</b>使用小技巧

    時(shí)序邏輯電路有記憶功能

    時(shí)序邏輯電路確實(shí)具有記憶功能 。這一特性是時(shí)序邏輯電路與組合邏輯電路的本質(zhì)區(qū)別之一。
    的頭像 發(fā)表于 08-29 10:31 ?620次閱讀

    時(shí)序邏輯電路的功能表示方法有哪些

    復(fù)雜邏輯功能的關(guān)鍵組成部分。它們能夠存儲(chǔ)信息,并根據(jù)輸入信號(hào)和當(dāng)前狀態(tài)產(chǎn)生輸出。時(shí)序邏輯電路的設(shè)計(jì)和分析對(duì)于理解和實(shí)現(xiàn)數(shù)字系統(tǒng)至關(guān)重要。 2. 時(shí)序邏輯電路的基本概念 2.1 時(shí)序邏輯
    的頭像 發(fā)表于 08-28 11:41 ?658次閱讀

    電源時(shí)序器的電壓顯示功能

    是其核心功能之一,它可以幫助用戶了解當(dāng)前電源的狀態(tài),以及各個(gè)設(shè)備的工作狀態(tài)。以下是對(duì)電源時(shí)序器電壓顯示的詳細(xì)分析: 電源時(shí)序器的工作原理 電源時(shí)序器的工作原理是通過(guò)控制電源的開(kāi)關(guān),按照
    的頭像 發(fā)表于 07-08 14:11 ?749次閱讀

    FPGA設(shè)計(jì)中 Verilog HDL實(shí)現(xiàn)基本的圖像濾波處理仿真

    今天給大俠帶來(lái)FPGA設(shè)計(jì)中用Verilog HDL實(shí)現(xiàn)基本的圖像濾波處理仿真,話不多說(shuō),上貨。 1、用matlab代碼,準(zhǔn)備好把圖片轉(zhuǎn)化成Vivado Simulator識(shí)別的格式,即每行一
    發(fā)表于 05-20 16:44

    STM8S在IAR軟件仿真Simulator怎么查看運(yùn)行時(shí)間?

    STM8S 在IAR軟件仿真Simulator怎么查看運(yùn)行時(shí)間?在某些芯片通信時(shí),會(huì)要求延時(shí)5us,10us,150ms等,這些延時(shí)不需要太精確,只要大概就好,但怎么在Simulator
    發(fā)表于 05-09 07:48

    請(qǐng)問(wèn)使用keil軟件仿真功能不能對(duì)stm32的SPI進(jìn)行仿真?

    最近有個(gè)項(xiàng)目,使用SPI接口對(duì)某芯片進(jìn)行通信,已經(jīng)沒(méi)有問(wèn)題,可以進(jìn)行正常讀寫(xiě)。最近閑來(lái)無(wú)聊想使用keil軟件仿真功能simulator觀察SPI時(shí)序(使用示波器直接觀察管腳波形就另當(dāng)
    發(fā)表于 05-08 08:29

    Simulator下如何仿真串口?

    有人用過(guò)IAR for STM8的Simulator嗎?Simulator下如何仿真串口?
    發(fā)表于 05-06 06:28

    fpga時(shí)序仿真功能仿真的區(qū)別

    FPGA時(shí)序仿真功能仿真在芯片設(shè)計(jì)和驗(yàn)證過(guò)程中各自扮演著不可或缺的角色,它們之間存在明顯的區(qū)別。
    的頭像 發(fā)表于 03-15 15:28 ?2265次閱讀

    fpga仿真文件怎么寫(xiě)

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

    為什么我的IAR for msp 7.12.1的Debugger選項(xiàng)只有FET和simulator仿真,沒(méi)有JLINK選項(xiàng)?

    如題,為什么我的IAR for msp 7.12.1的Debugger選項(xiàng)只有FET和simulator仿真,沒(méi)有JLINK選項(xiàng),已經(jīng)重新下載過(guò)了,還是不行,上網(wǎng)找也沒(méi)人出現(xiàn)我這種情況的,有沒(méi)有老哥
    發(fā)表于 03-15 07:34

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

    仿真也稱為時(shí)序仿真或者布局布線后仿真,是指電路已經(jīng)映射到特定的工藝環(huán)境以后,綜合考慮電路的路徑延遲與門(mén)延遲的影響,驗(yàn)證電路能否在一定時(shí)序
    的頭像 發(fā)表于 03-06 09:58 ?9295次閱讀
    最實(shí)用的Modelsim使用及<b class='flag-5'>仿真</b>的基本步驟

    在做仿真時(shí)有沒(méi)有辦法更好得模擬跨時(shí)鐘域的情況?

    首先需要指出本文題目所指的仿真指的是 功能仿真,即不帶時(shí)序信息的仿真。
    的頭像 發(fā)表于 01-24 10:01 ?431次閱讀
    在做<b class='flag-5'>仿真</b>時(shí)有沒(méi)有辦法更好得模擬跨時(shí)鐘域的情況?

    Vivado時(shí)序問(wèn)題分析

    有些時(shí)候在寫(xiě)完代碼之后呢,Vivado時(shí)序報(bào)紅,Timing一欄有很多時(shí)序問(wèn)題。
    的頭像 發(fā)表于 01-05 10:18 ?2166次閱讀

    數(shù)字電路設(shè)計(jì)有哪些仿真驗(yàn)證流程

    設(shè)計(jì)的要求運(yùn)行。 本文將詳細(xì)介紹數(shù)字電路設(shè)計(jì)的仿真驗(yàn)證流程,以及每個(gè)步驟的重要性和方法。 仿真驗(yàn)證的目標(biāo): 在設(shè)計(jì)階段,仿真驗(yàn)證的目標(biāo)是驗(yàn)證電路的
    的頭像 發(fā)表于 01-02 17:00 ?1692次閱讀