While our deadlock monitoring approach can apply to any system
level design environment, we focus our effort on the synchronization
dependency and deadlock analysis for simulation in the Metropolis
design environment [3]. Metropolis is a system level design framework
for modern embedded systems. In the modeling language of
Metropolis, Metropolis Meta-Model (MMM), a design is specified
as asynchronous processes with communication specified with media
and with its overall behavior limited by the synchronization constructs:
function-architecture mappings, await statements, interface
function calls, constraints, and schedulers. The function and abstract
architecture of a system are specified separately and correlated
by the synchronization of the functional events with architectural
events (mapping). An await statement can be used to make
a process wait until some conditions hold, establish critical sections
that guarantee mutual exclusion among different processes, and prevent
interface function calls by other processes. To limit the behavior
of processes, designers can put high-level LTL (Linear Temporal
Logic) [14] or LOC (Logic of Constraints) [2] constraints on the system
specification without giving any specific scheduling algorithm,
and leave the implementation to the lower levels of abstraction. Designers
can also write their own schedulers in architecture models
at a high abstraction level, which are called quantity managers in
Metropolis. The high flexibility of the design platform allows designers
to use different modeling constructs freely in a system design.
Without a platform-supported systematic analysis mechanism,
this flexibility can lead to vulnerability to design errors that may
cause deadlocks.