The operation of the ActionC procedure based
communication channel, in terms of the Action Sys-
tems communication procedure call, is illustrated in
Fig. 5, which returns us to consider the FIFO struc-
ture we used as an action system example in Sect. 2.
Again, action system C lient needs to extract data
from the F i fo using the public procedure Get ex-
ported by F ifo and imported by C lient. In general
the data integrity during a communication call, as re-
quired by the Action Systems model, is ensured in
the ActionC model by seven (7) or eight (8) commu-
nication phases. The number of the phases is deter-
mined by the existence of a return value. In this case
the phases are: (1) The Action system C lient begins
the communication procedure by calling the chan-
nel’s interface method as it would call the imported
procedure in the Action Systems model. Then the
method stores its parameters into the channel’s local
variables before (2) sending an event notification to
the SystemC scheduler, which (3) triggers the process
waitGet. The process waitGet is sensitive to the par-
ticular event. The concept of sensitivity in SystemC
corresponds to the function of the await command in
the Action Systems model. After being invoked (4)
the process waitGet calls the writeX() method pro-
vided by its interface to write the first element of the
queue into the channel’s local variables. After the
writeX() method has returned (5) process waitGet em-
ploys the channel interface method getCompleted(),
which (6) sends an event notification to the SystemC
scheduler. (7) As a result from the notification, the
SystemC scheduler informs process pop of the com-
pletion of the communication procedure, that is, con-
tinues its execution from the point of last suspension.
(8) By calling the interface method readX() process
pop collects the value written to the channel by wait-
Get, thus finalising the communication procedure.
This implementation follows the atomicity con-
cept of the procedure based communication model in
Action Systems. The SystemC scheduler ensures that
the entire procedure call from phase (1) to phase (8)
is a continuous operation that is advanced and com-
pleted without interruptions.
5 CONCLUSIONS
We have taken the initial steps in creating a for-
mal framework for modelling and verifying embed-
ded computer systems with the SystemC environ-
ment. Using the presented ActionC framework de-
signer is able to reliably simulate Action Systems de-
scriptions. At the present phase of development Ac-
tionC still is more of a coding style than a fully im-
plemented class library to be used with SystemC. In
this paper we elaborated the ActionC implementation
of the procedure based communication model used by
the Action Systems formalism. The resulting model is
a transaction level model of a communication method
that uses remote function calls and blocking wait.
REFERENCES
Back, R.-J. (1988). A Calculus of Refinements for Program
Derivations. Acta Informatica, 25:593–624.
Back, R.-J. and Kurki-Suonio, R. (1983). Decentralization
of Process Nets with Centralized Control. In PODC
’83: Proc. of the second annual ACM symposium on
Principles of Distributed Computing, pages 131–142.
ACM.
Back, R.-J. and von Wright, J. (1998). Refinement Calculus:
A Systematic Introduction. Springer-Verlag.
Degerlund, F., Walden, M., and Sere, K. (2007). Implemen-
tation Issues Concerning the Action Systems Formal-
ism. In PDCAT ’07: Proc. of the 8. Int. Conference
on Parallel and Distributed Computing, Applications
and Technologies, pages 471–479. IEEE.
Dijkstra, E. W. (1976). A Discipline of Programming.
Prentice-Hall, Inc.
Habibi, A. and Tahar, S. (2005). Design for Verification of
SystemC Transaction Level Models. In Proceedings
of the conference on Design, Automation and Test in
Europe, pages 560–565. IEEE.
Patel, H., Shukla, S., Mednick, E., and Nikhil, R. (2006). A
Rule-Based Model of Computation for SystemC: Inte-
grating SystemC and Bluespec for Co-Design. In For-
mal Methods and Models for Co-Design, 2006. MEM-
OCODE ’06. Proc. 4. ACM and IEEE International
Conference on, pages 39–48. IEEE.
Sere, K. and Back, R.-J. (1994). From Action Systems to
Modular Systems. In FME’94: Industrial Benefit of
Formal Methods, pages 1–25. Springer-Verlag.
Stroustrup, B. (1997). The C++ Programming Language.
Addison-Wesley, USA, 3. edition.
The OSCI (2002). SystemC Version 2.0 User’s Guide. Up-
date for SystemC 2.0.1.
The OSCI (2005). IEEE Std 1666-2005, SystemC Language
Reference Manual. IEEE.
Vardi, M. Y. (2007). Formal Techniques for SystemC Veri-
fication. In Proceedings of the 44th annual conference
on Design automation, pages 188–192. ACM.
RIGOROUS COMMUNICATION MODELLING AT TRANSACTION LEVEL WITH SYSTEMC
251