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

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

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

FPGA開發(fā)Vivado的仿真設(shè)計案例分析

電子設(shè)計 ? 來源:CSDN 博主 ? 作者:FPGADesigner的博客 ? 2020-12-31 11:44 ? 次閱讀

仿真功能概述

仿真FPGA開發(fā)中常用的功能,通過給設(shè)計注入激勵和觀察輸出結(jié)果,驗證設(shè)計的功能性。Vivado設(shè)計套件支持如下仿真工具:Vivado Simulator、Questa、ModelSim、IES、VCS、Rivera-PRO和Active-HDl。

Vivado的仿真流程如下圖所示:

pIYBAF9uKSCAeZp2AAY6pYr-mEE259.png

仿真可以在設(shè)計階段的不同時間點進行,主要包括如下三個階段:
RTL級行為仿真:在綜合和實現(xiàn)前便可驗證設(shè)計,用來檢查代碼語法和驗證代碼像設(shè)計者想要的功能一樣工作,早期的行為級仿真可以盡早發(fā)現(xiàn)問題;
綜合后仿真:使用綜合網(wǎng)表仿真,驗證綜合后設(shè)計滿足功能需求。該階段仿真不太常用,可以用時序仿真(timing simulation)來估計時間;功能仿真(functional sumulation)由層次化的網(wǎng)表組成,最底層由Xilinx原語構(gòu)成;
實現(xiàn)后仿真:可以進行功能仿真和時序仿真,且與FPGA硬件上的工作情況最為接近,確保實現(xiàn)后設(shè)計滿足功能和時序要求。

時序仿真相比功能仿真要耗費大量的時間,但是可以檢測到功能仿真無法檢測的問題,比如:

由于屬性設(shè)置(綜合屬性、UNISIM庫屬性等),或不同仿真器對語法的不同解釋,導(dǎo)致綜合后或?qū)崿F(xiàn)后功能發(fā)生改變;

雙口RAM讀寫沖突;

錯誤的、不合適的時序約束;

異步路徑操作問題;

由于優(yōu)化技術(shù)引起的功能問題

Vivado Simulator支持VHDL(IEEE-STD-1076-1993)、Verilog(IEEE-STD-1364-2001)、SystemVerilog中的可綜合子集(IEEE-STD-1800-2009)三種硬件描述語言,此外還支持IEEE P1735加密標準。

使用TestBench和激勵文件

TestBench也是由HDL語言代碼編寫,其實例化了需要仿真的設(shè)計,生成設(shè)計所需要的激勵信號,監(jiān)測設(shè)計輸出結(jié)果并檢查功能的正確性。一個簡單的TestBench可以僅僅將激勵順序地加載到設(shè)計的輸入管腳上;一個復(fù)雜的TestBench可能會包含子程序調(diào)用、從外部文件讀取激勵信號、條件化激勵和其它更多復(fù)雜的結(jié)構(gòu)。

