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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

什么是數(shù)字仿真?

汽車電子技術 ? 來源:OpenFPGA ? 作者:碎碎思 ? 2023-02-09 14:27 ? 次閱讀

數(shù)字硬件建模SystemVerilog(三)-仿真

圖片

數(shù)字仿真是一種軟件程序,它將邏輯值變化(稱為激勵)應用于數(shù)字電路模型的輸入,以實際硅傳播這些邏輯值變化的相同方式通過模型傳播該激勵,并提供觀察和驗證該激勵結果的機制。

SystemVerilog是一種使用0和1的數(shù)字仿真語言。該語言不表示仿真電壓、電容電阻。SystemVerilog提供的編程結構,用于對數(shù)字電路建模、對激勵發(fā)生器建模以及對驗證檢查器建模。

示例1.4說明了一個可以仿真的簡單數(shù)字電路模型。這與前面示例1.3所示的電路相同。

圖片

示例1-4:帶有輸入和輸出端口的設計模型(32位加法器/減法器)在本例中,請注意模型具有輸入端口和輸出端口。為了仿真該模型,必須提供將邏輯值應用于輸入端口的激勵,并且必須提供響應檢查器以觀察輸出端口。

使用testbench封裝激勵生成和響應驗證。在SystemVerilog中有許多方法可以對測試臺進行建模,測試臺中的代碼可以是簡單的編程語句,也可以是復雜的面向?qū)ο蟆⑹聞占壘幊?,示?-5說明了32位加法器/減法器設計的簡單testbench。

圖片

圖片

示例1-5:32位加法器/減法器模型的testbench例1-5中的主要代碼塊是一個初始化過程,它是一種過程塊,過程塊包含編程語句和時序信息,用于指示仿真器做什么以及什么時候做。SystemVerilog有兩種主要類型的程序塊:initial procedures and always procedures。

初始過程是用關鍵字initial定義的。初始過程,不管其名稱如何,都不用于初始化設計。相反,初始過程只執(zhí)行一次編程語句。當?shù)竭_最后一條語句時,對于給定的仿真運行,不會再次執(zhí)行初始過程。初始過程不可綜合,也不用于RTL建模。本系列著重于編寫用于仿真和合成的RTL模型,因此不再深入討論初始過程。

Always過程是用關鍵字always、always_comb、always_ff和always_latch定義的,Always過程是一個無限循環(huán),當過程完成過程中最后一條語句的執(zhí)行時,過程自動返回到開頭,并再次啟動過程。對于RTL建模,Always程序必須以靈敏度列表開始;例如示例1-4)中所示的@(posedge clk)定義。后面將更詳細地討論各種形式的always程序。

過程塊可以包含一條語句,也可以包含一組語句。過程塊中的多個語句在關鍵字begin和end之間分組(驗證代碼還可以在關鍵字fork和join、join_any或join_none之間分組語句)。begin和end之間的語句按其列出的順序執(zhí)行,即:從第一條語句開始,到最后一條語句結束。

示例1-5中的初始過程包含一個重復循環(huán)。這個循環(huán)被定義為執(zhí)行10次。循環(huán)的每個過程:

  • l、 延遲到c1k信號的下降沿。
    1. 為設計的a、b和mode輸入生成隨機值。
    1. 延遲到clk的下一個下降沿,然后調(diào)用檢查結果任務(子例程)以驗證設計輸出是否與計算的預期結果匹配。

該設計在其時鐘輸入的上升沿工作。測試臺使用同一時鐘的相對邊緣,以避免在設計使用的時鐘邊緣上驅(qū)動輸入和讀取設計的輸出。如果測試臺在時鐘的下降沿驅(qū)動值,則在設計使用輸入之前,這些輸入的穩(wěn)定設置時間為零。同樣,如果測試臺在時鐘的下降沿驗證設計結果,那么這些設計輸出穩(wěn)定的時間將為零。

在同一時刻修改和讀取值被稱為simulation競爭條件。使用設計時鐘的相對邊緣來驅(qū)動激勵是測試臺避免設計仿真競爭條件的一種簡單方法,例如滿足設計設置和保持時間要求。

測試臺被建模為具有輸入和輸出端口的模塊,類似于正在驗證的設計。最后一步是將測試臺端口連接到設計端口,并生成時鐘。這是在頂級模塊中完成的。示例1-6顯示了這方面的代碼。

圖片

示例1-6:將測試臺連接到設計的頂層模塊# 系統(tǒng)Verilog仿真器

所有SystemVerilog仿真器都有很多共同點,這對于理解如何編寫能夠正確仿真的SystemVerilog RTL模型至關重要。這些功能包括:編譯、精化、仿真時間和仿真事件調(diào)度(compilation elaboration simulation time and simulation event scheduling),下面將討論仿真的這些方面。

編譯和精化Compilation and elaboration

