語言結構
MAST語言可以描述很多種類型的器件,包括模擬器件、數字器件等。MAST語言的結構主要包括兩種方式,一種是Structured方式,另一種是Unstructured方式。Structured 方式就是將程式體分成許多段,即在程式體中包括許多程式段。Unstructured的程式體中的程式沒有分段。
語法規則簡介
一、 MAST語言的分層結構:MAST語言是採用分層結構的。
二、 在MAST語言中,將涉及到檔案命名規則,模板的引用,在程式中的註解,續行符以及實數的表達式。
程式的註解符#,續行符\,實數的表達與一般程式相同,但下列符號表示一個實數
a,f,p,n,u,mkmeg,g,t
三、 MAST語言是用來建立仿真對象的模型,而這種模型又主要是供仿真器使用的,因此在MAST建模語言中的變數與其它語言相比有自己的特點,這些特點反映在該語言的許多方面,在變數類型上它有幾個比較特殊的變數類型,它們是仿真器變數,系統變數,val類型的變數;另外它還有狀態變數,參數和argument變數.
狀態變數與其它程式是相同的,它反映的是一個離散的量,但它可以是一個有單位的量,也可以是一個無單位的量.在其它很多程式中狀態量一般情況下都是數字量,但在MAST語言中狀態量也可能是模擬量.
在MAST語言中所用到的參數或argument變數都是一種數字,它們是數字形式的一種,在MAST中數字的形式將在下面作一個簡單的介紹.
四、仿真器變數(simulator variable)是系統事先定義好了的一組變數,其作用是在模板和仿真器之間傳遞信息,也是程式對仿真器進行控制的一個手段.模板通過讀取這類變數的值來獲知系統的狀態,通過對這類變數賦值來達到控制仿真器的目的,但並不是所有這類變數都能進行賦值操著.這類變數仿真器能識別,因此在使用時事先不需要申明,只需要引用事先定義好的變數名即可.以下是仿真器變數.
與直流分析有關的仿真器變數 與頻域分析有關的仿真器變數 與時域分析有關的仿真器變數 與系統控制有關的仿真器變數
dc_domain freq_domain time_domain time
dc_init freq time_init next_time
dc_start freq_mag tr_start step_size
dc_done freq_phase tr_done statistical
time_step_done
1、與系統直流分析有關的仿真器變數
dc_domain是反映直流仿真時的一個變數,仿真器在作直流分析時將該變數的值賦為1,在其它情況下該變數的值為0.
dc_init、dc_start反映的都是仿真器開始作直流分析時的變數,在開始作直流分析時該變數的值為1,在其它情況下該值為0.但這兩個量也有不同的地方,dc_init是系統在作第一次直流分析時其值為1,而在dc_start是系統在作每一次直流分析時將其值賦為1.
dc_done變數是在直流分析完成時將該變數值賦為1,在其它情況下該值為0.
2、與頻域分析有關的仿真器變數
freq_domain 系統在作頻域分析時將該變數賦值為1,在其它情況下將該值賦為0.
freq 變數描述的是在作頻域仿真時需要計算的仿真頻率,該變數是一個唯讀變數,可以讀取該變數的值來知道系統當前的狀態.在進行直流分析和時域分析時該變數的值為0.
freq_mag、freq_phase這兩個變數與系統的頻域分析有關,通常情況下在作頻域分析時這兩個變數的值為1,即在作頻域分析時既要作幅頻特性,也要作相頻特性.但這兩個變數也可以通過賦值來改變其值.例如,在系統作頻域分析時,將freq_mag變數的值賦為0,則系統在作頻域分析時就只作相頻特性而不作幅頻特性,系統作直流分析和時域分析時該變數的值為0.
3、與時域分析有關的仿真器變數
time_domain 系統在作時域分析時將該變數賦值為1,在其它情況下將該值賦為0.
time_init、tr_start反映的都是仿真器開始作時域分析時的變數,在開始作時域分析時該變數的值為1,在其它情況下該值為0.但這兩個量也有不同的地方,time_init是系統在作第一次直流分析時其值為1,而在tr_start是系統在作每一次直流分析時將其值賦為1.
tr_done變數是在時域分析完成時將該變數值賦為1,在時域分析其它時刻為 0.系統作直流分析、頻域分析時其值也為0.
Time_step_done 在作暫態分析時,每一個仿真步長完成時該變數的值將被賦為1,在其它情況下該變數的值為0.該變數是一個唯讀變數,該變數不能通過程式賦值.
4、與系統控制有關仿真器變數
time 變數是仿真器在作時域分析時的仿真過程中所確定的時間,它是由仿真步長決定的,它只有在作時域分析時有效,在作頻域和直流分析時該值為0.該變數時一個唯讀變數,程式不能對該變數賦值.
next_time 該變數的值決定了仿真器的下一個仿真時間.在通常情況下,在作時域分析時,相對與某時間點而言,仿真器要進行的下一個時間點是由仿真步長決定的,在變步長計算中,系統的仿真步長又是由計算誤差決定的,那是在next_time變數沒有賦值的情況下,如果對next_time變數賦值,則仿真器下一步計算的時間點由仿真器所在的當前時間再加上next_time變數的值.在使用該變數時需要對該變數賦值.
step_size 該變數決定了仿真器的步長,在定步長仿真中該步長作為仿真器仿真的步長,在變步長仿真中,該步長作為仿真開始時的起始步長.
statistical 該變數反映了系統是否在作統計分析,如Monte分析,參數掃描分析等.當系統在作統計分析時,該變數的值為1,系統沒有作統計分析時該變數的值為0。