學(xué)習(xí)FPGA,,被它的各種仿真弄的暈頭轉(zhuǎn)向。前仿真,、后仿真,、功能仿真,、時(shí)序仿真、行為級(jí)仿真,、RTL級(jí)仿真,、綜合后仿真、門級(jí)仿真,、布局布線后仿真……好吧,,反正我是暈了。
先說一下Quartus和Modelsim軟件的仿真形式:
Quartus ii的兩種仿真:1,、功能仿真2,、時(shí)序仿真;
Quartus ii調(diào)用Modelsim的兩種仿真:1,、RTL級(jí)仿真2,、Gate-level仿真。
查閱了各種資料如下:
資料一:
1.當(dāng)用quartus進(jìn)行仿真時(shí),,分為功能仿真(al)和時(shí)序仿真(Timing),。
2.當(dāng)用Modelsim-Altera時(shí),分為功能仿真(RTL),、綜合后仿真(post-synthesis)和布局布線仿真(Gate-level),。其中,功能仿真又稱為前仿真,,布局布線仿真又稱為后仿真,。
注:此處的功能仿真(RTL)與1中的功能仿真(al)是不一樣的,前者是HDL級(jí)仿真,,后者是門級(jí)網(wǎng)表的功能仿真,。
(1)當(dāng)在quartus中調(diào)用Modelsim-Altera進(jìn)行RTL仿真時(shí)(前提是在第三方仿真工具中選擇Modelsim-Altera),,步驟如下:
a) 編寫源文件和測(cè)試文件,;
b) Assignment->setting->simulation->不選中run gate leve simulation.....,選中nativelink->添加測(cè)試文件,填寫文件名,;
c) start analysis&elabration,;
d) Tools->start RTL simulation;
?。?)綜合后仿真一般不做,。
?。?)當(dāng)在quartus中調(diào)用Modelsim-Altera進(jìn)行Gate-level仿真時(shí)(前提是在第三方仿真工具中選擇Modelsim-Altera),步驟如下:
a) 編寫源文件和測(cè)試文件,;
b)Assignment->setting->simulation->選中run gate leve simulation.....,選中nativelink->添加測(cè)試文件,,填寫文件名;
c)全編譯,;
評(píng)價(jià):對(duì)于Assignment->setting->simulation->"run gate leve simulation automatically after comlilation"選不選中根本沒必要說明,,完全可以不用選中,需要在設(shè)置處把測(cè)試文件testbench添加就可以了(不添加的話到時(shí)候quartus調(diào)用出modelsim軟件后需要手動(dòng)添加編譯,,下面補(bǔ)充了),。如果你想RTL級(jí)仿真,那么對(duì)于quartus ii只需要進(jìn)行分析綜合就可以,,然后點(diǎn)擊Tools->Run EDA Simulation tool->Run RTL Simulation即可,,軟件會(huì)自動(dòng)將源文件以及測(cè)試文件在modelsim軟件里編譯,仿真出波形,。如果你想Gate-level級(jí)仿真,,那么對(duì)于quartus ii需要對(duì)工程進(jìn)行全編譯,然后點(diǎn)擊Tools->Run EDA Simulation tool->Run Gate-level Simulation即可,,軟件會(huì)自動(dòng)將網(wǎng)表文件.vo(verilog輸出文件)或.vho(VHDL輸出文件)以及測(cè)試文件在modelsim軟件里編譯,,并將標(biāo)準(zhǔn)延遲文件SDF(.sdo)添加到modelsim里面,仿真出波形,。
補(bǔ)充:順便說一句,,如果沒有在Assignment->setting->simulation把測(cè)試文件testbench設(shè)置好的話,不論是在RTL還是Gate-level級(jí)仿真,,調(diào)用出modelsim后Quartus只把.vo或.vho文件送到modelsim里編譯了,,然后都需要手動(dòng)把testbench編譯進(jìn)去的,并且將在Run Gate-level Simulation仿真的時(shí)候,,.sdo文件也需要手動(dòng)添加,,相對(duì)來說比較麻煩。
資料二:
Modelsim-Altera仿真一般分為功能仿真,,前仿真(綜合后仿真)與后仿真(時(shí)序仿真或布局布線后仿真),。
根據(jù)設(shè)計(jì)需要,編寫完代碼(Verilog hdl,Vhdl,system Verilog )后,,首先進(jìn)行功能仿真,,驗(yàn)證所寫代碼是否能完成設(shè)計(jì)功能;前仿真又稱為綜合后仿真,,即在QuartusII完成綜合后,,驗(yàn)證設(shè)計(jì)的功能;后仿真又稱為時(shí)序仿真或布局布線后仿真,是加入延時(shí)后的仿真,。對(duì)于編譯時(shí)間較短的小規(guī)模設(shè)計(jì),一般只進(jìn)行功能仿真與后仿真,。
資料三:
modelsim是專門進(jìn)行仿真的軟件,,可以分別進(jìn)行前仿真和后仿真。前仿真也稱為功能仿真,,主旨在于驗(yàn)證電路的功能是否符合設(shè)計(jì)要求,,其特點(diǎn)是不考慮電路門延遲與線延遲,主要是驗(yàn)證電路與理想情況是否一致,??删C合FPGA代碼是用RTL級(jí)代碼語言描述的,其輸入為RTL級(jí)代碼與testbench,。后仿真也稱為時(shí)序仿真或者布局布線后仿真,,是指電路已經(jīng)映射到特定的工藝環(huán)境以后,綜合考慮電路的路徑延遲與門延遲的影響,,驗(yàn)證電路能否在一定時(shí)序條件下滿足設(shè)計(jì)構(gòu)想的過程,,是否存在時(shí)序違規(guī)。其輸入文件為從布局布線結(jié)果抽象出來的門級(jí)網(wǎng)表,、testbench和擴(kuò)展為sdo或sdf的標(biāo)準(zhǔn)時(shí)延文件,。sdo、sdf的標(biāo)準(zhǔn)時(shí)延文件不僅包含門延遲,,還包括實(shí)際布線延遲,,能較好地反映芯片的實(shí)際工作情況。一般來說后仿真是必選的,,檢查設(shè)計(jì)時(shí)序與實(shí)際的FPGA運(yùn)行情況是否一致,,確保設(shè)計(jì)的可靠性和穩(wěn)定性。
資料四:
前仿真和后仿真的區(qū)別:前仿真就是指綜合前的仿真,,也就是行為級(jí)的仿真,,如你在Modelsim直接寫代碼的仿真。后仿真指的是綜合后的仿真,,也就是功能仿真,。比如你在Modelsim中用VHDL寫了個(gè)計(jì)數(shù)器,行為級(jí)得仿真通過了,,你把它加到quartus中或者其他的綜合工具進(jìn)行綜合,,綜合完后生成功能網(wǎng)表,它把行為語言變成寄存器傳送級(jí)語言,,這時(shí)候你把它加到Modelsim中仿真叫后仿真,,后仿真成功后,你還要在quartus中進(jìn)行映射,布局布線,,完后進(jìn)行時(shí)序分析,,生成時(shí)序網(wǎng)表,描述器件里門或者布線的延時(shí),,最后把延時(shí)網(wǎng)表和功能網(wǎng)表一起加到Modelsim中仿真叫門級(jí)仿真,。
門級(jí)仿真和時(shí)序仿真的區(qū)別:門級(jí)仿真是quartus生成的網(wǎng)表文件.vo。門級(jí)則不考慮互聯(lián)延遲,,二只考慮了器件的延遲,。時(shí)序仿真是選擇具體器件并布局布線后進(jìn)行的包含定時(shí)關(guān)系的仿真,主要驗(yàn)證是否滿足時(shí)間約束關(guān)系,、延時(shí),、最大工作頻率和消耗的資源等。時(shí)序仿真是需添加時(shí)延文件.sdo,。
資料五:
從廣義上講,,仿真驗(yàn)證包括功能與時(shí)序仿真和電路驗(yàn)證。仿真是指使用設(shè)計(jì)軟件包對(duì)已實(shí)現(xiàn)的設(shè)計(jì)進(jìn)行完整測(cè)試,,模擬實(shí)際物理環(huán)境下的工作情況,。從仿真的層次上劃分,主要分為:
前仿真,,也稱為功能仿真或行為級(jí)仿真,。是指僅對(duì)邏輯功能進(jìn)行測(cè)試模擬,以了解其實(shí)現(xiàn)的功能是否滿足原設(shè)計(jì)的要求,,仿真過程沒有加入時(shí)序信息,,不涉及具體器件的硬件特性,如延時(shí)特性,;
后仿真,,也稱為布局布線后仿真或時(shí)序仿真。是指提取有關(guān)的器件延遲,、連線延時(shí)等時(shí)序參數(shù),,并在此基礎(chǔ)上進(jìn)行的仿真,它是非常接近真實(shí)器件運(yùn)行情況的仿真,。 不同的工具和廠商還有一些其他的仿真過程,,但大致屬于這兩類。
針對(duì)FPGA設(shè)計(jì)的流程,,有3個(gè)階段可以進(jìn)行仿真:
第一階段是寄存器傳輸級(jí)(RTL)仿真,,此級(jí)仿真是對(duì)設(shè)計(jì)的語法和基本功能進(jìn)行驗(yàn)證 (不含時(shí)序信息);
第二階段是針對(duì)特定的FPGA廠家技術(shù)的仿真,,此級(jí)仿真是在綜合后,、實(shí)現(xiàn)前而進(jìn)行的功能級(jí)仿真,功能級(jí)仿真一般驗(yàn)證綜合后是否可以得到設(shè)計(jì)者所需要的正確功能;
第三階段是門級(jí)仿真,,此級(jí)仿真是針對(duì)實(shí)現(xiàn)后的門級(jí)時(shí)序進(jìn)行仿真,,門級(jí)仿真體現(xiàn)了由于布局布線而產(chǎn)生的實(shí)際延時(shí)。
資料六:
前仿: 針對(duì)RTL代碼的功能和性能仿真和驗(yàn)證,。
后仿: 1. pre-layout,,這種是綜合后仿真,主要是仿綜合后的邏輯功能是否正確,,綜合時(shí)序約束是不是都正確。
2. post-layout,,這種是布局布線后仿真,,因?yàn)榧尤肓司€延遲信息,所以這一步的仿真和真正芯片的行為最接近,,也是用于仿真芯片時(shí)序約束是否添加正確,,布局布線后是否還滿足時(shí)序。
資料七:
功能仿真對(duì)設(shè)計(jì)輸入的功能進(jìn)行仿真,,考慮的是理想化的情況,,沒有門延遲,沒有布線延遲,。
綜合的過程,,將設(shè)計(jì)輸入編譯成由與、或,、非門,,RAM,觸發(fā)器等基本邏輯單元組成的邏輯連接,,即網(wǎng)表(Netlist),,并輸出edf、edn等標(biāo)準(zhǔn)格式的網(wǎng)表文件,。綜合后仿真把綜合生成的標(biāo)準(zhǔn)延時(shí)文件反標(biāo)注到綜合仿真模型中去,,可估計(jì)門延時(shí)對(duì)電路帶來的影響。
實(shí)現(xiàn)與布線,,根據(jù)所選芯片的型號(hào),,將綜合輸出的邏輯網(wǎng)表適配到具體的FPGA/CPLD上。實(shí)現(xiàn)過程中最主要的過程是布局布線(Place and Route):布局將邏輯單元合理地適配到FPGA內(nèi)部的固有硬件結(jié)構(gòu)上,;布線則根據(jù)布局的拓?fù)浣Y(jié)構(gòu),,利用FPGA內(nèi)部的各種連線資源,合理正確地連接各個(gè)元件,。時(shí)序仿真將布局布線的延時(shí)信息反標(biāo)注到設(shè)計(jì)網(wǎng)表中進(jìn)行仿真,。此時(shí)的仿真延時(shí)文件信息最全,包含門延時(shí)和布線延時(shí),所以布線后仿真最準(zhǔn)確,,能較好地反映芯片的實(shí)際工作情況,。
以下是個(gè)人拙見:從以上分析,我們可以給文章剛開是提到的那九中仿真名詞中的一些畫等號(hào)了:
前仿真=功能仿真=行為級(jí)仿真=RTL級(jí)仿真
而后仿真又可以分為兩步,,第一步是布線前 仿真,,也就是綜合后仿真其目的主要是驗(yàn)證邏輯功能是否正確,綜合時(shí)序是不是正確,;第二步是布線后 仿真,,也就是后仿真=時(shí)序仿真=布局布線后仿真=門級(jí)仿真,這一級(jí)的仿真最接近于芯片,,里面加入了線延遲,,可見資料七的解釋。