SystemVerilog源代碼需要編譯和詳細說明才能進行仿真。編譯包括根據(jù)IEEE SystemVerilog標準中定義的規(guī)則檢查SystemVerilog源代碼,以確保其語法和語義正確。精化將構成設計和測試臺的模塊和組件綁定在一起。精化還解析可配置代碼,例如常量的最終值、向量大小和仿真時間縮放。

IEEE SystemVerilog標準沒有定義精確的編譯和精化過程。標準允許每個仿真器供應商以供應商認為最適合該產(chǎn)品的方式定義該過程以及編譯和精化之間的劃分。一些仿真器將編譯和精化過程作為單個步驟進行組合,而其他仿真器將這些過程劃分為單獨的步驟。一些仿真器可能在編譯階段捕獲源代碼中某些類型的錯誤,而其他仿真器在精化階段捕獲這些錯誤。這些差異不會影響本系列中討論的RTL編碼風格和指南,但了解所使用的仿真器如何處理RTL源代碼的編譯和精化是有幫助的。請參閱特定仿真器的文檔,了解該產(chǎn)品如何處理編譯和精化。

源代碼順序

SystemVerilog語言,與大多數(shù)語言一樣;如果不是所有編程語言在源代碼順序上都有一定的依賴關系,那么在引用這些定義之前,必須編譯用戶定義的類型聲明和聲明包。用戶定義的類型聲明和包通常與使用聲明的RTL代碼位于不同的文件中。這意味著設計者必須注意這些文件是按正確的順序編譯的,因此聲明是common的,在被引用之前堆積起來.

并非所有聲明都是順序相關的,例如,SystemVerilog允許在編譯模塊之前引用模塊名稱。在模塊內(nèi),任務和函數(shù)可以在定義之前調(diào)用,只要定義在模塊內(nèi)。

全局聲明和$unit聲明空間

SystemVerilog允許在名為unit中的聲明可以由多個文件共享,全局聲明依賴于編譯順序,必須在引用之前編譯,全局unit添加定義,這可能會導致隨意的全局定義,從而難以確保在引用定義之前對其進行編譯.

SystemVerilog編譯器指令,如“定義文本宏和”時間刻度時間縮放,也屬于$unit space,全局聲明必須在受指令影響的代碼之前編譯。

最佳做法準則1-1

將包用于全局聲明,而不是$unit聲明空間。

單文件和多文件編譯

當涉及多個文件時,IEEE SystemVerilog標準定義了兩種編譯/精化范例的規(guī)則:多文件編譯和單文件編譯。

多文件編譯范例允許同時編譯多個源代碼文件。一個文件中的全局聲明和編譯器指令對于在聲明和指令之后編譯的其他文件中的源代碼是可見的。

單文件編譯范例允許獨立編譯每個文件。一個文件中的任何全局聲明或編譯器指令僅在該文件中可見。無論文件的編譯順序如何,其他文件都不會看到這些聲明或指令。

所有仿真器和合成編譯器都支持多文件范例,但并非所有工具都支持單文件編譯,但是,默認情況下,支持兩種范例的工具不一定使用相同的范例。默認情況下,某些工具使用單文件編譯,多文件編譯需要特定于工具的調(diào)用選項。默認情況下,其他工具使用多文件編譯,并且需要調(diào)用選項進行單文件編譯或增量重新編譯。

關于仿真或者驗證方面,還有很多很多內(nèi)容,但是不是本系列重點,所以這里推薦《systemverilog驗證》了解更多關于SV的仿真和驗證知識。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)字電路

    關注

    193

    文章

    1596

    瀏覽量

    80395
  • 模型
    +關注

    關注

    1

    文章

    3121

    瀏覽量

    48663
  • 數(shù)字仿真

    關注

    0

    文章

    17

    瀏覽量

    8073
