verilog-to-routing / vtr-verilog-to-routing

Verilog to Routing -- Open Source CAD Flow for FPGA Research
https://verilogtorouting.org
Other
1k stars 388 forks source link

NoC-aware packing optimization and NoC-biased centroid move type #2546

Closed soheilshahrouz closed 4 months ago

soheilshahrouz commented 5 months ago

The packing algorithm may infer logical connectivity through high-fanout nets like reset and clock enable, especially in NoC designs. This could lead to atoms from unconnected modules being packed together. Once this happens, more atoms from the unconnected module can join through low-fanout nets. Placing such clustered blocks is challenging because they are connected (not necessarily directly) to NoC routers, but NoC routers are usually very far from each other. As a results, clustered blocks of two unconnected modules are stretched between two NoC routers. To address this, we use BFS on the atom netlist to identify connected components including NoC routers. Once identified, we prevent atoms from different components from clustering together.

In the placement stage, a new move type is introcuded: NoC-baised centroid. After the centroid loaction of a clustered block is computed, it is adjusted towards its reachable NoC routers. To find reachable NoC routers for all blocks, we run BFS on the clustered netlist to find connected components containing NoC routers.

This PR is submitted for code review. QoR results for the initial implementation of this PR are available in the paper. QoR results for the current version will be added soon.

Types of changes

Checklist:

soheilshahrouz commented 4 months ago

@vaughnbetz I added more comments and a few subroutines based on your review.