**cluster_x, cluster_y = c.GetWeightedCenter()*. Here the weighted center of cluster *c* is the average location of all the standard cells in the cluster, weighted according to their area.
**cluster_x, cluster_y = c.GetWeightedCenter()*. Here the weighted center of cluster *c* is the average location of all the standard cells in the cluster, weighted according to their area.
* Use (*cluster_x*, *cluster_y*) as the origin and *threshold* as the step, to divide the bounding box of *c* into different regions.
* Use (*cluster_x*, *cluster_y*) as the origin and *threshold* as the step, to divide the bounding box of *c* into different regions.
* The elements (macro pins, macros, ports and standard cells) in each region forms a new cluster.
* The elements (macro pins, macros, ports and standard cells) in each region forms a new cluster.
The following figure shows an example: the left part shows the cluster *c<sub>1</sub>* before break-up process and the blue dot is the weighted center of *c<sub>1</sub>*; the right part shows the clusters after breakup-up process. The "center" cluster still has the cluster id of 1.
<imgsrc="./breakup.png"width="1600"/>
Note that the netlist is generated by physical-aware synthesis, we know the (x, y) coordinate for each instance.
Note that the netlist is generated by physical-aware synthesis, we know the (x, y) coordinate for each instance.