《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業(yè)界動態(tài) > 讓FPGA初學者頭疼的各種仿真

讓FPGA初學者頭疼的各種仿真

2015-10-15
關鍵詞: FPGA 仿真

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

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,,并不代表本網站贊同其觀點,。轉載的所有的文章、圖片,、音/視頻文件等資料的版權歸版權所有權人所有,。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容,、版權和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經濟損失,。聯系電話:010-82306118;郵箱:aet@chinaaet.com。