來源:電子產品世界; html
注:本文由NingHeChuan本人多出整理所得,原文章圖片不清晰,本身整理配圖後從新發表git
安裝好ISE,系統已經自帶了ISim仿真軟件,相比於專業的仿真軟件Modelsim,ISim是免費的,不用編譯庫,小型設計仿真速度較快,對於輕量級的設計應該是徹底足夠的。Modelsim做爲專業的仿真軟件,具有了ISim的全部功能,同時還具有了ISim不具有的功能好比波形顯示,任意添加中間變量到波形圖中,數據導出等。不過可以真正用好ISim,掌握住仿真技巧,你就無敵啦。微信
先來看看ISim的界面吧,跟ISE的界面相似,在界面的上方是菜單欄,和一些功能菜單,界面中間是波形界面,界面的下面是控制檯窗口和一些其餘功能窗口,界面的左側包含了仿真的工程文件(Instances and Processes Name),對應文件的輸入輸出端口(Objects)等,這些窗口都是能夠自由拖動的,能夠將窗口的位置擺放到一個本身習慣的位置,若是沒有這些窗口,能夠點擊菜單欄的View -> Panels 勾選須要顯示的窗口便可。app

技巧一:更改數據顯示格式ide
ISim在仿真時默認是二進制格式,爲了方便顯示,咱們能夠更改其顯示的格式,右鍵單擊須要更改顯示格式的數據上,Radix -> 選擇合適的格式便可(如圖2所示),Binary(二進制),Hexadecimal(十六進制),Unsigned Decimal(無符號十進制數),Signed Decimal(有符號十進制數),Octal(八進制),ASCII(ASCII碼)。若是發現高低位不對,能夠選擇 Reverse bit order(反轉bit順序,即高位和地位對換)。工具

對於1bit數據,有些人不喜歡看一個孤零零的線(相似於圖1中的CLK_62M5),能夠選中這個數據右鍵單擊,選擇New Virtual Bus,而後修更名字爲原來的信號名字,以防忘記。如圖3所示,爲修改後的數據,將CLK_62M5修改爲了New Virtual Bus形式,將datain更改爲了無符號十進制數。post
技巧二:查看中間變量學習
有些時候因爲溝通不到位,致使模塊與模塊之間的鏈接出現問題,則需查看中間變量來肯定問題所在。this
在Instances and Processes Name 窗口中選擇對應的非頂層模塊(中間模塊),會在Objects中出現能夠添加到波形文件的信號名字,選擇須要添加信號,能夠直接拖到波形文件列表中,也能夠右鍵添加至波形文件列表中(如圖4所示),或者按(Ctrl+W)添加對應信號到波形文件中。spa
爲了方便再次仿真,可以看到這些中間變量,而不用手動添加(對更改數據顯示格式也適用),能夠保存波形文件,File -> Save As 輸入你想要的名字便可,關閉ISim時記得保存波形文件。再次仿真時,ISim不會直接調用你保存的波形文件,而是一個defalut.wcfg,此時只需經過File->Open打開你保存的波形文件,而後從新仿真便可。

技巧三:斷點調試
斷點調試是一個十分方便的功能,能夠查看指定位置是否有錯誤,方便debug程序。相對與其餘仿真,FPGA是並行執行,更多的時候是查看波形是否正確,經過波形發現錯誤,進而定位到對應的語句或者狀態,而後斷點查找錯誤。
在Instances and Processes Name窗口中,雙擊對應模塊,則可打開對應的.v文件,而後在須要的地方加入斷點,此時點擊reset(Ctrl+Shift+F5)按鈕,而後點擊run all(F5)運行,便可運行到斷點處。此時能夠點擊單步(step 快捷鍵F11)執行按鈕,查看是否有bug。
技巧四:產看Memory
不少時候咱們須要查看咱們的存儲空間是否正確的存儲了咱們所需的值;有些時候會遇到,明明給了使能,卻沒有數據輸出,或者數據輸出時錯誤的,此時,若可以真實的看一看存儲器的狀態,而後在波形文件中添加入存儲器相關的變量,就頗有可能發現問題了。
點擊Memory窗口,若是沒有發現Memory窗口,能夠點擊菜單欄的View -> Panels 勾選,而後雙擊須要顯示的內存空間,則可打開對應的memory空間。
默認顯示的數值爲二進制,能夠修改數據顯示的格式(二進制、十進制有符號數、十進制無符號數、十六進制、八進制、ASCII碼),同時也能夠修改地址顯示的格式。若是要查找某個地址的值,只需在地址欄中輸入這個值,按回車便可。
技巧五:添加塊
添加塊不是添加模塊,而是添加一個實心方塊或者分組,能夠將不一樣模塊之間的信號,分個開,方便查看。如圖8所示。
這樣添加分割線和分組後看起來就很方便了,一眼就看清楚了信號的做用以及所在模塊的,十分方便。
點擊波形文件的Name 空白處,右鍵 –> New Divider/New Group,便可添加分割和分組,固然也能夠選中須要加入分組的信號,而後右鍵 – > New Group而後修改成相應的名字便可,如圖9所示。

技巧七:測量時間
在有些時候,須要測量兩個信號之間的時間間隔,能夠經過以下方式來實現。
若是隻是簡單的測量兩個邊沿的時間間隔,如圖10所示,可先按着鼠標左鍵選中一個邊沿,而後拖動鼠標到另外一個邊沿,此時在波形的下面將出現時間軸,則可測量兩個上升沿之間的時間。

若是須要測量的時間太多,能夠添加Marker,鼠標左鍵單擊擊到要加入標記的地方,而後點擊標記按鈕,或者右鍵 –> Markers->Add Marker,此時並不能出現時間軸,鼠標單擊Marker線,藍色的線將變成白色,並以此爲時刻0點,此時就能夠看到時間間隔啦,如圖11所示。

技巧八:重仿真
在編寫verilog模塊後,很重要的一部分就是對所編寫的模塊進行仿真。而在仿真過程當中,很重要的一部分就是觀察波形。這裏所談的技巧實際上是對於我我的而言,可能大部分人都已經知道。但仍是記錄下來,算是對我本身的提醒吧。
如今想一想仍是以爲可笑,之前每次打開波形窗口的時候,都是點擊下圖的Simulate Behavioral Model.每次修改了代碼,都是關掉原來的波形窗口,而後再從新點擊打開,麻煩程度不言而喻(好吧,當初由於程序簡單,其實還不以爲很麻煩。)
如今明白了,對於這種狀況,確定是會有簡單的操做的,不然這用戶體驗也太差了。
固然,第一次仿真打開波形窗口時,仍是老方法,點擊上圖的Simulate Behavioral Model。添加內部信號以及修改數值進制後結果以下圖(這裏採用的是一個FIFO讀寫程序,程序不是這裏須要在乎的問題,咱們只關心軟件的操做)。
下面咱們經過修改din[3:0]的初始值來反映這個過程,由上圖可知,din[3:0]的初始值爲6.接下來我把代碼中din[3:0]的初始值改成0後從新觀察波形,那該如何操做呢?千萬不要像我之前那麼傻的關掉現有窗口而後從新仿真打開了。這樣咱們又要從新添加內部信號以及修改數值顯示了。
方便的步驟應該是,首先,將該波形保存,這部很簡單就不貼圖了,保存的其實就是你對該窗口的各類配置,哪怕之後你從新打開軟件,也能夠經過打開以前保存的波形配置來查看仿真波形,而不用從新配置了。
保存後,修改完代碼(這裏我把din[3:0]的初始值改成0,另外,代碼要記得保存,保存後代碼才能生效),而後點擊波形窗口的re-launch(若是以前沒進行保存操做的話,點擊re-launch後軟件也會提示你保存的).就能夠看到仿真波形發生了變化,din[3:0]的初始值由以前的6變成了0.
另外,關於re-launch邊上的那幾個按鈕,也都是頗有用處的,尤爲仿真時間設置的,甚至有的時候還會由於這些設置的問題致使總是不能出現預期結果,這些操做很簡單,就不一一解釋了,你們稍微用用就知道了。
注意:當你每次修改完test_bench文件後,就不用關閉isimulator,從新打開,這樣能夠提升仿真的效率。
技巧九:改變波形顏色
在進行比較大的工程進行仿真時,信號比較多,仿真起來不容易查看波形,因此能夠選中信號右鍵點擊 signal color,能夠把你的信號設置成各類你喜歡的顏色,這樣便提升了仿真的效率!
技巧十:從新打開以前配置好的仿真分組
咱們爲了仿真方便,一次仿真後將仿真所配置的分組和文件保存到指定文件夾,爲了後面再次打開。
以下圖,右鍵點擊Simulate Behavioral Model,選擇Process Properties。
勾選Use Custom Waveform Configuration File這一選項
在下面那一欄添加你剛纔保存的仿真文件路徑,完成後點擊apply。
以下圖,右鍵點擊Simulate Behavioral Model,點擊Run ,這樣你就能夠打開本身原來所配置的仿真分組文件了。
最後
仿真真的是很重要,我學習了一年FPGA才真正算的是仿真能力入了門,若是對於一個工程仿真作的好的話,能夠節省你不少時間的。這是我最近用的vivodo中的Isim作的仿真,算是充分利用了仿真工具,這麼久以來,這多是我作過的最漂亮的仿真了!
轉載請註明出處:NingHeChuan(寧河川)
我的微信訂閱號:NingHeChuan
若是你想及時收到我的撰寫的博文推送,能夠掃描左邊二維碼(或者長按識別二維碼)關注我的微信訂閱號
知乎ID:NingHeChuan
微博ID:NingHeChuan