說到vivado的仿真確實是很有意思,不管是ISE還是Quartus都可以自己自動生成測試平台的完整構架,但是vivado不行,所有的測試代碼自己寫!(我反正是查了好久,都沒發現vivado如何自動生成測試平台的完整構架)。
而且vivado與眾不同的地方是,他的測試文件和設計文件的類型是一模一樣的。不像Quartus或者ISE那樣測試文件是單獨的類型。
比如Quartus中測試文件都是以.vt類型的。
這也正是vivado勝人一籌的地方,他的測試文件和設計文件的類型是一模一樣,這意味着vivado將不會區分測試文件和設計文件,設計的一致性得到統一。
不知道讀者發現沒有,設計文件新建完成后,在Design Sources和Simulation Sources中都會出現我們添加的設計文件,所以vivado
的這種設計模式,道出了一個真諦——編寫測試文件(及編寫TestBench),和編寫設計文件別無二致,都是建模!
我們要編寫的測試文件,不過是基於我們的設計文件的最頂層再次建模而已。測試文件的目的就是“給些激勵”、“看些反應”如此而已。
添加仿真文件:
將仿真文件設置為頂層文件:
添加代碼如下:
module sim( ); reg CLK,RSTn; initial begin RSTn = 0; #10; RSTn = 1; CLK = 0; forever #5 CLK = ~CLK; end // 輸出信號 wire lcd_hs; wire lcd_vs; wire [3:0]lcd_red; wire [3:0]lcd_green; wire [3:0]lcd_blue; // 例化vga_demo模塊 vga_demo vga_demo( .CLK(CLK), .RSTn(RSTn), //硬件接口 .lcd_hs(lcd_hs), //lcd horizontal sync .lcd_vs(lcd_vs), //lcd vertical sync //output lcd_blank, //lcd blank(L:blank) .lcd_red(lcd_red), //lcd red data .lcd_green(lcd_green), //lcd green data .lcd_blue(lcd_blue) //lcd blue data ); endmodule
sim作為最頂層的文件,不需要任何輸入或者輸出引腳,應為他的任務只是給激勵,刺激它所仿真的模塊。一般情況真正需要自己寫的代碼其實沒有多少。
文件添加完了就可以開始仿真了:
出現如下畫面:
面板1顯示的是工程的層次結構,當在面板1選擇了一個模塊后,面板2會對應變化,顯示當前模塊的的所以信號,這些信號都可以添加到波形顯示框里觀察。
一開始波形顯示框里,只會顯示你在頂層仿真文件中聲明的信號,如果想觀察其他模塊內部寄存器或者引腳的值,可以通過如下方法:
第一個為復位,仿真會重新開始,一般在添加了新的觀察信號后使用。
第二個是run all 單擊后ISIM會一直仿真知道按下暫停。根據筆者經驗這個按鍵不要輕易按下,
一般電腦承受不起,容易卡住。所以一般會有第三個。
第三個是仿真一段時間,圖中表示一次仿真20000us。相對於run all不容易卡。