Shape exploration for modules in rapid assembly workflows
The modular design methodology has been widely adopted to harness the complexity of large FPGA-based systems. As a result, a number of commercial and academic tool flows emerged to support modular design including Hierarchical Design Flow and Partial Reconfiguration Flow, OpenPR, HMFlow, PARBIT, REPLICA, GoAhead and QFlow frameworks. As these workflows have shown, a modular approach raises the abstraction level, provides clear boundaries for incremental design, reduces placement complexity, and improves developer productivity. At the physical layer, modules are often compiled into rectangular regions, suitable for placement on the FPGA fabric. Assembling a design then becomes the process of placing all of the modules on the FPGA, followed by inter-module routing. FPGAs, however, are not homogenous, and the shape and resource consistency of individual modules can greatly impact overall device utilization. Prior work in modular assembly utilize modules with a single shape in the assembly process. Due to the increasing size and heterogeneity of contemporary FPGAs, the placement flexibility of such modules is becoming increasingly limited. This work introduces a process that exploits offline shape generation and exploration, enabling the selection of shapes using criterias such as resource usage efficiency, placement flexibility, and device utilization. Module shapes can be generated with these criterias in mind while still taking advantage of the reduced placement complexity of modular design and assembly.