一、準備工作
首先需要EDA綜合工具生成用於功能或時序仿真的網表文件(VHDL爲.vho,Verilog爲.vo),以及使用EDA仿真工具進行時序仿真時所需要的包含時序延時信息的標準延時格式輸出文件(.sdo)。
這裏我們以EDA工具爲ALTERA的Quartus II 9.0爲例,使用Verilog DHL,講解如何使用Quartus II 9.0生成ModelSim 6.2b時序仿真所需的.vo及.sdo文件。這裏我們先使用EDA工具對工程進行綜合,綜合通過後進行如下操作。
1、設置仿真工具的路徑。
設置用戶存放ModelSim的路徑,選擇菜單欄的Tools-->Options,如下圖所示:
在Options窗口下,選擇左欄Category下的General-->EDA Tools Options,則右欄出現相應的仿真工具。我們選擇ModelSim,並設置路徑(該路徑爲用戶存放ModelSim的路徑),完成後單擊OK。如下圖所示:
2、設置生成文件存放的位置。
選擇菜單欄的Assignments-->EDA Tools Settings,如下圖所示:
此時我們進入相應的狀態欄,選擇左欄Category下的EDA Tools Options-->Simulation,在Tool name選擇ModelSim,其他Format for output netlist選擇Verilog,其它使用默認參數。完成後單擊OK。如下如所示:
至此,再次進行綜合,在工程路徑下的simulation/modelsim將生成後仿真(也稱時序仿真)所需的網表文件(.vo)及延時文件(.sdo)。
二、ModelSim進行時序仿真
1、打開ModelSim,修改存放編譯後庫文件的位置。
選擇菜單欄File-->Change Directory,如下圖所示。第一次需要編譯,以後只需要調用該庫文件就行,不需要重新編譯(前提是使用該庫支持,後面將介紹我們編譯的庫支持資源)。
2、建立庫文件。
在Workspace窗口中Library的空白處單擊鼠標的右鍵,選擇New-->Library,如下圖所示:
3、輸入相應的庫文件名字。
在Library Name輸入庫文件的名字,用戶可自由輸入,這裏我們輸入sim,並選擇a new library and a logical mapping to it,單擊OK,如下圖所示:
4、開始編譯EDA工具的資源。
在Workspace選擇用戶之前建立的庫文件(我們選擇sim),並選擇菜單欄的Compile-->Compile,如下圖所示:
5、選擇需編譯資源的目錄。
由於我們使用的是ALTERA的資源,EDA工具爲Quartus。選擇Quartus安裝目錄下的quartus-->eda-->sim_lib。如下圖所示:
6、選擇相應的器件及使用語言。
文件名:我們可以選擇部分需要的器件,也可以選擇全部器件的資源,這裏我們選擇全部器件的資源,日後用戶無論使用什麼器件都只需要調用該文件就行,不需要重新編譯,若用戶使用的器件資源,在本次編譯中沒有編譯,則需重新選擇器件資源進行編譯。
文件類型:選擇用戶編譯的語言,可以使Verilog HDL或者VHDL,同器件資源選擇一樣,日後若是同一種語言,不需要重新編譯庫文件,調用該庫文件就行。這裏我們選擇Verilog Files。
確定文件名跟文件類型後,點擊Compile進行編譯。如下圖所示:
7、建立工程並添加文件。
編譯完成後,建立工程並添加網表(以Verilog爲例.vo)及激勵文件(以Verilog爲例.v),並選擇菜單欄的Simulate-->Start Simulation。這裏我們以倍頻時鐘爲例,如下圖所示:
8、選擇激勵。
在Start Simulation窗口中選擇激勵,準備仿真。在Design-->work目錄下,如下圖所示:
9、添加庫文件。
在Start Simulation窗口中選擇Libraries,單擊Add,添加我們之前編譯的庫文件(我們選擇sim),單擊OK,如下圖所示:
10、添加延時文件。
在Start Simulation窗口中選擇SDF,選擇包含延時信息的文件(.sdo),在Browse選擇路徑,在Apply to Region輸入實例化的名字(.v及.sdo都是由EDA工具生成)。完成後單擊OK進行仿真。如下圖所示:
10、仿真結果。
從wave中可以看到波形圖,仿真結果包含延時信息。