91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

基于PFGA的脫離Vivado單獨建仿真環(huán)境工程

電子設(shè)計 ? 來源:網(wǎng)絡(luò)交換FPGA ? 作者:網(wǎng)絡(luò)交換FPGA ? 2020-12-03 12:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FPGA樣機和做芯片的思路其實是有差異的。為了追求好的性能,節(jié)省成本,降低功耗(PPA),芯片設(shè)計者往往把事情做到極致,去做驗證時把各種覆蓋率盡可能做到100%,把每個模塊電路結(jié)構(gòu)優(yōu)化到面積最小,通過Power Gating和Clock Gating等技術(shù)把功耗降到最低,爭取把每次流片(燒錢)的風險降到最低;相比芯片設(shè)計流程,F(xiàn)PGA樣機的開發(fā)人員往往不太注重上述要求,雖然有著與做芯片相同的目標和追求,但往往因為FPGA的可編程性,即便后續(xù)發(fā)現(xiàn)問題,也可以通過修改代碼再次燒寫bit文件的方式來彌補,出錯成本相對低了很多。但如果按照做芯片的方式來做FPGA樣機,肯定會帶來更好的結(jié)果,甚至可以大幅度的降低FPGA開發(fā)時間。在這個過程中,就需要把常規(guī)的做FPGA的方式進行修正,比如經(jīng)常采用的跟FPGA編譯工具聯(lián)合仿真的辦法就不太適合做芯片的驗證了。本文就探討如何把Vivado與ModelSim聯(lián)合仿真修改為單獨采用ModelSim進行仿真。

在本公眾號上一篇文章(【干貨】推薦一款FPGA仿真調(diào)試鳥槍換炮的工具!)中就曾提到,隔行如隔山,做芯片的人永遠無法理解只做FPGA樣機的人在某些情況下不做仿真就直接上板的做法,非芯片設(shè)計出身只做FPGA樣機的人也不知道這個世界上還存在更為高效的Verilog或VHDL語言的仿真工具和仿真方法,也不理解為了把一個芯片做到極致,必須嚴格要求代碼規(guī)范的做法。為了能夠使用上一篇文章中高效的Verdi或者SimVision仿真調(diào)試工具,脫離Vivado等仿真工具單獨搭建仿真環(huán)境的就成為比較急迫的需求了。

本公眾號之前也曾經(jīng)發(fā)布過一篇相關(guān)的文章,用Modelsim獨立仿真帶Vivado IP核的仿真工程,也是實現(xiàn)采用ModelSim單獨搭建仿真環(huán)境的一種方法,但文中所述方法仍未徹底擺脫Vivado的環(huán)境,適用的場景也受到限制,某些工程中還會出錯。因此,本文從最原始文件搭建仿真環(huán)境的思路出發(fā),嘗試著研究脫離Vivado單獨建仿真環(huán)境的過程中都會遇到什么問題,采用什么樣的方法比較容易解決,筆者試了好幾個工程,總結(jié)出一套相對完善的解決思路,來分享給大家。

FPGA開發(fā)最不理解的芯片設(shè)計中的操作

1、做芯片的仿真最后都不用圖形界面
與剛開始做FPGA開發(fā)時都在圖形界面下操作的仿真方法不同,做大規(guī)模芯片設(shè)計時的仿真常常不調(diào)用圖形界面,都是采用命令行的形式做的仿真。

上圖就是采用簡單的windows下的批處理調(diào)用modelsim進行的一個仿真過程,這個簡單的批處理,就是腳本。也是本文最終要實現(xiàn)的目標。

set PROJECT_PATH=%cd%
::vsim  -do  sim.do
vsim -c -do  sim.do  

腳本,是芯片設(shè)計人員必須要掌握的基本技能。在芯片設(shè)計的各個階段,腳本的作用是非常巨大的。代碼仿真,可以使用腳本來進行仿真環(huán)境的搭建,綜合的約束文件,必須采用腳本來提前對綜合過程中的各種要求進行說明,后端就更不用說了。因為整個芯片的設(shè)計流程,每個流程的所有中間信息都是靠文本來儲存的,RTL代碼,netlist,后端的顏色文件,流片用的GDSII等等,對文本進行隨意的操作處理就是一名IC設(shè)計人員的基本技能。

如下圖就是一個簡單的采用NCVerilog進行仿真的腳本。

