腳本式模擬
㈠ 求高人寫一個NS2的AODV模擬TCL腳本。。
在終端輸入命令:
cd ns-allinone-2.xx/ns-2.xx/indep-utils/cmu-scen-gen/cmu-scen-gen/setdest 回車
輸入命令 ./setdest -v 1-n 50 -p 0 -M 2 -t 20 -x 800 -y 800 > scen-50-800-800 回車
產生50個節點,最大移動速度2米模擬時間 20s 場景大小 800x800
再在終端輸入:cd ..
回到上一級菜單,輸入命令
ns cbrgen.tcl -type cbr -nn 50 -seed 1 -mc 30 -rate 4 >cbr-50-10-4 ,回車
產生最大鏈接數為30的每秒4個包的cbr流
㈡ 求高手詳解下面一段NS模擬腳本代碼
NS是一種針對網路技術的源代碼公開的、免費的軟體模擬平台,研究人員使用它可以很容易的進行網路技術的開發,而且發展到今天,它所包含的模塊已經非常豐富,幾乎涉及到了網路技術的所有方面。所以,NS成了目前學術界廣泛使用的一種網路模擬軟體。在每年國內外發表的有關網路技術的學術論文中,利用NS給出模擬結果的文章最多,通過這種方法得出的研究結果也是被學術界所普遍認可的,此外,NS也可作為一種輔助教學的工具,已被廣泛應用在了網路技術的教學方面。因此,目前在學術界和教育界,有大量的人正在使用或試圖使用NS。
然而,對初學者來說,NS是非常難於掌握的,一般人從學習NS到上手至少需要半年多時間。原因是多方面的:一方面,NS內容龐雜,隨軟體所提供的手冊更新不夠快,初學者閱讀起來非常困難;另一方面,使用NS還要掌握其它很多必備的相關知識以及相關工具,這會使初學者感到無從入手;有的使用者可能還不了解網路模擬的過程或是對NS軟體的機制缺乏理解,這也影響了對NS的掌握。另外,不論在國外還是國內,還沒有一本書能集中回答和解決這些問題,這也是NS難於被掌握的一個重要原因。
1、NS2簡介
NS2(Network Simulator, version 2)是一種面向對象的網路模擬器,本質上是一個離散事件模擬器。由UC Berkeley開發而成。它本身有一個虛擬時鍾,所有的模擬都由離散事件驅動的。目前NS2可以用於模擬各種不同的IP網,已經實現的一些模擬有:網路傳輸協議,比如TCP和UDP;業務源流量產生器,比如FTP, Telnet, Web CBR和VBR;路由隊列管理機制,比如Droptail , RED和CBQ;路由演算法,比如Dijkstra等。NS2也為進行區域網的模擬而實現了多播以及一些MAC 子層協議。
NS2使用C++和Otcl作為開發語言。NS可以說是Otcl的腳本解釋器,它包含模擬事件調度器、網路組件對象庫以及網路構建模型庫等。事件調度器計算模擬時間,並且激活事件隊列中的當前事件,執行一些相關的事件,網路組件通過傳遞分組來相互通信,但這並不耗費模擬時間。所有需要花費模擬時間來處理分組的網路組件都必須要使用事件調度器。它先為這個分組發出一個事件,然後等待這個事件被調度回來之後,才能做下一步的處理工作。事件調度器的另一個用處就是計時。NS是用Otcl和C++編寫的。由於效率的原因,NS將數據通道和控制通道的實現相分離。為了減少分組和事件的處理時間,事件調度器和數據通道上的基本網路組件對象都使用C++寫出並編譯的,這些對象通過映射對Otcl解釋器可見。
當模擬完成以後,NS將會產生一個或多個基於文本的跟蹤文件。只要在Tcl腳本中加入一些簡單的語句,這些文件中就會包含詳細的跟蹤信息。這些數據可以用於下一步的分析處理,也可以使用NAM將整個模擬過程展示出來。
2、使用NS進行網路模擬的方法和一般過程。
進行網路模擬前,首先分析模擬涉及哪個層次,NS模擬分兩個層次:一個是基於OTcl編程的層次。利用NS已有的網路元素實現模擬,無需修改NS本身,只需編寫OTcl腳本。另一個是基於C++和OTcl編程的層次。如果NS中沒有所需的網路元素,則需要對NS進行擴展,添加所需網路元素,即添加新的C++和OTcl類,編寫新的OTcl腳本。
假設用戶已經完成了對NS的擴展,或者NS所包含的構件已經滿足了要求,那麼進行一次模擬的步驟大致如下:
(1)開始編寫OTcl腳本。首先配置模擬網路拓撲結構,此時可以確定鏈路的基本特性,如延遲、帶寬和丟失策略等。
(2)建立協議代理,包括端設備的協議綁定和通信業務量模型的建立。
(3)配置業務量模型的參數,從而確定網路上的業務量分布。
(4)設置Trace對象。NS通過Trace文件來保存整個模擬過程。模擬完後,用戶可以對Trace文件進行分析研究。
(5)編寫其他的輔助過程,設定模擬結束時間,至此OTcl腳本編寫完成。
(6)用NS解釋執行剛才編寫的OTcl腳本。
(7)對Trace文件進行分析,得出有用的數據。
(8)調整配置拓撲結構和業務量模型,重新進行上述模擬過程。
NS2採用兩級體系結構,為了提高代碼的執行效率,NS2 將數據操作與控制部分的實現相分離,事件調度器和大部分基本的網路組件對象後台使用C++實現和編譯,稱為編譯層,主要功能是實現對數據包的處理;NS2的前端是一個OTcl 解釋器,稱為解釋層,主要功能是對模擬環境的配置、建立。從用戶角度看,NS2 是一個具有模擬事件驅動、網路構件對象庫和網路配置模塊庫的OTcl腳本解釋器。NS2中編譯類對象通過OTcl連接建立了與之對應的解釋類對象,這樣用戶間能夠方便地對C++對象的函數進行修改與配置,充分體現了模擬器的一致性和靈活性。
3、NS2的功能模塊
NS2模擬器封裝了許多功能模塊,最基本的是節點、鏈路、代理、數據包格式等等,下面分別來介紹一下各個模塊。
(1)事件調度器:目前NS2提供了四種具有不同數據結構的調度器,分別是鏈表、堆、日歷表和實時調度器。
(2)節點(node):是由TclObject對象組成的復合組件,在NS2中可以表示端節點和路由器。
(3)鏈路(link):由多個組件復合而成,用來連接網路節點。所有的鏈路都是以隊列的形式來管理分組的到達、離開和丟棄。
(4)代理(agent):負責網路層分組的產生和接收,也可以用在各個層次的協議實現中。每個agent連接到一個網路節點上,由該節點給它分配一個埠號。
(5)包(packet):由頭部和數據兩部分組成。一般情況下,packet只有頭部、沒有數據部分。
4、NS2的軟體構成
NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一個開放腳本語言,用來對NS2進行編程;Tk是Tcl的圖形界面開發工具,可幫助用戶在圖形環境下開發圖形界面;OTcl是基於Tcl/Tk的面向對象擴展,有自己的類層次結構;NS2為本軟體包的核心,是面向對象的模擬器,用C++編寫,以OTcl解釋器作為前端;Tclcl則提供NS2和OTcl的介面,使對象和變數出現在兩種語言中。為了直觀的觀察和分析模擬結果,NS2 提供了可選的Xgraphy、可選件Nam。
5、NS現有的模擬元素
從網路拓撲模擬、協議模擬和通信量模擬等方面介紹NS的相應元素:
(1)網路拓撲主要包括節點、鏈路。NS的節點由一系列的分類器(Classifier,如地址分類器等)組成,而鏈路由一系列的連接器(Connector)組成。
(2)在節點上,配置不同的代理可以實現相應的協議或其它模型模擬。如NS的TCP代理,發送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,還提供有UDP代理及接收代理Null(負責通信量接收)、Loss Monitor(通信量接收並維護一些接收數據的統計)。
(3)網路的路由配置通過對節點附加路由協議而實現。NS中有三種單播路由策略:靜態、會話、動態。
(4)在鏈路上,可以配置帶寬、時延和丟棄模型。NS支持:Drop-tail(FIFO)隊列、RED緩沖管、CBO(包括優先權和Round-robin 調度)。各種公平隊列包括:FQ,SFQ,DRR等。
(5)通信量模擬方面,NS提供了許多通信應用,如FTP,它產生較大的峰值數據傳輸;Telnet則根據相應文件隨機選取傳輸數據的大小。此外,NS提供了四種類型的通信量產生器:EXPOO,根據指數分布(On/Off)產生通信量,在On階段分組以固定速率發送,Off階段不發送分組,On/Off的分布符合指數分布,分組尺寸固定;POO,根據Pareto分布(On/Off)產生通信量,它能用來產生長范圍相關的急劇通信量;CBR,以確定的速率產生通信量,分組尺寸固定,可在分組間隔之間產生隨機抖動;Traffic Trace,根據追蹤文件產生通信量。
㈢ 如何使用bat文件和do文件生成不依賴路徑的modelsim模擬
一.DO文件的簡介和工作方式
DO文件是一次執行多條命令的腳本。這個腳本可以像帶有相關參數的一系列ModelSim命令一樣簡單,或者是帶有變數,執行條件等等的Tcl程序。可在GUI里或系統命令提示符後執行Do文件。
由於TCL腳本語言內容很多,本人是剛學不久,菜鳥一個。但是針對我們這門課程的話,有些基本常用的語法還是值得提一下的,方便大家一起學習交流,如果以下內容有什麼寫錯了,希望大家提出並批評,互相進步。
首先,我們如何建立DO文件呢?
方法挺多,一種是可以打開Modelsim,執行File/New/Source/Do命令,進入Do文件編輯方式,在編輯窗口輸入模擬批處理文件的代碼,以.do為擴展名保存文件。當然也可以在windows系統中新建一個記事本,在「另存為」的時候寫上.do的後綴名,也是一種方法。 調用方式是在Modelsim的Transcript窗口中使用指令:do filename.do,完成對設計的自動化模擬。
下面簡單講講模擬的步驟。首先我們要對一個設計進行模擬呢,我們一般需要進行以下幾個步驟:
①創建一個工程和工程庫;
②載入設計文件(包括你編寫好的testbench);
③編譯源文件;
④運行模擬,並查看結果;
⑤最後進行工程調試。
而do文件,就是把上述的步驟①---④用tcl腳本語言來編寫出來,讓Modelsim來運行該do文件宏命令,並自動執行模擬的步驟。這種好處也許在小設計中沒怎麼表現,但是如果在一個大的工程中,常常需要對一個設計單元進行反復的調試和模擬,但是模擬時的設置是不變的,這時如果使用了do文件,把模擬中使用到的命令都保存下來了,就可以節省大量的人力,提高了工作效率。
下面將對照一個簡單的例子counter.do,講一下我們常用的一些基本指令。
PS: do文件的注釋是由#開始的,但不可以在代碼行後面添加,只能另起一行。
正確的是:
vlib work
#新建一個work庫
錯誤的是:
vlib work #新建一個work庫
編寫名為counter.do的文件,其內容為下:
vlib work (對應模擬步驟①:新建work庫。該命令的作用是在當前目錄下建立一個work目錄,請注意不要直接在windows中新建一個work的文件夾,因為用操作系統建立的work文件夾並沒有ModelSim SE自動生成的_info文件。)
vmap work work(對應模擬步驟①:該命令的作用是將目前的邏輯工作庫work和實際工作庫work映射對應。也可以直接用指令「vmap work」表示將work庫映射到當前工作目錄下。)
vlog counter.v counter_tb.v (對應模擬步驟②③:編譯counter.v和counter_tb.v文件,默認編譯到work庫下。該命令的作用是編譯這些文件,要注意的是文件可以單獨分開編譯,但是一定要先編譯被調用的文件。假如是VHDL文件,只需要把指令vlog換成vcom即可。)
vsim work.counter_tb -t 1ns (對應模擬步驟④:模擬work庫中名為counter_tb的模塊,最小時間單位為1ns。)
add wave/counter_tb/ * (該命令的作用是將testbench文件camera_tb.v中模塊camera_tb下所有的信號變數加到波形文件中去,注意在「*」前要加空格。這時候你也可以看到wave文件被打開。當然也可以單個信號的添加,例如添加時鍾:add wave clk 等等。)
run 2000 (該命令的作用是運行2000個單位時間的模擬。也可以用run –all命令來一直模擬下去。)
這時候就可以在wave窗口文件中看到你的模擬結果。當然也可以觀察其它窗口的結果,用view *命令顯示 。view *命令可以觀察包括signals、wave、dataflow等窗口文件,也可以分別打開。例如用view signals來觀察信號變數。
以上就是do文件的一些基本TCL腳本語言的使用,寫得比較簡單,但是其實復雜的也就是在添加信號線那裡add wave 有比較多的參數設置而已,主要的指導模擬流程的指令還是這幾條。
編寫好DO文件之後,在Modelsim中,將工作目錄切換到counter.v、counter_tb.v和counter.do三個文件所在目錄下,然後在Transcript窗口中的命令行輸入 do counter.do即可。切換工作目錄的方法如下圖1,點擊Change Directory:
圖1
PS: 如果在模擬的時候要修改.do文件,需要現在modelsim里運行quit -sim,退出模擬,然後修改.do文件,再保存,然後再重新執行do filename.do指令即可。
小技巧Tips:
為了區分模擬波形窗口中的各種信號線,需要信號波形作設置,如不同信號線的顏色、顯示基數、顯示方式等要有區別,這時就需要在模擬波形窗口單獨對每一個信號線手動進行設置,這對於不斷修改源代碼然後再不斷地進行模擬來說,非常麻煩。
這里,我說一下有個簡單的自動生成這類個性化設置DO文件的方法。首先,我們需要先進行一次模擬,在波形窗口的時候先手動對需要的信號線進行一定的設置,如下圖2所示:
圖2
然後,點擊wave窗口左上角的save圖標,會出現一個保存DO文件的窗口,如圖3所示:
圖3
它的路徑Pathname表示Modelsim自動在當前的默認目錄下新建了一個wave.do的DO文件,我們可以自己修改保存的路徑和DO文件名。
接下來我們來看一下上面保存的wave.do文件,打開如下圖4所示:
圖4
由wave.do文件中,可以見到我們定義的那些不同顏色、不同顯示方式所用的TCL腳本語言,如add wave -color Yellow /freq_meter_tb/i1/freq_data表示讓該freq_data信號顯示黃色…如add wave -noupdate -radix decimal /freq_meter_tb/i1/div_coef 表示讓div_coef信號用十進制decimal來顯示…其他的信息可以對照自己的波形設置一一對應上,其他依次類推。
細心的同學會發現這個DO文件根本不完整,基本都是一些add wave,即是對每個信號的各種設置的TCL代碼而已。不錯,因為它缺少了我們之前所講的模擬步驟①②③④,那麼我們可以利用上面已學過的TCL語言來補完整它。
如在前面加上一下語句,使這個DO文件包括了模擬過程的完整指令,包括新建工作庫、編譯源文件、模擬testbench文件等:
vlib work
vmap work work
vlog freq_meter.v
vlog freq_meter_direct.v
vlog freq_meter_tb.v
新的DO文件如下所示:
圖5
至此,該DO文件才能用來實現較完整的自動化模擬。
二.互動式命令
通過在主窗口的命令窗口輸入命令來實現,具有更好的調試和交互功能,提供多種指令,既可以是單步指令,也可以構成批處理文件,用來控制編輯、編譯和模擬流程;
常見互動式命令如下:
1.force-repeat指令
指令格式:force 開始時間 開始電平值,結束電平值 忽略時間(即0電平保持時間) -repeat 周期
force clk 0 0,1 30 -repeat 100 表示強制clk從0時間單元開始,起始電平為0,結束電平為1,0電平保持時間為30個默認時間單元,周期為100個默認時間單元,占空比為70%。
指令功能:每隔一段的周期重復一定的force命令,用來產生時鍾信號,也可用來產生周期的輸入信號,如01010101,00110011等。
2.force指令
指令格式:force item_name value time,value time;item_name為埠信號或內部信號,支持通配符號,但只能匹配一個;value不能默認,time,可選項,支持時間單元;
force din 16#40900000 從當前時刻起給din賦值16進制40900000;
force bus 16#F @100ns 在100ns時刻給bus賦值16進制F;
force clr 1 100 經歷100個默認時間單元延遲後為clr賦值1;
force clr 1,0 100 表示clr賦值1後,經歷100個默認時間單元延遲後為clr賦值為0;
3.run指令
指令格式:run timesteps time_unit,timesteps時間步長,time_unit時間單元,可以是fs、ps、ns、us、ms、sec;
指令功能:運行(模擬)並指定時間及單元;
run 100, 表示運行100個默認時間單元;
run 2500ns, 表示運行2500ns;
run -all, 表示運行全過程;
run -continue, 表示繼續運行
4.force-cancel指令
指令格式:force-cancel period
指令功能:執行period周期時間後取消force命令;
force clk 0 0,1 30 -repeat 60-cancel 1000,表示強制clk從0時間單元開始,直到1000個時間單元結束;
5.view指令
指令格式:view 窗口名
指令功能:打開Modelsim的窗口
view souce,打開源代碼窗口;
view wave,打開波形窗口;
view list,打開列表窗口;
view varibles,打開變數窗口;
view signals,打開信號窗口;
view all,打開所有窗口;
㈣ ADAMS腳本模擬中如何使齒輪副失效 在si上看到有人提問過,但沒有回答
我專門去試了一下,果然是沒有這個命令的。雖然沒有,但是我們可以用另一種方法實現同樣的效果。這個齒輪副首先是建立在旋轉副上的,旋轉副沒有了,齒輪副自然就失效了。所以可以在原來建旋轉副的地方另建兩個旋轉副代替他們。
齒輪副在JOINT_1與JOINT_2間建立,在JOINT_1的位置我還建有JOINT_3,在JOINT_2的位置我還建有JOINT_4.當我想讓齒輪副失效的時候,我就讓JOINT_1和JOINT_2失效。讓JOINT_3和JOINT_4激活,代替JOINT_1和JOINT_2工作。
當然不能忘記在模擬開始到齒輪副失效的這段時間要讓JOINT_3和JOINT_4失效,以免沖突。
㈤ 如何利用腳本進行QuestaSim模擬
陰性,用questa:- a 結尾的差不多都是陰性.比如mamma,banca,casa.所以用questa.例外的有:anagramma,clima,diadema,dogma,dramma,ca,giornalista,monarca,papa,panorama,patriarca,pianeta,poema,prisma,problema,reuma,sistema,schema,tema,teorema.這些都是陽性.所以要用questo.-zione結尾的也是陰性.比如 stazione,direzione陽性,用questo.-o 結尾的差不多都是陽性.比如cavallo,uomo,banco例外:mano,eco,radio.這些是陰性.
㈥ Ubuntu11.10+NS2.35 打算模擬一個腳本,可是不能用gawk進行數據分析
ns的gawk功能是自帶的,不用下載吧,你這個可能是awk文件有程序錯誤,你把awk文件改改看看,或者從網上找下匹配的tcl和awk文件試試
㈦ adams與matlab聯合模擬時,adams里的模擬腳本怎樣才能有效
關鍵是數據的通用性,matlab的數據文件有txt,dat,mat,xls,等等多種,adams也要保存這幾種數據文件格式,就能讓matlab打開讀入。兩種軟體的程序各自應用,互不幹擾,只要數據通用就行。
㈧ 如何寫verilog ies模擬腳本
要把測試程序寫在源程序中吧,我在CADENCE中使用verilog時就是這樣的,不知道是軟體問題還是語言問題,因為有的軟體不用的. 在MaxplusII中輸入信號可以手動設置的,測試程序不可以的話手動好了.
㈨ 如何使用Tcl腳本自動模擬Modelsim
你在run -all之前任意一行寫上onbreak resume就可以在遇到breakpoint(比如$stop)後pause時繼續執行下面的命令
詳細說明可以看Reference Manual中的onbreak命令
㈩ 怎樣執行ns2網路模擬基本流程的模擬腳本代碼
首先編輯好代碼,然後再NS2中利用CD命令進入到該腳本所在的位置,然後輸入ns 腳本名