Automated Decomposition of Concurrent Programs for Asynchronous Logic Synthesis

Karthi Srinivasan and Rajit Manohar

Decomposition is the process of modifying a high-level description of an asynchronous circuit into an equivalent but more concurrent version with the goal of producing more performant circuits. We introduce a novel, general method for decomposing a system of abstract programs into an equivalent system with higher concurrency. The method uses control and data dependencies in the input program to determine independent portions and extract them into separate sub-processes. We formulate the problem of extracting these sub-processes in terms of finding cuts that satisfy certain constraints in a graph, and propose a heuristic to find these cuts that performs well. The decomposition algorithm can be repeatedly applied in an iterative manner to produce progressively more concurrent systems. The proposed procedure results in higher throughput at the cost of a more expensive circuit in terms of area and power consumption. A software tool that implements the decomposition algorithm is also demonstrated and benchmarked.
 
  
Yale