ABSTRACT

This chapter explores a powerful synchronous dataflow (SDF) compiler framework that improves upon previous efforts demonstrably. It discusses many of the techniques that could be used in a synthesis system. Given the plethora of techniques that are possible for synthesizing optimized implementations from SDF and SDF-like models, the real grand challenge is to build a synthesis system that leverages all of these possibilities. One envisions the SDF synthesis system to tie-in with good compilers later in the flow to hopefully produce code that is equal to or better than hand-written code. By incorporating buffer sharing techniques into all aspects of scheduling and allocation, the framework is able to generate schedules and allocations that reuse buffer memory, thereby reducing the overall memory usage dramatically. The chapter shows that some approaches can be fruitfully combined to give a powerful, efficient approach that significantly improves memory requirements of SDF graphs over previous techniques.