#!/bin/sh
echo "/`include /"../testcase166/$1.v/"" > testcase.v
sed "s///wave.shm///wave$1.shm/g" ../testbench/testbench.v > testbench.tmp
cp ../testbench/testbench.v ../testbench/testbench.bak
cp testbench.tmp ../testbench/testbench.v
rm -f testbench.tmp

ncverilog -f ../filelist/filelist.v +access+rwc  -l ../log/log/$1.log

mv ../testbench/testbench.bak ../testbench/testbench.v

rm -f testcase
~

而下圖則是一個采用TCL語言描述的Design Complier綜合腳本的開頭部分。

sh date
remove_design -designs 
##########################
#set library             #
##########################
set search_path [list /tools/lib/smic25/feview_s/version1/STD/Synopsys /
                      /tools/lib/smic25/feview_s/version1/STD/Symbol/synopsys]
set target_library  { smic25_tt.db }
set link_library    { smic25_tt.db  }
set symbol_library  { smic25.sdb }


##########################
#Paths    variables      #
##########################
     set main_dir ../..

     set RTL_ROOT_PATH $main_dir/hdl
     set NETLIST_PATH  $main_dir/sim/syn/netlist
     set RPT_PATH      $main_dir/sim/syn/log
     set DB_PATH       $main_dir/sim/syn/db
     set SDF_PATH      $main_dir/sim/syn/sdf

##########################
#void warning Info       #
##########################
suppress_message  VER-130
suppress_message  VER-129
suppress_message  VER-318
suppress_message  ELAB-311
suppress_message  VER-936


################################
#read&link&Check design#
################################

2、做芯片的仿真最后都不看波形

在做芯片仿真時,無論是采用自己搭建的簡單仿真環(huán)境還是UVM的仿真環(huán)境,最后的形式常常是把所有的testcase都集中到仿真環(huán)境中,只需敲一個命令,回車,所有的testcase就能夠全部運行下去。而仿真過程的錯誤,也都被記錄到log文件中,無論是運行的對與錯,都可以在log文件中看到。如下圖就是所有的testcase截圖,每個case運行的結(jié)果也會保存到另外一個log目錄下。

而FPGA開發(fā)人員,則不會去建立如此完善的仿真環(huán)境,往往是簡單的搭建一個某種功能模式下的仿真環(huán)境仿一下過了,就上板了。

采用ModelSim單獨仿真

1、整理RTL代碼及仿真代碼

如果要用ModelSim單獨仿真,并且需要搭建類似于上面描述的采用腳本形式來仿真的仿真環(huán)境,那么第一步就需要從Vivado工程中把相應(yīng)的Verilog代碼整理出來。

Vivado跟Quartus在仿真時采用的思路是不一樣的,對于Quartus而言,你可以很容易就能脫離開Quartus單獨搭建一個ModelSim或者VCS的仿真環(huán)境,因為Quartus所有的IP核或者原語庫之類的內(nèi)容全部都是以verilog或者VHDL文件存儲的,建仿真環(huán)境時,只需要到Quartus的安裝路徑下找一個叫EDA的目錄下找sim_lib的子目錄下找相應(yīng)的.v文件添加到仿真工程里就可以了,常見的庫文件主要有三個,220model.v,altera_mf.v和cyclone_atoms.v(或者是別的FPGA型號)。見本公眾號之前的文章有詳細描述:用Quartus II和ModelSim做后仿真(時序仿真)。

在Vivado中也有類似于Quartus中的庫文件,在Vivado工程目錄下,如下圖所示。

然后,整體拷貝ip文件夾到自己想搭建的modesim仿真環(huán)境目錄下:

上圖中rtl文件夾就是自己原來的設(shè)計文件,tb則是一些仿真用的.v文件。

2、編寫腳本sim.do文件

一個比較簡單的modelsim腳本文件如下。

vlib work
vlog -f  ./rtl.f
vsim -novopt work.tb_crossbar_top
do wave.do
run 10us

上面的腳本的具體含義,大家都可以百度搜索找到。需要說明的是所有工程中的文件的路徑是需要寫到一個rtl.f的文件夾下的,具體源代碼可以參考本公眾號之前的文章:如何快速生成Verilog代碼文件列表?(內(nèi)附開源C代碼),需要注意的是,生成的文件路徑地址中的斜杠與modelsim腳本中要求的斜杠剛好相反,可以直接采用文本編輯器替換掉,也可以添加以下子函數(shù)到C代碼中簡單修改一下。

