@@ -48,7 +48,7 @@ Finally, the Methods section of the [Nature paper](https://www.nature.com/articl
***Synthesis of the input netlist.** We use a commercial tool to synthesize the netlist from RTL. Synthesis is physical-aware, in the sense that it has access to the floorplan size and the locations of the input/output pins, which were informed by inter- and intra-block-level information.
## **II. What exactly is the Hypergraph, and how is it partitioned?**
## **II. What *exactly* is the Hypergraph, and how is it partitioned?**
From the above information sources, the description of the [Grouping](https://github.com/TILOS-AI-Institute/MacroPlacement/blob/main/CodeElements/Grouping/README.md) process, and information provided by Google engineers, we are fairly certain of the following.
* (1) Clustering uses the hMETIS partitioner, which is run in “multiway” mode.
More specifically, hMETIS is **always** invoked with *nparts*=500, with unit vertex weights.
...
...
@@ -95,20 +95,20 @@ than or equal to *net_size_threshold*. The default value for this parameter is 3
Our implementation of hypergraph clustering takes the synthesized netlist and a .def file with placed IO ports as input,
then generates the clustered netlist (in lef/def format) using hMETIS (1998 binary).
In default mode, our implementation will also run RePlAce in GUI mode automatically to place the clustered netlist.
We implement the entire flow based on $ `\textcolor{blue}{ \text{ OpenROAD APIs} } `$.
**Please refer to the $ `\textcolor{blue}{ \text{ OpenROAD repo} } `$ for explanation of each Tcl command.**
We implement the entire flow based on [OpenROAD APIs](https://github.com/the-openroad-project).
**Please refer to [the OpenROAD repo](https://github.com/the-openroad-project) for explanation of each Tcl command.**
We have provided the openroad exe in the utils dir. Please note that [The OpenROAD Project](https://github.com/the-openroad-project) does not
We have provided the openroad exe in the [utils](https://github.com/TILOS-AI-Institute/MacroPlacement/tree/main/CodeElements/Clustering/utils) dir. Please note that [The OpenROAD Project](https://github.com/the-openroad-project) does not
distribute any compiled binaries. While we build our implementation on top of the OpenROAD application, our effort is not associated with the OpenROAD project.
Input file: setup.tcl (you can follow the example to set up your own design)
Input file: [setup.tcl](https://github.com/TILOS-AI-Institute/MacroPlacement/blob/main/CodeElements/Clustering/setup.tcl)(you can follow the example to set up your own design)
Output_files: clusters.lef and clustered_netlist.def
Example commands: python generate_clustered_netlist.py ariane hmetis
Example commands: python [generate_clustered_netlist.py](https://github.com/TILOS-AI-Institute/MacroPlacement/blob/main/CodeElements/Clustering/generate_clustered_netlist.py) ariane hmetis
You can use the command: python generate_clustered_netlist.py -h for other options
You can use the command: python [generate_clustered_netlist.py](https://github.com/TILOS-AI-Institute/MacroPlacement/blob/main/CodeElements/Clustering/generate_clustered_netlist.py) -h for other options
Note that the [example](https://github.com/TILOS-AI-Institute/MacroPlacement/tree/main/CodeElements/Clustering/design) that we provide is the ariane design implemented in NanGate45. The netlist is synthesized by Yosys, and the floorplan def is generated by OpenROAD.