Commit be78a504 by sakundu

Merge branch 'main' of github.com:TILOS-AI-Institute/MacroPlacement into main

parents adf2a0aa 8de1be0b
...@@ -48,7 +48,7 @@ Finally, the Methods section of the [Nature paper](https://www.nature.com/articl ...@@ -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. * **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. 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. * (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. 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 ...@@ -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, 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). 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. 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} } `$. We implement the entire flow based on [OpenROAD APIs](https://github.com/the-openroad-project).
**Please refer to the $ `\textcolor{blue}{ \text{ OpenROAD repo} } `$ for explanation of each Tcl command.** **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. 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 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. 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.
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
## **Testcases** ## **Testcases**
The list of avaialbe test cases The list of avaialbe test cases
- Ariane (RTL) - Ariane (RTL)
- [136 macro](./Testcases/ariane136/) - [136 macro (RTL files)](./Testcases/ariane136/)
- [133 macro](./Testcases/ariane133/) - [133 macro](./Testcases/ariane133/)
- MemPool (RTL) - MemPool (RTL)
- [tile](./Testcases/mempool_tile/) - [tile](./Testcases/mempool_tile/)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment