Quartus II+Modelsim各種仿真驗證
CrazyBingo
2012-3-2
參考無雙oo前輩的博文:
http://www.cnblogs.com/oomusou/archive/2009/01/30/modelsim_pre_post_simulate.html
參考book:《Altera FPGA/CPLD設計 初級篇》第二版
一、FPGA的設計驗證流程
圖1:FPGA/CPLD設計完整流程
圖2:FPGA/CPLD設計簡要流程
圖3:Quartus II中編譯步步為營
二、仿真步驟各種概念與步驟
1) 前仿真
前仿真,即功能仿真,用專用放着工具對設計進行功能仿真,驗證電路功能是否符合設計要求。通過功能仿真能即使發現設計中的錯誤,加快設計進度,提高設計的可靠性。
2) 綜合后的仿真
把綜合生成的標准延時反標注到綜合仿真模型去,可估計門延時帶來的影響,但是只能估計門延時,不能估計線延時,仿真結果和部先后的實際情況還有一定的差距,並不十分准確。
由於目前綜合工具比較成熟,一般省去此環節的仿真。而且在Quartus II中,直接進行下一步仿真。
3) 布局布線后的仿真
即時序仿真。布局布線后生成的仿真延時文件最全,不僅包括門延時,還包括布線延時,所以最為准確,能較好的反映芯片的實際工作情況。
一般來說,布局布線必須進行,以此確保設計的可靠性和穩定性,發現時序違規(Timing Violation)。
4) 板級仿真
在有些高速設計的情況下,還需要使用第三方板級驗證工具進行仿真與測試,入MentorTau、Forte Design-Timing Designer、Mentor Hyperlynx、Mentor ICX、Cadence SPECCTRAQuest、Synopsys HSPICE。這些工具通過設計的IBIS和HSPICE等模型的仿真,能較好的分析高速設計信號的完整性、電磁干擾(EMI)等電路特性。
5) 在線仿真
在加載配置目標板之后,設計者在必要情況下要進行的一個步驟,就是在線仿真調試,利用Quartus II自帶SignalTap II在線邏輯分析儀進行分析,通過JTAG口,在線、實時讀取FPGA內部信號。
一般在我們的設計中但是在我們小型設計中,時序要求不是很嚴格的情況下,可以省略時序仿真,只進行功能仿真(綜合后的仿真一般只在IC設計中用到,一般軟件能勝任綜合工作,全程編譯直接綜合→布局布線);大型設計或時序非常嚴謹的情況下,務必進行時序仿真,驗證時序是否違規,進而用timequest進行約束(可以用Quartus II內嵌的靜態時序分析(STA),或者第三方(Synopsys的Fprmality、PrimeTime),也可以用Quartus II內嵌的Chip Editor分析芯片內部的連接於配置情況。)。另外在高速電路設計時,為了保證設計的可靠性,務必在時序仿真之后,還要進行一些板級驗證。
三、Quartus II 進行功能&時序仿真
(一)Quartus II仿真相關
就算不用第三方軟件,Quartus II自個兒也能完成功能仿真和時序仿真,只是波形仿真器不適合龐大的時序,gui做的比較戳罷了。
在Quartus II兩種仿真,軟件分為“function”與“timing”,還有快速時序仿真模型,即功能仿真與時序仿真,可在Device中的Simulator Setting時鍾設置。一般我們直接進行或者軟件默認為Timing時序仿真。
(二)功能仿真
(1)在Setting中設置Simulator為Functional功能仿真
(2)生成功能仿真網標文件
(3)輸入激勵后進行功能仿真,如下圖所示:
(三)時序仿真
(1)在Simulation Setting中選擇Timing時序仿真
(2)Start simulation,如下圖,可以看到時序延時(門級延時與布線延時)
四、Q2+Modelsim進行功能&時序仿真
(一)Modelsim仿真相關
Modelsim是業界最優秀的HDL語言仿真器,但是更專業更牛逼,對於龐大的工程,復雜的時序,如果想Quartus II那樣輸入激勵,坐等蛋碎吧……
相對於Quartus II而言,Modelsim也有功能仿真與時序仿真,只不過功能仿真可以自給自足,而時序仿真需要Quartus II 綜合后的網標文件.vo才能進行。
Altera為了用戶方便,直接發布了altera版的modelsim,當然必須對應版本才能進行自動仿真。
在滿足軟件版本要求的同時,需要在Quartus II Tool→Option中設置第三方軟件路徑,如下所述:
對於小白(我是小白)而言,modelsim可以通過在Quartus II的設置自動運行,進行時序仿真或者功能仿真。不過Altera軟件中稱為RTL級仿真與Gate Level門級仿真,分別對應功能仿真、時序仿真。
(二)功能仿真
(1)在Quartus EDA Tool Setting→Simulate中設置
如下圖,在功能仿真的時候,不用選擇在編譯后進行門級(時序仿真)
(2)設置自動生成功能仿真網標
(3)添加testbench文件
(4)編譯,Run RTL Simulation,即功能仿真
(5)Quartus II+Altera Modelsim會自動完成Modelsim各種各種設置,直到仿真結束,如下:
(三)時序仿真
(1)如在一開始設置中,選中在編譯后自動進行門級仿真(時序仿真),軟件會在編譯后自動進行仿真,知道仿真結束,設置如下圖:
(2)當然,也可以在功能仿真的基礎上,直接Run gate level仿真即時序仿真
(3)Quartus II + Modelsim自動加載,時序仿真結果如下圖所示:
(四)偷懶調試法
在完成功能仿真,或者時序仿真最后一步之后,Modelsim已經出現了仿真結果,此時還可以進行“深度”調試:
(1)run 500ns(你隨意),用以增加仿真時間
(3)修改testbench測試文件,重新編譯testbench文件,繼續進行調試
(4)完了,對於龐大的工程,當然建議在Modelsim中建立工程,獨立運行。預知結果如何,傾聽下回分解!