Synthesis of multiple process digital systems
John W. Hagerman · 1995
Design automation for application-specific digital systems continues to move up the levels of abstraction. The current state-of-the-art is behavioral synthesis. A system described as multiple processes can be implemented by applying behavioral to obtain one finite state machine processor for each process. This does not address control parallelism, since behavioral considers parallelism only within each process. This, system behavior must be appropriately partitioned into processes before behavioral is applied. A partitioning is considered to be appropriate if subsequent design is able to meet performance goals and cost constraints. A system may also need to be partitioned into modules for packaging purposes. In this work we address design automation for this concurrent system synthesis task of finding an appropriate partitioning of system behavior into processes and modules. We propose a source-to-source transformation approach to system synthesis. Our tools take a Verilog system description as input, derive a dependence graph, transform the graph to obtain an appropriate partitioning of behavior into processes and modules, and generate a new behavioral Verilog description as output. We define two process transformations: one which splits processes to increase concurrency (and thus performance), and one which merges processes to decrease concurrency (and thus cost). By requiring the description writer to use a simple annotation method to identify signals involved in process synchronization, the tools are able to convert between static dependencies within processes and dynamic dependencies among processes to maintain behavior invariance in the split and merge transformations. To make the source-to-source approach most useful, our tools do not change those parts of the description that are not affected by the transformations. We have applied our tools to four designs to show that system can reach ranges of performance that are larger by a factor of three and ranges of cost that are larger by almost a factor of four than the ranges reachable by behavioral synthesis. We also show that our partitioning heuristic produces desirable splits, and that our performance model predicts splitting effects within 10%.