?
7.2??ModelSim仿真工具簡(jiǎn)介
ModelSim是Model?Technology(Mentor?Graphics的子公司)的DHL硬件描述語(yǔ)言的仿真軟件,該軟件可以用來(lái)實(shí)現(xiàn)對(duì)設(shè)計(jì)的VHDL、Verilog或者是兩種語(yǔ)言混合的程序進(jìn)行仿真,同時(shí)也支持IEEE常見(jiàn)的各種硬件描述語(yǔ)言標(biāo)準(zhǔn)。
無(wú)論從友好的使用界面和調(diào)試環(huán)境來(lái)看,還是從仿真速度和仿真效果來(lái)看,ModelSim都可以算得上是業(yè)界最優(yōu)秀的HDL語(yǔ)言仿真軟件。它是惟一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器,是做FPGA/ASIC設(shè)計(jì)的RTL級(jí)和門(mén)級(jí)電路仿真的首選;它采用直接優(yōu)化的編譯技術(shù),Tcl/Tk技術(shù)和單一內(nèi)核仿真技術(shù),具有仿真速度快,編譯代碼與仿真平臺(tái)無(wú)關(guān),便于IP核保護(hù)和加快程序錯(cuò)誤定位等優(yōu)點(diǎn)。
Modelsim最大的特點(diǎn)是其強(qiáng)大的調(diào)試功能。
·??先進(jìn)的數(shù)據(jù)流窗口,可以迅速追蹤到產(chǎn)生錯(cuò)誤或者不定狀態(tài)的原因。
·??性能分析工具幫助分析性能瓶頸,加速仿真。
·??代碼覆蓋率檢測(cè)確保測(cè)試的完備。
·??多種模式的波形比較功能。
·??先進(jìn)的Signal?Spy功能,可以方便地訪問(wèn)VHDL、Verilog或者兩者混合設(shè)計(jì)中的底層信號(hào)。
·??支持加密IP。
·??可以實(shí)現(xiàn)與MATLAB的Simulink的聯(lián)合仿真。
目前常見(jiàn)的Modelsim分為幾個(gè)不同的版本:ModelSim?SE、ModelSim?PE、ModelSim?LE和ModelSim?OEM。
如圖7.3所示,Modelsim的用戶(hù)界面和一般的Windows窗口相似,由上到下依次為:標(biāo)題欄、菜單欄,工具欄,工作區(qū)和狀態(tài)欄。
圖7.3??Modelsim界面
?
7.2.1??標(biāo)題欄
標(biāo)題欄位于整個(gè)用戶(hù)界面的最上方,標(biāo)題欄的左邊顯示當(dāng)前程序的名稱(chēng),右邊用來(lái)控制用戶(hù)界面的大小,包括最小化、最大化和關(guān)閉3種功能按鈕。
7.2.2??菜單欄
菜單欄里面一共有8個(gè)菜單選項(xiàng),分別是:File(文件)、Edit(編輯)、View(視圖)、Compile(編譯)、Simulate(仿真)、Tools(工具)、Window(窗口)、Help(幫助)。下面分別具體介紹。
1.“File”菜單
文件菜單通常包含了對(duì)工程及文件等的操作。ModelSim的文件菜單包含的命令有:New(新建)、Open(打開(kāi))、Close(關(guān)閉)、Import(導(dǎo)入)、Save(保存)、Delete(刪除)、Change?Directory(更改路徑)、Transcript(對(duì)腳本進(jìn)行管理)、Add?to?Project(為工程添加文件)、Recent?Directories(最近幾次的工作路徑)、Recent?Projects(最近幾次工程)、Quit(退出)。
(1)新建文件命令(File/?New)。
單擊File/?New命令,將會(huì)出現(xiàn)一個(gè)子菜單,共包含4個(gè)選項(xiàng)。
·??單擊“Folder”(新建文件夾)后,會(huì)出現(xiàn)對(duì)話(huà)框,提示輸入新建的文件夾的名字,即可在當(dāng)前目錄下新建一個(gè)文件夾。
·??單擊“Source”(新建源文件)后,會(huì)出現(xiàn)源文件類(lèi)型的選項(xiàng)(VHDL、Verilog、Other),單擊可分別新建對(duì)應(yīng)格式的源文件。
·??單擊“Project”(新建工程)后,會(huì)出現(xiàn)對(duì)話(huà)框,提示在“Project?Name”處輸入新建工程的名稱(chēng),在“Project?Location”處指定新建工程的存放路徑。在“Default?Library?Name”處指明默認(rèn)的設(shè)計(jì)庫(kù)的名稱(chēng),用戶(hù)設(shè)計(jì)的文件將編譯到該庫(kù)中。
·??單擊“Library”(新建一個(gè)庫(kù))后,會(huì)出現(xiàn)對(duì)話(huà)框,提示選擇“Create?a?New?library?and?a?logical?mapping?to?it”(新建一個(gè)庫(kù)并建立一個(gè)邏輯映像)或“A?map?to?an?existing?library”(新建一個(gè)到已存在庫(kù)的映像)。在“Library?name”處輸入新建庫(kù)的名稱(chēng),在“Library?physical?name”處輸入存放庫(kù)的文件名稱(chēng)。?
(2)Open(打開(kāi)文件)。
單擊會(huì)出現(xiàn)子菜單選擇打開(kāi)File(文件)、Project(工程)及Dataset(WLF文件)。?
(3)Close(關(guān)閉)。
單擊會(huì)出現(xiàn)子菜單選擇關(guān)閉Project(工程)或Dataset(仿真數(shù)據(jù)文件)。
(4)Import(導(dǎo)入)。
導(dǎo)入新的庫(kù)。在進(jìn)行某些仿真時(shí)需要的一些仿真庫(kù)可以通過(guò)該方法導(dǎo)入,根據(jù)提示指定仿真庫(kù)的路徑及目標(biāo)庫(kù)路徑,一步一步操作完成。注意ModelSim安裝目錄下的modelsim.ini文件不能為只讀,該文件保存了ModelSim的一些設(shè)置信息
(5)Save(保存)。
保存當(dāng)前仿真數(shù)據(jù)。
(6)Delete(刪除)。
刪除指定的工程,即刪除.mpf文件,.mpf是ModelSim工程的后綴名。
(7)Change?Directory(改變路徑)。
改變當(dāng)前工作路徑,ModelSim使用的是絕對(duì)路徑,而不是相對(duì)路徑。這與ISE不同。在ISE中,用戶(hù)可以將設(shè)計(jì)的整個(gè)目錄復(fù)制到其他任何地方,只要目錄完整,可以直接打開(kāi)工程文件。而在ModelSim中,若將整個(gè)目錄復(fù)制到其他地方,打開(kāi)工程時(shí)其指向仍為原來(lái)工程的地址,可以通過(guò)更改路徑來(lái)設(shè)置新的路徑。
(8)Transcript(腳本)。
單擊會(huì)出現(xiàn)子菜單,可選擇操作Save?Transcript(保存主窗口中腳本)、Save?Transcript?As(把主窗口中腳本另存為一個(gè)新文件)或Clear?Transcript(清除主窗口中的腳本)。
(9)Add?to?Project(添加到工程)。
單擊會(huì)出現(xiàn)子菜單,可選擇操作File(添加文件到當(dāng)前工程)、Simulation?Configuration(添加設(shè)定的仿真配置)或Folder(添加文件夾)。
?
(10)Recent?Directories(最近幾次工作路徑)。
可以從中選取最近幾次的工作路徑。
(11)Recent?Projects(最近幾次工程)。
可以打開(kāi)最近幾次的工程。
(12)Quit(退出)。
退出Modelsim。
2.“Edit”菜單
類(lèi)似于Windows應(yīng)用程序,在編輯菜單中包含了對(duì)文本的一些常用的操作。
(1)Copy(復(fù)制)。
復(fù)制選中的文檔
(2)Paste(粘貼)。
把剪切或復(fù)制的文檔粘貼到當(dāng)前插入點(diǎn)之前。
(3)Select?All(全選)。
選中主窗口中所有的抄本文檔。
(4)Unselect?All(取消全選)。
取消已選文本的選中狀態(tài)。
(5)Find(查找)。
在命令窗口中查找字符或字符串。
3.“View”菜單
類(lèi)似于其他Windows應(yīng)用程序,視圖菜單可以控制在屏幕上顯示哪些窗口。
(1)All?Windows(所有窗口)。
打開(kāi)所有的ModelSim窗口,試一下該命令會(huì)發(fā)現(xiàn)ModelSim打開(kāi)了許多窗口,包括波形窗口、信號(hào)列表窗口、源文件窗口等。
(2)Dataflow(數(shù)據(jù)流)。
打開(kāi)Dataflow窗口,在該窗口中顯示數(shù)據(jù)的流向。
(3)List(列表)。
打開(kāi)列表窗口。
(4)Process(進(jìn)程)。
打開(kāi)過(guò)程窗口,該窗口顯示了設(shè)計(jì)中的進(jìn)程所在的位置。
(5)Signals(信號(hào))。
打開(kāi)信號(hào)窗口。該窗口顯示了設(shè)計(jì)中所有信號(hào)的列表。
(6)Source(源文件)。
打開(kāi)源文件窗口,可以在源文件窗口中顯示設(shè)計(jì)中使用的源文件。
(7)Structure(結(jié)構(gòu))。
打開(kāi)結(jié)構(gòu)窗口,該窗口以列表方式顯示了設(shè)計(jì)中所有到的結(jié)構(gòu),雙擊某一結(jié)構(gòu),可以查找定義該結(jié)構(gòu)的語(yǔ)句。
(8)Variables(變量)。
打開(kāi)變量窗口,該窗口以列表方式顯示了設(shè)計(jì)中定義的所有變量。
(9)Wave(波形)。
打開(kāi)波形窗口,這是我們仿真時(shí)經(jīng)常需要查看的窗口,在其中顯示了輸入和輸出的波形。
(10)Dataset。
打開(kāi)Dataset瀏覽器來(lái)打開(kāi)、關(guān)閉、重命名或激活一個(gè)Dataset。用戶(hù)在使用的時(shí)候會(huì)發(fā)現(xiàn)沒(méi)有什么變化,這時(shí)候可以看看Workspace窗口下是不是多了一個(gè)選項(xiàng)卡。該選項(xiàng)卡顯示的內(nèi)容與Structure窗口顯示的完全相同。
(11)Coverage(覆蓋率)。
查看仿真的代碼覆蓋率。
(12)Active?Processes(活動(dòng)的進(jìn)程)。
當(dāng)前正在執(zhí)行的進(jìn)程。
(13)Workspace(工作區(qū))。
打開(kāi)當(dāng)前的工作區(qū)。
(14)Encoding(編碼)。
以不同的編碼查看。
(15)Properties。
顯示工作區(qū)中選中對(duì)象的屬性。
4.“Compile”菜單
(1)Compile(編譯)。
把HDL源文件編譯到當(dāng)前工程的工作庫(kù)中。
(2)Compile?Options(編譯選項(xiàng))。
設(shè)置VHDL和Verilog編譯選項(xiàng),例如可以選擇編譯時(shí)采用的語(yǔ)法標(biāo)準(zhǔn)等。
(3)Compile?All(全編譯)
編譯當(dāng)前工程中的所有文件。
(4)Compile?Select(編譯選中的文件)
編譯當(dāng)前工程中的選中文件。
(5)Compile?Order(編譯順序)
設(shè)置編譯順序,一般系統(tǒng)會(huì)根據(jù)設(shè)計(jì)對(duì)VHDL自動(dòng)生成編譯順序,但對(duì)于Verilog需要指定編譯順序。
(6)Compile?Report(編譯報(bào)告)
有關(guān)工程中已選文件的編譯報(bào)告。
(7)Compile?Summary(編譯摘要)
有關(guān)工程中所有文件的編譯報(bào)告。
5.“Simulate”菜單
這里的編譯及運(yùn)行命令類(lèi)似于Visual?Ctf等高級(jí)語(yǔ)言的調(diào)試時(shí)候的命令。
(1)Simulate(仿真)。
裝載設(shè)計(jì)單元。
(2)Simulation?Options(仿真選項(xiàng))。
設(shè)置仿真選項(xiàng)。
(3)Run(運(yùn)行)。
·??Run?***ns:在該仿真時(shí)間長(zhǎng)度內(nèi)進(jìn)行仿真。若要改變長(zhǎng)度,可在Simulation?Options中設(shè)置或在工具欄中修改。
·??Run-All(運(yùn)行所有仿真):進(jìn)行仿真,直到用戶(hù)停止它。
·??Continue(繼續(xù)):繼續(xù)仿真。
·??Run-Next(運(yùn)行到下一事件):運(yùn)行到下一個(gè)事件發(fā)生為止。
·??Step(單步):?jiǎn)尾椒抡妗?/p>
·??Step-Over:仿真至子程序結(jié)束。
·??Restart:重新開(kāi)始仿真,重新加載設(shè)計(jì)模塊,并初始化仿真時(shí)間為零。
(4)Break(停止)。
停止當(dāng)前的仿真。
(5)End?Simulation(結(jié)束仿真)。
結(jié)束當(dāng)前仿真。
6.“Tools”菜單
(1)Waveform?Compare(波形比較)。
在子菜單中有具體進(jìn)行波形比較的命令。
(2)Coverage(覆蓋率)。
測(cè)試仿真的代碼覆蓋率,所謂代碼覆蓋率是指仿真運(yùn)行到當(dāng)前已運(yùn)行的代碼占所有代碼的比例,當(dāng)然是越接近100%越好。
(3)Breakpoints(斷點(diǎn)設(shè)置)。
單擊此選項(xiàng)出現(xiàn)斷點(diǎn)設(shè)置對(duì)話(huà)框,設(shè)置斷點(diǎn)。
(4)Execute?Macro(執(zhí)行宏文件)。
所謂的宏文件就是保存后的腳本,腳本保存起來(lái),以后可以利用該命令來(lái)重新執(zhí)行。
(5)Options(選項(xiàng))。
·??Transcript?File:設(shè)置腳本文件的保存。
·??Command?History:命令歷史。
·??Save?File:保存腳本文件。
·??Saved?Lines:限制腳本文件的行數(shù)。
·??Line?Prefix:設(shè)置每一行的初始前綴。
·??Update?Rate:設(shè)置狀態(tài)條的刷新頻率。
·??ModelSim?Prompt:改變ModelSim的命令提示符。
·??VSIM?Prompt:?改變VSIM的命令提示符。
·??Paused?Prompt:?改變Paused的命令提示符。
·??HTML?Viewer:設(shè)置打開(kāi)在線幫助的文件。
(6)Edit?Preferences(編輯參數(shù)選?。?。
設(shè)置編輯參數(shù)。
(7)Save?Preferences(保存參數(shù)選?。?。
設(shè)置保存用的參數(shù)。
?
7.“Window”菜單
(1)Initial?Layout(初始化版面)。
恢復(fù)所有窗口到初始時(shí)的大小和位置。
(2)Cascade(層疊)。
使所有打開(kāi)的窗口層疊。
(3)Tile?Horizontally(水平平鋪)。
水平分隔屏幕,顯示所有打開(kāi)的窗口。
(4)Tile?Vertically(垂直平鋪)。
垂直分隔屏幕,顯示所有打開(kāi)的窗口。
(5)Layout?Style(版面格式)。
·??Default(默認(rèn)格式):與Initial?Layout格式相同。
·??Classic(經(jīng)典格式):采樣低于5.5版本的格式。
·??Cascade:與Cascade格式相同。
·??Horizontally:與Tile?Horizontally格式相同。
·??Vertically:與Tile?Vertically格式相同。
(6)Icon?Children。
除了主窗口之外的其他窗口縮為圖標(biāo)。
(7)Icon?All。
將所有窗口縮為圖標(biāo)。
(8)Deacon?All。
將所有縮為圖標(biāo)的窗口還原。
8.“Help”窗口
(1)About?ModelSim。
顯示ModelSim的版本、版權(quán)等信息。
(2)Release?Notes。
顯示ModelSim的版本發(fā)布信息。
(3)Welcome?Menu。
顯示歡迎畫(huà)面。
(4)PDF?Documentation。
在子菜單中可以選擇ModelSim的PDF文檔。
SE?HTML?Documentation:ModelSim的超文本文檔。
(5)Tcl?Help:Tcl幫助文檔。
Tcl是Tools?Command?Language的縮寫(xiě),它是一種可擴(kuò)充的命令解釋語(yǔ)言,具有與C語(yǔ)言的接口和命令的能力,應(yīng)用非常廣泛,這方面也有專(zhuān)門(mén)的書(shū)籍。
(6)Tcl?Man?Pages:Tcl主頁(yè)面。
(7)Technotes:技術(shù)文檔。
7.2.3??工具欄
ModelSim的工具欄如圖7.4所示。從左到右依次為:打開(kāi)、復(fù)制、粘貼、編譯選定、編譯全部、仿真、停止仿真、重新開(kāi)始仿真、仿真步長(zhǎng)、運(yùn)行一步、繼續(xù)運(yùn)行、運(yùn)行所有、單步執(zhí)行、主程序的單步執(zhí)行。
圖7.4
?
7.2.4??工作區(qū)
由圖7.3可以看到,在用戶(hù)使用界面里面工作區(qū)占有的面積最大,工作區(qū)初始可以分為左右兩部分:左邊是文件或者工程列表,右邊是相應(yīng)的文件的顯示區(qū)。
7.2.5??狀態(tài)欄
ModelSim的狀態(tài)條如圖7.5所示,其中左面為當(dāng)前工程的名稱(chēng),右面為與當(dāng)前仿真相關(guān)的一些系數(shù),如仿真時(shí)間和仿真變量等。
圖7.5??狀態(tài)欄