下面是編寫TestBench時極度推薦的一些注意事項:
在Verilog TestBench中總是使用timescale規(guī)定時間,如`timescale 1ns/1ps;
在仿真時間的0時刻,將所有的設(shè)計輸入初始化位為一個確定的值;
在綜合后和實現(xiàn)后的時序仿真中,會自動觸發(fā)全局置位/復(fù)位脈沖(GSR),這會讓所有的寄存器在仿真的前100ns內(nèi)鎖定其值。因此在100ns之后再賦值激勵數(shù)據(jù);
在全局置位、復(fù)位脈沖釋放之前就確保時鐘源已經(jīng)開始工作。

指定仿真器位置

點擊Tools->Settings->Tool Settings->3rd Party Simulators:

o4YBAF9uKSKAKLixAACX1HFfe20711.png

Install Paths中定位仿真器的安裝路徑,Default Compiled Library Paths中指定與仿真器相關(guān)的編譯庫路徑。只有第三方仿真器需要在此設(shè)置,Vivado Simulator不需要設(shè)置。

編譯仿真庫

使用Vivado Simulator時,不需要編譯仿真庫。但是使用第三方仿真工具時,必須先編譯仿真庫,才能在第三方仿真工具中正確運行。仿真庫中包含了仿真模型,比如FPGA和IP的行為模型和時序模型。編譯之后的庫可以在多個設(shè)計工程中使用。

在編譯過程中,Vivado會創(chuàng)建一個仿真器用來參考編譯庫文件的初始化文件,該文件包含了一些控制變量,包括規(guī)定參考庫路徑、優(yōu)化、編譯和仿真設(shè)置。如果沒有正確的初始化文件,就不能運行包含Xilinx原語的仿真。不同仿真器的初始化文件名稱如下:
Questa/ModelSim:modelsim.ini;
IES:cds.lib;
VCS:synopsys_sim.setup

如果使用的仿真器版本不變,只需要編譯一次庫文件即可;如果更換了Vivado或仿真器的版本,就必須重新編譯一次庫文件。編譯庫文件有Vivado IDE和Tcl命令兩種方法,本文介紹第一種。點擊Tools->Compile Simulation Libraries(即使不打開工程也有此命令)打開如下窗口:

pIYBAF9uKSOAPr-BAABxBPsneBo643.png


Simulator:選擇第三方仿真器;
Language:編譯庫到規(guī)定的語言,如果為All,則會根據(jù)選擇的仿真器自動選擇語言,如果仿真器支持混合語言仿真,則Verilog庫和VHDL庫都會編譯;
Library:選擇需要編譯的仿真庫(Unisim或Simprim),默認會編譯所有 的庫;
Family:編譯庫到規(guī)定的FPGA系列,默認會生成所有的器件系列;
Compiled library location:設(shè)置保存編譯庫結(jié)果的目錄路徑。默認情況下會保存在當前工程目錄的.cache/compile_simlib目錄下;
Simulator executable path:設(shè)置仿真器可執(zhí)行文件所在的路徑;
Miscellaneous Options:使用Tcl命令設(shè)置一些其它選項;
Compile Xilinx IP:選擇是否編譯Xilinx IP的仿真庫;
Overwrite current pre-compiled libraries:選擇是否重寫當前預(yù)編譯庫;
Compile 32-bit libraries:默認為64bit模式,選中此項,仿真器編譯會在32bit模式下進行;
Verbose:Messages窗口默認有消息顯示數(shù)量限制,選中此選項后,相關(guān)命令會忽視此限制,所有消息都會顯示在Messages窗口中;
Command:展示了上述設(shè)置所等效的Tcl命令。

Xilinx仿真庫

設(shè)計者可以將Xilinx仿真庫用于任何支持VHDL-93和Verilog-2001語言標準的仿真器。庫中包含延遲與模型信息,可以正確地仿真Xilinx硬件器件。

仿真時,如果數(shù)據(jù)和時鐘同時發(fā)生變化,仿真器在判斷當前時鐘邊緣時會采樣上一個狀態(tài)的輸入,同時變換時刻的輸入會安排在下一個始終邊緣才有效。最好的做法當然是不要使數(shù)據(jù)信號和時鐘信號同時變換,以避免出現(xiàn)意料之外的仿真結(jié)果。

當設(shè)計者在設(shè)計中實例化了一個組件后,仿真器必須在庫中找到描述該組件功能的內(nèi)容,以確保正確的仿真。下面列出Xilinx提供的仿真庫:
UNISIM:Xilinx原語的功能仿真,Verilog庫名為UNISIMS_VER。包含了器件原語和最低等級構(gòu)建模塊的描述。
UNIMACRO:Xilinx宏的功能仿真,Verilog庫名為UNIMACRO_VER。當使用器件宏時,必須設(shè)置此庫。
UNIFAST:快速仿真庫,Verilog庫名為UNIFAST_VER。推薦在RTL行為級仿真中使用此庫,可以節(jié)省仿真運行時間。
SIMPRIMS_VER:Xilinx原語的時序仿真,僅支持Verilog,因此時序仿真僅支持Verilog語言。
SECUREIP:Xilinx復(fù)雜器件組件(如PCIE、高速收發(fā)器)的功能仿真和時序仿真庫,在Vivado安裝目錄的data/secureip目錄下可以查看完整IP列表。
XPM:Xilinx原語的功能仿真。

除了SECUREIP外,其它庫都位于Vivado安裝目錄data/Verilog或VHDL/src目錄內(nèi)。設(shè)計者必須根據(jù)運行的仿真來設(shè)定不同的仿真庫。下表中給出了與不同仿真階段相關(guān)的仿真庫文件:

o4YBAF9uKSWAK6k3AAEng5KtVJs173.png

仿真設(shè)置

在仿真設(shè)置中規(guī)定目標仿真器、仿真集、仿真頂層模塊名稱等選項。打開Settings切換到Simulation標簽中,或在Flow Navigator中的Simulation上右鍵->Simulation Settings,打開設(shè)置窗口:

o4YBAF9uKSeAHcDBAACwRGccuU8550.png

其中Clean up simulation files表示重新運行仿真時會將現(xiàn)存的整個仿真目錄全部移除,其余設(shè)置選項很熟悉了,不多作介紹。下面著重介紹Simulator language,理解背后的處理機制,其值可選擇VHDL、Verilog或Mixed。

大多數(shù)的Xilinx IP只會生成單語言的行為仿真模型;某些第三方仿真工具也僅支持單語言仿真。通常應(yīng)該將Simulator language設(shè)置為仿真工具支持的語言,以確保工具正常運行。如果IP核同時也可以生成該語言的行為模型再好不過,但是如果IP核不支持該設(shè)置,Vivado會自動從IP核的DCP文件中生成一個結(jié)構(gòu)化仿真模型用于仿真,確保仿真可以正常運行。

仿真分辨率需要在TestBench中使用timescale設(shè)置,某些人認為設(shè)置一個粗略的仿真分辨率(如1s)可以提升仿真性能,這是錯誤的。在 Xilinx仿真模型中,大多數(shù)仿真時間是基于一個固定間隔,與仿真分辨率并無聯(lián)系。設(shè)置仿真分辨率主要是為了觀察更方便。但是某些Xilinx原語組件(如MMCM)需要1ps的分辨率才能在仿真中正常工作,最常用的分辨率設(shè)置是`timescale 1ns/1ps。