void xiegang(char* s)
{
int i,j,k;
char buf[800]=" ";
char buf1[800]=" ";
memset(buf,0,800);
memset(buf1,0,800);

strcpy(buf,s);
strcpy(buf1,s);

for(i=0;i {
if(buf[i]=='//')
{
buf1[i]='/';
}
}

strcpy(s,buf1);
}

上面的C代碼實現(xiàn)文件列表的程序,其實也是腳本。

3、注意事項

在實現(xiàn)的過程中,發(fā)現(xiàn)Vivado并沒有把所有用到的庫文件都寫成.v的形式,而是以編譯庫的形式存在。這樣就需要在仿真時把對應(yīng)的庫文件包含進去。上面的腳本需要修改為:

vlib work
vlog -f  ./rtl.f
#vsim -novopt work.tb_crossbar_top
vsim -gui work.tb_crossbar_top -voptargs="+acc" -L C:/modeltech64_10.5/vivado_17_2/simprims_ver -L C:/modeltech64_10.5/vivado_17_2/unisims_ver 
do wave.do
run 10us

C:/modeltech64_10.5/vivado_17_2/simprims_ver

C:/modeltech64_10.5/vivado_17_2/unisims_ver

兩個庫都是Vivado與ModelSim聯(lián)合仿真時ModelSim預(yù)先編譯好的仿真庫,這里面很多都是FPGA上用到的BUFG、PLL等內(nèi)容。但添加完這些庫文件后,還是有錯誤,具體如下:

經(jīng)過上網(wǎng)查找原因,發(fā)現(xiàn)這是xilinx全局復(fù)位的模塊。該模塊在C:/Xilinx/Vivado/2015.1/data/verilog/src路徑其實在上面Error提示的一部分。

于是,自己copy一份glbl.v到當前工程,進行編譯。

但還是彈出相同的錯誤提示。

最后,在tb.v中添加該模塊的調(diào)用才最終解決問題。

在筆者嘗試多個工程之后,發(fā)現(xiàn)找Vivado 對應(yīng)的庫實在是太麻煩了,那么多的編譯出來的庫,每個庫也找不到具體解釋含義的說明文檔。無奈之下,想到了徹底擺脫Vivado的終極解決方案。

出現(xiàn)了找不到某個模塊定義的錯誤之后,就需要嘗試著去添加上圖中不知道含義的庫看能不能解決問題,一個一個的試,一個一個的試,試到懷疑人生。

終極方案

這個終極解決方案就是采用ASIC的思路來替換掉所有的IP。如果考慮最后要做ASIC,那么就需要把設(shè)計代碼中所有的FGPA IP核或者原語之類的內(nèi)容全部替換掉,比如FIFO都要修改成控制邏輯加RAM的形式,一些BUFG之類的改善時序或驅(qū)動的原語也全部刪掉。如果只考慮做仿真,則只需要自己手寫一個RAM的行為邏輯,定義一個數(shù)組類型,根據(jù)輸出的時候是否打拍隨意的調(diào)整。一些FIFO也可以很容易的在網(wǎng)上找到源代碼,同步的,異步的,首字置出的FIFO都有。替換干凈之后,就跟Vivado沒有任何關(guān)系了!甚至也跟ModelSim也沒有任何關(guān)系了,可以隨意的更換仿真工具,比如VCS和NC等,徹底的解決問題。

寫到此處,想起了一個有趣的事情。據(jù)說有一種永遠不讓代碼中出現(xiàn)BUG的終極解決方案。猜猜看是什么。

答案是:不要寫一行代碼!

這個跟擺脫Vivado單獨建仿真環(huán)境的終極解決思路竟然高度一致!徹底擺脫Vivado建仿真環(huán)境的方法也是,仿真代碼中不要用到Vivado中的任何一個IP核!!!

4、覆蓋率分析
有了腳本的支持,也脫離掉了Vivado的束縛,就可以做很多自己想做的事情,把仿真環(huán)境做成可回歸的形式之后就可以做覆蓋率分析。這時的腳本就修改成如下的樣子。

vlib work
vlog -f  ../filelist/filelist_sim.v
vlog -f  ../filelist/filelist_hdl.v  -cover bcesxf
vsim -novopt -coverage work.TESTBENCH -L C:/modeltech64_10.5/vivado_17_2/simprims_ver -L C:/modeltech64_10.5/vivado_17_2/unisims_ver 
run -all

大家可能注意到,上面腳本中把filelist分成了兩種,一種是仿真的,不用看覆蓋率,另外一種則是可綜合代碼部分,需要看覆蓋率,單獨寫到了filelist_hdl.v的文件里面。

運行結(jié)束后,就可以在圖形界面上看到覆蓋率分析的結(jié)果。

隨著測試例的運行,上面設(shè)計代碼的覆蓋率也會逐漸提高,最后可以通過選擇達不到覆蓋率要求的模塊進行詳細的分析,查看測試例沒有運行到的語句。有了充分的仿真驗證后,再上板就順利的多了。至少99%的邏輯BUG都被解決掉了,剩余的就是一些時序方面的問題,這樣就可以大大節(jié)約FPGA調(diào)試的時間。

用做芯片的思路去做FPGA,不是殺雞用牛刀,而是一種正確的思路。搭建一個完善的仿真驗證環(huán)境固然麻煩,但一旦做好之后,事半功倍,效率會大幅度的提升。本文中提到的仿真環(huán)境僅僅是一種最簡單的只有Verilog代碼的仿真環(huán)境,在驗證復(fù)雜度和便捷性等方面都差的很遠遠。公司里面目前采用的辦法,往往是大牛們用SV搭建好一個UVM框架后,下面做具體實現(xiàn)的人只需要往對應(yīng)框里面填數(shù)字就可以了。

工欲善其事,必先利其器!做FPGA,仿真驗證就是器!

編輯:hfy


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

    關(guān)注

    1645

    文章

    22050

    瀏覽量

    618728
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    835

    瀏覽量

    68813
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Vivado無法選中開發(fā)板的常見原因及解決方法

    在使用 AMD Vivado Design Suite 對開發(fā)板(Evaluation Board)進行 FPGA 開發(fā)時,我們通常希望在創(chuàng)建工程時直接選擇開發(fā)板,這樣 Vivado 能夠自動配置
    的頭像 發(fā)表于 07-15 10:19 ?449次閱讀
    <b class='flag-5'>Vivado</b>無法選中開發(fā)板的常見原因及解決方法

    北京建工六集團與軟通動力達成戰(zhàn)略合作

    近日,北京六集團有限責任公司(以下簡稱“北京建工六集團”)與軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱“軟通動力”)舉行戰(zhàn)略合作簽約儀式。雙方將聚焦建筑工程智能機器人、數(shù)字孿生仿真
    的頭像 發(fā)表于 06-30 16:26 ?381次閱讀

    超聲波倒車雷達工程仿真資料

    超聲波倒車雷達工程仿真
    發(fā)表于 06-08 10:03 ?0次下載

    如何使用One Spin檢查AMD Vivado Design Suite Synth的結(jié)果

    本文講述了如何使用 One Spin 檢查 AMD Vivado Design Suite Synth 的結(jié)果(以 Vivado 2024.2 為例)。
    的頭像 發(fā)表于 05-19 14:22 ?521次閱讀
    如何使用One Spin檢查AMD <b class='flag-5'>Vivado</b> Design Suite Synth的結(jié)果

    《聊一聊ZXDoc》之CAN總線仿真、面板仿真

    。什么是仿真?CAN總線仿真是一種通過虛擬化技術(shù)模擬CAN(FD)通信環(huán)境的方法,用于在無物理硬件或脫離實際系統(tǒng)的情況下,對ECU、傳感器、執(zhí)行器等節(jié)點的通信行為
    的頭像 發(fā)表于 05-09 11:30 ?532次閱讀
    《聊一聊ZXDoc》之CAN總線<b class='flag-5'>仿真</b>、面板<b class='flag-5'>仿真</b>

    電磁環(huán)境仿真與驗證系統(tǒng)軟件

    電磁環(huán)境仿真與驗證系統(tǒng)軟件
    的頭像 發(fā)表于 04-29 16:59 ?274次閱讀
    電磁<b class='flag-5'>環(huán)境</b><b class='flag-5'>仿真</b>與驗證系統(tǒng)軟件

    一文詳解Vivado時序約束

    Vivado的時序約束是保存在xdc文件中,添加或創(chuàng)建設(shè)計的工程源文件后,需要創(chuàng)建xdc文件設(shè)置時序約束。時序約束文件可以直接創(chuàng)建或添加已存在的約束文件,創(chuàng)建約束文件有兩種方式:Constraints Wizard和Edit Timing Constraints,在綜合后
    的頭像 發(fā)表于 03-24 09:44 ?3528次閱讀
    一文詳解<b class='flag-5'>Vivado</b>時序約束

    Vivado Design Suite用戶指南:邏輯仿真

    電子發(fā)燒友網(wǎng)站提供《Vivado Design Suite用戶指南:邏輯仿真.pdf》資料免費下載
    發(fā)表于 01-15 15:25 ?0次下載
    <b class='flag-5'>Vivado</b> Design Suite用戶指南:邏輯<b class='flag-5'>仿真</b>

    每次Vivado編譯的結(jié)果都一樣嗎

    很多FPGA工程師都有這種困惑,Vivado每次編譯的結(jié)果都一樣嗎? 在AMD官網(wǎng)上,有這樣一個帖子: Are Vivado results repeatable for identical
    的頭像 發(fā)表于 11-11 11:23 ?1249次閱讀
    每次<b class='flag-5'>Vivado</b>編譯的結(jié)果都一樣嗎

    如何利用TPA2012D2的輸出端和阻抗值4OHM的喇叭一個cadence仿真模型?

    最近想用tlv320aic3106加tpa2012d2設(shè)計一個音頻設(shè)備,但是不太懂各個傳輸路徑上應(yīng)該加什么樣的濾波電容,想請教一下如何利用TPA2012D2的輸出端和阻抗值4OHM的喇叭一個cadence仿真模型啊。。我想看看輸出端加多大的電容合適,電容是串聯(lián)在喇叭和
    發(fā)表于 11-07 07:42

    使用Vivado通過AXI Quad SPI實現(xiàn)XIP功能

    本博客提供了基于2023.2 Vivado的參考工程,展示如何使用Microblaze 地執(zhí)行(XIP)程序,并提供一個簡單的bootloader。
    的頭像 發(fā)表于 10-29 14:23 ?1716次閱讀
    使用<b class='flag-5'>Vivado</b>通過AXI Quad SPI實現(xiàn)XIP功能

    Vivado使用小技巧

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

    Vivado 2024.1版本的新特性(2)

    從綜合角度看,Vivado 2024.1對SystemVerilog和VHDL-2019的一些特性開始支持。先看SystemVerilog。
    的頭像 發(fā)表于 09-18 10:34 ?1905次閱讀
    <b class='flag-5'>Vivado</b> 2024.1版本的新特性(2)

    Vivado 2024.1版本的新特性(1)

    Vivado 2024.1已正式發(fā)布,今天我們就來看看新版本帶來了哪些新特性。
    的頭像 發(fā)表于 09-18 10:30 ?2470次閱讀
    <b class='flag-5'>Vivado</b> 2024.1版本的新特性(1)

    OPA820同樣的波電路mutisim仿真與TINA輸出結(jié)果差異較大,原因是什么?

    同樣的波電路 mutisim 仿真與TINA 輸出結(jié)果差異較大,原因是什么?如何調(diào)整電路才能讓兩個軟件仿真結(jié)果一致,實現(xiàn)檢波?
    發(fā)表于 08-07 07:45
    主站蜘蛛池模板: 美女被艹视频网站 | 在线观看免费观看 | 亚洲午夜精品久久久久久人妖 | 国产亚洲新品一区二区 | 一区二区三区四区在线不卡高清 | 亚洲一卡二卡在线 | 一区二区在线免费观看 | ww久久| 在线观看亚洲一区 | jk黑色丝袜美腿老师啪啪 | 在线观看的黄网 | 欧美一级第一免费高清 | 日本三级精品 | 中国美女乱淫免费看视频 | 色婷五月 | 香蕉视频久久久 | 免费在线成人网 | 在线视频精品免费 | 黑人xxxx精品 | 美女又爽又黄视频 | 啪啪免费视频网站 | 国产精品久久久久久久久久妇女 | 欧洲成品大片在线播放 | 国模大尺度人体一区 | 亚洲精品亚洲人成人网 | 国语自产免费精品视频一区二区 | 精品国产香港三级 | 超级毛片 | 伊人网99| 大量真实偷拍情侣视频野战 | 国产高清在线播放免费观看 | 狠狠色噜噜狠狠狠狠97老肥女 | 97国内精品久久久久久久影视 | 天天操夜夜草 | 黄色一级毛片网站 | 精品噜噜噜噜久久久久久久久 | 美女视频一区二区三区在线 | 午夜影视在线视频观看免费 | 国产你懂| 很黄的网站在线观看 | 久久精品在 |