Abstract:
The increased complexity of system design brought about by the IP-based design paradigm and the increasingly distributed nature of these systems has lead to the problem of designer productivity gap. The complexity of the system leads to longer design times and thereby longer time to market. Reducing designer productivity gap warrants the use of system level design languages. System level design languages allow the designer to model a system at a higher level of abstraction where the designer describes the behaviour of a system without any implementation details. This formally designed model is amenable to automated compilation, synthesis and formal verification, thereby leading to large overall reduction in the design and implementation times. The system level design approach has been used successfully in design of large control-dominated and data-dominated industrial models. However, there is no current system level design language suitable for modelling large heterogeneous systems, which mix control and data-driven computations, as well as distributed systems. In this thesis we propose a new Globally Asynchronous Locally Synchronous (GALS) system level design language called SystemJ. SystemJ combines the formal GALS Model of Computation (MoC) with the general purpose Java language. SystemJ's MoC provides a hierarchical concurrency model, processes, called clock-domains, are composed to run concurrently and asynchronously at the top-level, where each clock-domain is a composition of one or more threads, called reactions, composed together to run concurrently but in lockstep. Clock-domains use the CSP style message passing mechanism on channels for synchronization and communication, while reactions communicate using a broadcast mechanism on signals. SystemJ also provides language constructs for programming reactive systems. These so called reactive constructs provide an easy way to model control-flow such as communication with the environment. Besides the language, this thesis also introduces the various compilation and execution approaches for SystemJ. The SystemJ intermediate compiler format, called the Asynchronous GRaph Code (AGRC) directly captures the formal semantics of the language and hence, guarantees equivalence between the designed model and its implementation. The three different execution platforms introduced in this thesis for executing SystemJ show increased performance gains with regards to generated memory footprint and execution time.