Ito ang command moka na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
MOKA - Model checker ninuno
SINOPSIS
moka [-VDB] fsm_filename ctl_filename
DESCRIPTION
moka ay isang CTL model checker.
Ginawa upang tumakbo sa mga paglalarawan ng FSM o RTL, moka sumusuporta sa parehong VHDL subset bilang syf o boom
(para sa karagdagang impormasyon tungkol sa subset na ito tingnan SYFNa (1), DagundongNa (1), FSMNa (5), VBE(5) ).
Gayunpaman moka nagpapataw na ang bawat rehistro ng paglalarawan ng pag-uugali ay may pareho
kundisyon ng orasan at walang tristate o multiplexed na mga bus. Sa partikular na VHDL
uri ng MUX_BIT at WOR_BIT ay hindi suportado.
Una moka buuin ang fonction transition ng FSM gamit ang Reduced Ordered Binary
Representasyon ng Decision Diagram.
Pagkatapos ay inilalapat nito ang mga paunang kundisyon upang mahanap ang unang estado (keyword INITIAL at/o
RESET_COND sa CTL(5) format ng file).
Pagkatapos nitong kalkulahin ang isang simbolikong simulation ng FSM upang mahanap ang lahat ng maaabot na estado.
Isinasaalang-alang ng computation na ito ang mga kundisyon ng pagpapalagay (ASSUME keyword sa
CTL(5) format ng file).
moka sa wakas ay bini-verify nang isa-isa ang bawat CTL formula. (tingnan CTL(5) para sa CTL file format
mga detalye).
CTL OPERATOR
Para sa bawat CTL sub-expression moka ibabalik ang hanay ng mga estado na nagbe-verify ng formula.
Halimbawa, ibabalik ng EX(p) ang hanay ng mga maaabot na estado na nagbe-verify ng EX(p).
Mga operator ng CTL:
EX(p): ibinabalik ang lahat ng estado na mayroong halos isang pangunahing kahalili ng estado na iyon
nagpapatunay p.
EU(p,q) : ibinabalik ang lahat ng estado na ugat ng halos isang landas, ganoon p is
totoo hanggang q ay laging totoo.
EG(p) : ibinabalik ang lahat ng estado na ugat ng halos isang landas, ganoon p is
laging totoo.
AX(p) : ibinabalik ang lahat ng estado na mayroong lahat ng kanilang pangunahing kahalili ng estado
nagpapatunay p.
AU(p,q) : ibinabalik ang lahat ng estado na ugat ng mga landas lamang kung saan p ay totoo
hanggang q ay laging totoo.
AG(p) : ibinabalik ang lahat ng mga estado na ugat ng mga landas lamang, ganoon p ay laging
totoo.
Kapaligiran MGA VARIABLE
MBK_WORK_LIB nagbibigay ng landas para sa paglalarawan at ang CTL file. Ang default na halaga ay
ang kasalukuyang direktoryo.
MBK_CATA_LIB nagbibigay ng ilang pantulong na landas para sa mga paglalarawan at CTL file. Ang
ang default na halaga ay ang kasalukuyang direktoryo.
Opsyon
-V Naka-on ang verbose mode. Ang bawat hakbang ng pagsusuri ng modelo ay ipinapakita sa pamantayan
output.
-D Naka-on ang debug mode. Ang bawat hakbang ng pagsusuri ng modelo ay nakadetalye sa karaniwang output.
Sa partikular, ipinapakita ang lahat ng set ng estado para sa bawat sub-expression ng CTL.
-B Ang input file ay isang paglalarawan ng VHDL gamit ang Alliance VHDL subset (tingnan VBE(5) file
na format).
FSM Halimbawa
-- Isang halimbawa ng multi fsm
Ang halimbawa ng ENTITY ay
PORT
(
ck : sa BIT;
data_in : sa BIT;
i-reset: sa BIT;
data_out : out BIT
);
END halimbawa;
ARCHITECTURE FSM NG halimbawa ay
TYPE A_ETAT_TYPE IS (A_E0, A_E1);
SIGNAL A_NS, A_CS : A_ETAT_TYPE;
TYPE B_ETAT_TYPE IS (B_E0, B_E1);
SIGNAL B_NS, B_CS : B_ETAT_TYPE;
--PRAGMA CURRENT_STATE A_CS FSM_A
--PRAGMA NEXT_STATE A_NS FSM_A
--PRAGMA CLOCK ck FSM_A
--PRAGMA FIRST_STATE A_E0 FSM_A
--PRAGMA CURRENT_STATE B_CS FSM_B
--PRAGMA NEXT_STATE B_NS FSM_B
--PRAGMA CLOCK ck FSM_B
--PRAGMA FIRST_STATE B_E0 FSM_B
SIGNAL ACK, REQ, DATA_INT : BIT;
BEGIN
A_1 : PROCESS ( A_CS, ACK )
BEGIN
KUNG ( i-reset = '1' )
TAPOS A_NS <= A_E0;
DATA_OUT <= '0';
REQ <= '0';
ELSE
CASE A_CS ay
WHEN A_E0 =>
KUNG ( ACK ='1') THEN A_NS <= A_E1;
IBA A_NS <= A_E0;
TAPUSIN KUNG;
DATA_OUT <= '0';
REQ <= '1';
WHEN A_E1 =>
KUNG ( ACK ='1') THEN A_NS <= A_E1;
IBA A_NS <= A_E0;
TAPUSIN KUNG;
DATA_OUT <= DATA_INT;
REQ <= '0';
KATAPUSANG KASO;
TAPUSIN KUNG;
WAKAS ANG PROSESO A_1;
A_2 : PROSESO( ck )
BEGIN
KUNG ( ck = '1' AT HINDI ck'STABLE )
TAPOS A_CS <= A_NS;
TAPUSIN KUNG;
WAKAS ANG PROSESO A_2;
-------
B_1 : PROSESO ( B_CS, ACK )
BEGIN
KUNG ( i-reset = '1' )
TAPOS B_NS <= B_E0;
DATA_INT <= '0';
ACK <= '0';
ELSE
CASE B_CS ay
WHEN B_E0 =>
KUNG ( REQ ='1') THEN B_NS <= B_E1;
IBA B_NS <= B_E0;
TAPUSIN KUNG;
DATA_INT <= '0';
ACK <= '0';
WHEN B_E1 =>
KUNG ( REQ ='1') THEN B_NS <= B_E1;
IBA B_NS <= B_E0;
TAPUSIN KUNG;
DATA_INT <= DATA_IN;
ACK <= '1';
KATAPUSANG KASO;
TAPUSIN KUNG;
WAKAS ANG PROSESO B_1;
B_2 : PROSESO( ck )
BEGIN
KUNG ( ck = '1' AT HINDI ck'STABLE )
TAPOS B_CS <= B_NS;
TAPUSIN KUNG;
WAKAS ANG PROSESO B_2;
WAKAS FSM;
CTL Halimbawa
-- Isang halimbawa ng CTL file
TYPE A_ETAT_TYPE IS (A_E0, A_E1);
TYPE B_ETAT_TYPE IS (B_E0, B_E1);
VARIABLE A_NS, A_CS : A_ETAT_TYPE;
VARIABLE B_NS, B_CS : B_ETAT_TYPE;
VARIABLE ck : BIT;
VARIABLE data_in : BIT;
VARIABLE data_out : BIT;
VARIABLE reset : BIT;
VARIABLE ack : BIT;
VARIABLE req : BIT;
RESET_COND init1 := (reset='1');
ASSUME ass1 := (reset='0');
simulan
prop1 : EX( ack='1' );
prop2 : AG( req -> AF( ack ) );
prop4 : AU( req='1', ack='1');
katapusan;
MOCHA Halimbawa
halimbawa ng moka -V
Gumamit ng moka online gamit ang mga serbisyo ng onworks.net