  FPGAs are increasingly being deployed in the cloud to accelerate diverse
applications. They are to be shared among multiple tenants to improve the total
cost of ownership. Partial reconfiguration technology enables multi-tenancy on
FPGA by partitioning it into regions, each hosting a specific application's
accelerator. However, the region's size can not be changed once they are
defined, resulting in the underutilization of FPGA resources. This paper argues
to divide the acceleration requirements of an application into multiple small
computation modules. The devised FPGA shell can reconfigure the available PR
regions with those modules and enable them to communicate with each other over
Crossbar interconnect with the Wishbone bus interface. For each PR region being
reconfigured, it updates the register file with the valid destination addresses
and the bandwidth allocation of the interconnect. Any invalid communication
request originating from the Wishbone master interface is masked in the
corresponding master port of the crossbar. The allocated bandwidth for the PR
region is ensured by the weighted round-robin arbiter in the slave port of the
crossbar. Finally, the envisioned resource manager can increase or decrease the
number of PR regions allocated to an application based on its acceleration
requirements and PR regions' availability.