收藏 人收藏

    評論

    相關推薦

    基于VHDL語言含秒表數(shù)字仿真和引腳設置

    基于VHDL語言含秒表數(shù)字仿真和引腳設置
    發(fā)表于 05-22 23:13

    使用ADS和VSA(89600)進行數(shù)字仿真錯誤怎么辦?

    使用ADS,ADS和VSA(89600)進行數(shù)字仿真,連接到運行時錯誤。無法找到“ADStoVSA.dll”。我怎樣才能解決這個問題?謝謝 以上來自于谷歌翻譯 以下為原文Do digital
    發(fā)表于 07-24 10:05

    什么是全數(shù)字仿真平臺

    數(shù)字仿真平臺作為工業(yè)領域不可缺少的重要軟件之一,除了可以與MATLAB或者Simulink集成外,還支持哪些優(yōu)秀的功能?在了解新一代全數(shù)字仿真平臺SkyEye之前,先來學習一下什么是
    發(fā)表于 12-17 07:48

    什么是全數(shù)字仿真平臺

    數(shù)字仿真平臺作為工業(yè)領域不可缺少的重要軟件之一,除了可以與MATLAB或者Simulink集成外,還支持哪些優(yōu)秀的功能?在了解新一代全數(shù)字仿真平臺SkyEye之前,先來學習一下什么是
    發(fā)表于 12-21 06:42

    使用Pulseview***數(shù)字設計仿真協(xié)議解碼

    1、使用Pulseview***數(shù)字設計仿真協(xié)議解碼  經(jīng)常使用RTL例如verilog進行數(shù)字邏輯設計的朋友,仿真一定是一個繞不開的話題。在一些標準的
    發(fā)表于 10-20 11:30

    高精度游移方位捷聯(lián)慣導系統(tǒng)的數(shù)字仿真

    高精度游移方位捷聯(lián)慣導系統(tǒng)的數(shù)字仿真::捷聯(lián)慣導系統(tǒng)的數(shù)字仿真對于系統(tǒng)設計、方案論證和算法研究有著重要的意義,特別是游移方位捷聯(lián)慣導系統(tǒng). 因此通過完成軌跡發(fā)生
    發(fā)表于 06-21 22:37 ?19次下載

    基于LabVIEW的數(shù)字仿真實驗平臺的設計

    基于LabVIEW的數(shù)字仿真實驗平臺的設計 利用虛擬儀器軟件開發(fā)平臺,在計算機上通過對前面板和后面板的編寫來完成實驗室及電子課程實驗教學中所涉及的數(shù)字
    發(fā)表于 03-30 16:06 ?111次下載

    基于實時數(shù)字仿真的保護校驗與評估系統(tǒng)

    本文介紹了建立在 實時仿真 系統(tǒng)基礎上的保護校驗與評估系統(tǒng),系統(tǒng)采用面向?qū)ο缶幊碳夹g,基于模塊化的思想構造軟保護來模擬實際保護裝置的工作原理,可以實現(xiàn)在實時數(shù)字仿真
    發(fā)表于 06-30 17:50 ?32次下載
    基于實時<b class='flag-5'>數(shù)字</b><b class='flag-5'>仿真</b>的保護校驗與評估系統(tǒng)

    異步電動機直接轉(zhuǎn)矩控制及其數(shù)字仿真

    異步電動機直接轉(zhuǎn)矩控制及其數(shù)字仿真
    發(fā)表于 01-21 11:54 ?4次下載

    異步電動機直接轉(zhuǎn)矩控制及其數(shù)字仿真(本科畢業(yè)設計)

    異步電動機直接轉(zhuǎn)矩控制及其數(shù)字仿真(本科畢業(yè)設計)
    發(fā)表于 01-21 11:54 ?4次下載

    數(shù)字鐘的設計與仿真課程設計說明書

    數(shù)字鐘設計與仿真
    發(fā)表于 06-26 09:28 ?79次下載

    簡單數(shù)字仿真電路圖大全(五款數(shù)字仿真電路圖)

     本文詳細介紹了五款數(shù)字仿真電路圖。數(shù)字鐘實際上是一個對標準頻率(1HZ)進行計數(shù)的計數(shù)電路。由于計數(shù)的起始時間不可能與標準時間(如北京時間)一致,故需要在電路上加一個校時電路,同時標準的1HZ時間信號必須做到準確穩(wěn)定。通常使
    發(fā)表于 01-26 10:44 ?10.8w次閱讀
    簡單<b class='flag-5'>數(shù)字</b>鐘<b class='flag-5'>仿真</b>電路圖大全(五款<b class='flag-5'>數(shù)字</b>鐘<b class='flag-5'>仿真</b>電路圖)

    HLA雷達對抗數(shù)字仿真系統(tǒng)的應用

    隨著計算機和仿真技術的發(fā)展, 建立信號級的雷達對抗數(shù)字仿真系統(tǒng)來研究不同干擾樣式的效果,從而遴選有效的干擾樣式作為武器系統(tǒng)對抗裝備,節(jié)約了人力、 物力, 縮短了干擾樣式和設備的研制周期。
    發(fā)表于 04-23 09:36 ?2773次閱讀
    HLA雷達對抗<b class='flag-5'>數(shù)字</b><b class='flag-5'>仿真</b>系統(tǒng)的應用

    MATLAB教程之控制系統(tǒng)數(shù)字仿真的實現(xiàn)詳細資料說明

    本文檔的主要內(nèi)容詳細介紹的是MATLAB教程之控制系統(tǒng)數(shù)字仿真的實現(xiàn)詳細資料說明
    發(fā)表于 07-25 16:46 ?10次下載
    MATLAB教程之控制系統(tǒng)<b class='flag-5'>數(shù)字</b><b class='flag-5'>仿真</b>的實現(xiàn)詳細資料說明

    8X8LED點陣屏顯示數(shù)字仿真電路圖免費下載

    本文檔的主要內(nèi)容詳細介紹的是8X8LED點陣屏顯示數(shù)字仿真電路圖免費下載。
    發(fā)表于 01-06 14:07 ?19次下載
    8X8LED點陣屏顯示<b class='flag-5'>數(shù)字</b>的<b class='flag-5'>仿真</b>電路圖免費下載