仿真集功能

Vivado提供了仿真集(Simulation Sets)功能,該機制可以讓用戶將不同設(shè)計階段所用到的不同源文件添加到各自的仿真集中。比如一個仿真集可以添加用于RTL行為級仿真的源文件,另一個仿真集添加用于實現(xiàn)后時序仿真的源文件?;蛘卟煌姆抡婕峁σ粋€設(shè)計的不同測試方法,等等。

在創(chuàng)建或添加仿真源文件時,可以選擇將文件加入到哪個仿真集,或者創(chuàng)建新的仿真集:

當設(shè)計中存在多個仿真集時,當前運行使用的仿真集會顯示為Active狀態(tài):

編輯:hfy


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

    關(guān)注

    30

    文章

    817

    瀏覽量

    128140
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66547
收藏 人收藏

    評論

    相關(guān)推薦

    Verilog 測試平臺設(shè)計方法 Verilog FPGA開發(fā)指南

    Verilog測試平臺設(shè)計方法是Verilog FPGA開發(fā)中的重要環(huán)節(jié),它用于驗證Verilog設(shè)計的正確性和性能。以下是一個詳細的Verilog測試平臺設(shè)計方法及Verilog FPGA
    的頭像 發(fā)表于 12-17 09:50 ?217次閱讀

    正點原子fpga開發(fā)指南

    定制硬件加速的應(yīng)用。 1. 開發(fā)環(huán)境搭建 1.1 安裝Xilinx Vivado Vivado是Xilinx提供的綜合設(shè)計環(huán)境,用于設(shè)計、仿真和調(diào)試
    的頭像 發(fā)表于 11-13 09:35 ?433次閱讀

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

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

    深入探索Vivado非工程模式FPGA設(shè)計流程

    在設(shè)計過程的每個階段,設(shè)計者均可以打開Vivado集成開發(fā)環(huán)境,對存儲器中保存的當前設(shè)計進行分析和操作。
    發(fā)表于 04-03 09:36 ?1020次閱讀
    深入探索<b class='flag-5'>Vivado</b>非工程模式<b class='flag-5'>FPGA</b>設(shè)計流程

    fpga仿真和后仿真的區(qū)別

    FPGA的前仿真和后仿真在芯片設(shè)計和驗證過程中扮演著不同的角色,各自具有獨特的特點和重要性。
    的頭像 發(fā)表于 03-15 15:29 ?2217次閱讀

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

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

    fpga仿真器是什么?它有哪些優(yōu)勢?

    FPGA仿真器是一種用于模擬FPGA(現(xiàn)場可編程門陣列)硬件行為的軟件工具。它通過模擬FPGA內(nèi)部的邏輯電路、時序和接口等,幫助工程師在FPGA
    的頭像 發(fā)表于 03-15 15:15 ?1765次閱讀

    fpga開發(fā)一般用什么軟件

    FPGA(現(xiàn)場可編程門陣列)開發(fā)通常使用一系列專門的軟件工具,這些工具涵蓋了從設(shè)計、仿真到編譯和調(diào)試的整個流程。
    的頭像 發(fā)表于 03-15 14:43 ?3449次閱讀

    fpga仿真器接口定義

    FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)仿真器接口的定義主要依賴于仿真器的具體設(shè)計和所支持的通信協(xié)議。在FPGA的設(shè)計和
    的頭像 發(fā)表于 03-15 14:01 ?1269次閱讀

    fpga仿真文件怎么寫

    首先,你需要選擇一個FPGA仿真軟件,如ModelSim、Vivado、Quartus II等。這些軟件都提供了強大的仿真功能,可以幫助你驗證FPG
    的頭像 發(fā)表于 03-15 14:00 ?816次閱讀

    fpga仿真軟件有哪些

    此外,還有一些其他的FPGA仿真軟件,如Gvim和ISE等,可以根據(jù)具體需求和開發(fā)環(huán)境進行選擇。需要注意的是,不同的FPGA仿真軟件可能具有
    的頭像 發(fā)表于 03-15 14:00 ?3880次閱讀

    fpga仿真是什么

    FPGA仿真是一種驗證FPGA設(shè)計正確性的過程,主要用來分析設(shè)計電路邏輯關(guān)系的正確性。在FPGA設(shè)計中,
    的頭像 發(fā)表于 03-15 13:59 ?1471次閱讀

    Vivado時序問題分析

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

    怎么用Vivado做覆蓋率分析

    在做仿真的時候往往會去做代碼覆蓋率和功能覆蓋率的分析,來保證仿真是做的比較充分完備的。
    的頭像 發(fā)表于 01-03 12:34 ?1721次閱讀
    怎么用<b class='flag-5'>Vivado</b>做覆蓋率<b class='flag-5'>分析</b>

    FPGA基本開發(fā)設(shè)計流程

    FPGA的設(shè)計流程就是利用EDA開發(fā)軟件和編程工具對FPGA芯片進行開發(fā)的過程。FPGA開發(fā)
    發(fā)表于 12-31 21:15