/TritonPart

The first version of TritonPart

Primary LanguageVerilogBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

TritonPart : A Constraints Driven General Hypergraph Partitioner

TritonPart is a constraints-driven general hypergraph partitioner. Currently our repo is under active development.

Table of Content

  • OpenROAD includes the source code for TritonPart. The codes are available in OpenROAD/src/par.
  • titan23_benchmark provides the titan23 benchmark suites.
  • regression provides the scripts for benchmarking TritonPart.

Features

  • Start of the art multiple-constraints driven partitioning “multi-tool”
  • Optimizes cost function based on user requirement
  • Permissive open-source license
  • Solves multi-way partitioning with following features:
    • Multidimensional weights on vertices and hyperedges
    • Multilevel coarsening and refinement framework
    • Fixed vertices
    • Timing-driven partitioning framework
    • Community constraints: Groups of vertices need to be in same partition

How to build TritonPart

The first step, independent of the build method, is to download the repository:

  • We implement our TritonPart based on OpenROAD app. Please check the dependencies of OpenROAD app first.
  • We use Google OR-Tools and CPLEX as our ILP solver. Please install Google OR-Tools following the instructions and CPLEX.
  • Please unload Anaconda from the environment.
  • Run following scripts
mkdir build
cd build
cmake ../OpenROAD/
make

How to partition a hypergraph in the way you would using hMETIS

The example tcl command is as follows.

triton_part_hypergraph -hypergraph_file des90.hgr -num_parts 3 -balance_constraint 2 -seed 2

You can run this example with following comands.

cd test
source run.sh

How to partition a hypergraph with fixed vertices constraints

The example tcl command is as follows.

triton_part_hypergraph -hypergraph_file sample.hgr -num_parts 2 -balance_constraint 20 -seed 2 -fixed_file sample.fix

You can run this example with following comands.

cd test
source run_fix.sh

How to partition a hypergraph with embedding constraints

The example tcl command is as follows.

triton_part_hypergraph -hypergraph_file sample.hgr -num_parts 2 -balance_constraint 20 -seed 2 \
-placement_file sample.emb -placement_wt_factors { 1.0 1.0 } -placement_dimension 2

You can run this example with following comands.

cd test
source run_emb.sh

How to run regression test

We recommend users to specify their parameters by modifying the regression.py from Line 131 to Line 148. You can run the regression scripts as following:

python regression.py | tee summary.log