CSP programs can be rewritten into lower-level
#HDLs that use CSP channels, such as Handel-C , from there synthesised to a final hardware implementation. synthesis approach is like conventional compilation in many ways. syntax tree is linearised into a set of instructions. For software, these commands would be sequential instructions, while in this synthesis they make up interacting processes. Each expression is represented by a process that triggers
processes representing its sub-expressions. Where possible, sub-processes are run in parallel, making more efficient use of parallelism available in hardware
By creating multiple instances of modules, more parallelism is made available in SASL
than was available in SAFL. SAFL expects only a single caller to be active in a function at a time, so
that sharing resources does not necessarily limit performance. SASL aims to allow multiple outstanding unction calls, pipelining requests.1 In such a system sharing resources could lead to much resource
contention. Since hardware resources in SASL are duplicated as needed, arbiters are not required to
control access from multiple external call sites, as occurs in SAFL (tail recursive f may receive
calls from internal call sites, but simpler, specialised arbiters can be used in such cases)
synthesised SASL programs schedule operations dynamically, as unbounded loops
require some form of dynamic scheduling. Each basic operation starts when all the data it requires is
available, rather than according to a pre-determined schedule. basic scheduling can be fully dynamic. static scheduling of parts of SASL programs, which is used to reduce overhead of full dynamic scheduling, much like soft scheduling in SAFL.