Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
kazoo
Commits
49d61433
Commit
49d61433
authored
Nov 29, 2021
by
Maxime Perrotin
Browse files
Improve templates for simulation
parent
d6f6a381
Changes
4
Hide whitespace changes
Inline
Side-by-side
templates/concurrency_view/simulation-adb/block.tmplt
View file @
49d61433
...
...
@@ -135,7 +135,7 @@ package body @_CAPITALIZE:Name_@_Events is
(Kind => Output_Event_PRESENT);
Limit_Reached : Boolean;
begin
-- Put_Line ("Exhausing interface @_CAPITALIZE:List_Of_ASync_RIs_@");
-- Put_Line ("Exhaus
t
ing interface @_CAPITALIZE:List_Of_ASync_RIs_@");
-- Create an event to store as an edge of the state graph
Event.Output_Event.Source := asn1Scc@_CAPITALIZE:Name_@;
Event.Output_Event.Dest := asn1Scc@_CAPITALIZE:Async_RIs_Parent_@;
...
...
templates/concurrency_view/simulation-adb/node.tmplt
View file @
49d61433
...
...
@@ -24,7 +24,7 @@ package body Simulator_Interface is
(
Kind
=>
System_Startup_PRESENT
,
System_Startup
=>
(
null
record
));
begin
Text_IO
.
Put_Line
(
"Simulat
ion
startup"
);
Text_IO
.
Put_Line
(
"
[-]
Simulat
or_Interface
startup"
);
Full_State
:=
Full_State_Init
;
...
...
@@ -55,7 +55,7 @@ package body Simulator_Interface is
Start_Time : constant Time := Clock;
begin
if not Init then
Put_Line ("
Error
: you must call Startup function first");
Put_Line ("
[X] ERROR
: you must call Startup function first");
return;
end if;
...
...
@@ -69,18 +69,18 @@ package body Simulator_Interface is
end loop;
if ES.Properties.Length > 0 then
Put_Line ("Generating MSC");
Put_Line ("
[-]
Generating MSC");
ES.Generate_MSC;
end if;
Put_Line ("Called" & ES.Count'
Img
&
" interfaces"
);
Put_Line
(
"Visited"
&
ES
.
Grafset
.
Length
'Img & " states");
Put_Line ("Execution time:" & Duration'
Image
(
Clock
-
Start_Time
)
&
"s."
);
Put_Line ("
[-]
Called" & ES.Count'
Img
&
" interfaces"
);
Put_Line
(
"
[-]
Visited"
&
ES
.
Grafset
.
Length
'Img & " states");
Put_Line ("
[-]
Execution time:" & Duration'
Image
(
Clock
-
Start_Time
)
&
"s."
);
end
Run_Exhaustive_Simulation
;
procedure
Process_Event
(
Event
:
asn1SccObservable_Event
)
is
begin
Put
(
"
***
Process_Event : "
);
Put
(
"
[-]
Process_Event : "
);
Print_Event
(
Event
);
User_State
:=
Application_State
(
Full_state
);
case
Event
.
Kind
is
...
...
@@ -168,7 +168,7 @@ package body Simulator_Interface is
--
for
(
3
):
loop
--
Make
sure
all
message
queues
are
drained
@@
INLINE
(
exit
when
Stop_Condition
or
\(
Simulator
.
Events
.
Length
=
0
and
)(
and
)(\);\
n
)@@
@@
INLINE
(
exit
when
Stop_Condition
or
\(
Simulator
.
Events
.
Length
=
0
and
)(
and
)(\);\
n
)@@
@@
TABLE
@@
@@--
Timer
Managers
(
Tick
only
)
and
Passive
functions
have
no
input
queue
.
Queues
are
for
sporadic
.
@@
IF
@@
@
_Block_Languages_
@
/=
GUI
and
@
_Block_Languages_
@
/=
Timer_Manager
and
not
@
_Block_Is_Passive_
@
...
...
@@ -209,21 +209,21 @@ package body Simulator_Interface is
--
Clear
the
queue
of
event
in
case
stop
conditions
interrupted
them
Simulator
.
Events
.
Length
:=
0
;
Put_Line
(
"Number of states before Add_To_Graph: "
&
ES
.
Grafset
.
Length
'Img);
Put_Line
(
"
[-]
Number of states before Add_To_Graph: "
&
ES
.
Grafset
.
Length
'Img);
-- for (5):
Unused_Hash := ES.Add_To_Graph (Event, Id, Stop_Condition);
Put_Line ("STATE AT THE END OF CALLBACK: " & State_As_String (Full_State));
Put_Line ("
[-]
STATE AT THE END OF CALLBACK: " & State_As_String (Full_State));
-- Put_Line ("hash: " & Unused_Hash'
Img
&
" In Grafset: "
&
ES
.
Grafset
.
Contains
(
Key
=>
Unused_Hash
)
'Img);
-- Put_Line ("ES Queue Length : " & ES.Queue.Length'
Img
);
Put_Line
(
"Stop Condition = "
&
Stop_Condition
'img);
Put_Line
(
"
[-]
Stop Condition = "
&
Stop_Condition
'img);
-- Put_Line ("ES.Visited.Contains(Hash)? " & ES.Visited.Contains(Unused_Hash)'
Img
);
--
Restore
the
full
state
(
to
get
the
observer
in
original
state
for
the
next
iteration
Full_State
:=
ES
.
Backup_Ctxt
;
--
Put_Line
(
"ES_Callback: "
&
System_State_Pkg
.
Image
(
Simulator
.
State
));
Put_Line
(
"Number of states after Add_To_Graph: "
&
ES
.
Grafset
.
Length
'Img);
--
Put_Line
(
"
[-]
ES_Callback: "
&
System_State_Pkg
.
Image
(
Simulator
.
State
));
Put_Line
(
"
[-]
Number of states after Add_To_Graph: "
&
ES
.
Grafset
.
Length
'Img);
Limit_Reached := ES.Properties.Length >= 10;
end ES_Callback;
...
...
templates/concurrency_view/simulation-ads/node.tmplt
View file @
49d61433
...
...
@@ -22,7 +22,9 @@ package Simulator_Interface is
--
not
visible
here
.
This
is
an
opaque
type
,
but
it
is
tagged
,
--
and
user
provides
function
to
read
/
write
the
application
state
Full_State
:
State_With_Observers
;
User_State
:
aliased
asn1SccSystem_State
;
--
State
without
observers
--
State
without
observers
,
exported
for
python
ctypes
interfacing
User_State
:
aliased
asn1SccSystem_State
with
Export
,
Convention
=>
C
,
Link_Name
=>
"global_state"
;
procedure
Simulation_Startup
;
...
...
templates/concurrency_view/simulation-ads/partition.tmplt
View file @
49d61433
...
...
@@ -16,7 +16,8 @@ package Simulator is
--
Exception
raised
by
Pop_Event
if
the
FIFO
is
empty
Empty_Queue
:
exception
;
--
Event
list
(
call
of
RI
)
Events
:
asn1SccEvents_Ty
:=
asn1SccEvents_Ty_Init
;
--
Event
list
(
call
of
RI
).
Export
it
to
permit
Python
access
with
ctypes
Events
:
asn1SccEvents_Ty
:=
asn1SccEvents_Ty_Init
with
Export
,
Convention
=>
C
,
Link_Name
=>
"global_event_queue"
;
end
Simulator
;
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment