Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
Ctrl+K

OpenROAD documentation

Partition Manager#

The partitioning module (par) is based on TritonPart, an open-sourceconstraints-driven partitioner.par can be usedto partition a hypergraph or a gate-level netlist.

Highlights#

  • 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 real-value weights on vertices and hyperedges

    • Multilevel coarsening and refinement framework

    • Fixed vertices constraint

    • Timing-driven partitioning framework

    • Group constraint: Groups of vertices need to be in same block

    • Embedding-aware partitioning

Dependency#

We use Google OR-Tools as our ILP solver.

Our recommendation is to follow the OpenROADDependencyInstaller for installation of this requirement.

Alternatively, you may also install Google OR-Toolsfollowing theseinstructions.

Warning

Due to a build issue, TritonPart is not supported for macOS. Stay tuned to this page for updates!

Main Algorithm#

An overview of the TritonPart algorithm is shown below. It takes as inputs

  • Hypergraph\(H(V,E)\) in.hgr format.

  • Vertex weight\(w_v \in \mathcal{R}_+^m\)

  • Hyperedge weight\(w_e \in \mathcal{R}_+^n\)

  • Number of blocks\(K\).

  • Imbalance factor\(\epsilon\).

  • User-specified cost function\(\phi\).

There are five main steps in the main algorithm,mainly 1) constraints-driven coarsening,2) initial partitioning, 3) refinement, 4) cut-overlay clustering andpartitioning (COCP), and 5) V-cycle refinement. The steps for thetiming-aware algorithm may be found in the nextsection.

  1. Constraints-Driven Coarsening

The first step involves multilevel coarsening. Specifically, at each level,clusters of vertices are identified, and the merged and representedas a single vertex in the resulting coarser hypergraph. In this algorithm,the First-Choice scheme is used, which traverses the vertices in thehypergraph according to a given ordering and merges pairs of vertices withhigh connectivity. The connectivity between a pair of vertices\((u,v)\)is measured as follows:

\[r(u, v) = \sum_{e\in \{I(v)\cap I(u)\}} \frac{\langle \alpha, w_e\rangle}{|e|-1}\]

To efficiently manage multiple constraints, the following enhancements aremade to the coarsening scheme above:

  • Fixed Vertex Constraint: Fixed vertices that belong to the same partitioning block are merged into a single vertex.

  • Grouping Constraint: Vertices that belong to the same group are merged into a single vertex.

  • Embedding Constraint: The embedding information is incorporated into the heavy-edge rating function. The new connectivity is updated as follows:

\[\hat{r}(u, v) = r(u, v) + \rho\frac{1}{||X_u - X_v||_2}\]

where\(\rho\) is a normalization factor set to the average distance between twovertex embeddings. When vertices\(v_1, ... , v_t\) are merged into a singlevertex\(v_{coarse}\), the corresponding vertex embedding\(X_{v_{coarse}}\)is defined as thecenter of gravity of\(t\) vertices:

\[X_{v_{coarse}} = \sum_{j=1}^{t} \frac{||w_{v_j}||}{M} X_{v_j},\ where\ M= \sum_{j=1}^t ||w_{v_j}|| \]
  • Community Guidance: Only vertices within the same community areconsidered for merging.

  • Tie-breaking mechanism: If multiple neighbor pairs have the same ratingscore, combine the lexicographically first unmatched vertex to break ties.

  1. Initial Partitioning

After completing the coarsening process, an initial partitioning solution forthe coarsest hypergraph\(H_c\) is derived. Two sub-steps are involved in this:the best partitioning solution from random and VILE partitioning is chosenfrom\(\eta = 50\) runs as a warm-start to the ILP-based partitioner. Theoptimization is based on only the cut size rather than the cost function\(\phi\) to keep the runtime reasonable.

  1. Refinement

After a feasible solution\(H_{c_\xi}\) is obtained by initial partitioning,uncoarsening and move-based refinement is performed to improve thepartitioning solution. Three refinement heuristics are applied in sequence:

  • \(K\)-way pairwise FM (PM): This addresses multi-way partitioningas concurrent bi-partitioning problems in a restricted version of K-wayFiduccia–Mattheyses (FM) algorithm. First,\(\lfloor K/2\rfloor \) pairs ofblocks are obtained, with refinement-specific vertex movements restrictedto associated paired blocks. Next, two-way FM is concurrently performed onall the block pairs. finally, a new configuration of block pairs is computedat the end of the PM.

  • Direct\(K\)-way FM: Using\(K\) priority queues, for each block\(V_i\),establish a priority queue that stores the vertices that can be potentiallymoved from the current block to block\(V_i\). This queue is ordered accordingto the gain of the vertices. Gain is defined as the reduction in costfunction from the movement of the vertex from the current block to\(V_i\).Next, after a vertex move, each priority queue is updated independently, thusenabling parallel updates via multi-threading. Next, early-stop is implementedby limiting the maximum number of vertices moved to 100 per pass. Finally,thecorking effect is mitigated by traversing the priority queue belongingto the vertex with the highest gain and identifying a feasible vertex move.

  • Greedy Hyperedge Refinement (HER): First, randomly visit allhyperedges. For each hyperedge\(e\) that crosses the partition boundary,determine whether a subset of vertices in\(e\) can be moved without violatingthe multi-dimensional balance constraints. The objective is to make\(e\)entirely constrained in a block.

  1. Cut-Overlay Clustering and Partitioning (COCP)

Cut-overlay Clustering and Partitioning (COCP) is a mechanism tocombine multiple good-quality partitioning solutions to generate animproved solution. To begin, the sets of hyperedges cut in the\(\theta\)candidate solutions are denoted as\(E_1,..., E_\theta \subset E\). First,\(\cup_{i=1}^\theta E_i\) is removed from the hypergraph\(H(V, E)\), resulting ina number of connected components. Next, all vertices within each connectedcomponent are merged to form a coarser hypergraph\(H_{overlay}\). If thenumber of vertices in\(H_{overlay}\) is less than\(thr_{ilp}\), ILP-basedpartitioning is performed. If not, a single round of constraints-drivencoarsening is conducted to further reduce the size of\(H_{overlay}\)and generate a coarser hypergraph\(H_{overlay}^{'}\). Finally, multilevelrefinement is performed to further improve the partitioning solution ateach level of the hierarchy and return the improved solution\(S^{'}\).

  1. V-Cycle Refinement

Cut-overlay clustering and partitioning produces a high-quality partitioningsolution\(S^{'}\). To improve it, there are three phases similar tohMETIS,namely multilevel coarsening, ILP-based partitioning, and refinement.Firstly, in multilevel partitioning,\(S^{'}\) is used as a community guidancefor the constraints-driven coarsening. Only vertices within the same blockare permitted to be merged to ensure that the current solution\(S^{'}\)is preserved in the coarsest hypergraph\(H_{c_\xi}\). In the ILP-basedpartitioning phase, if the number of vertices in\(H_{c_\xi}\) does not exceed\(thr_{ilp}\), run ILP-based partitioning to improve\(S^{'}\). Otherwise,continue with\(S^{'}\) in successive iterations of these two steps (defaultset to 2). The refinement phase is conducted as per step 3.

TritonPart algorithm at a glance

Timing Aware Algorithm#

par can also be used as a timing-aware partitioning framework. A slackpropagation methodology is used that optimizes cuts for both timing-criticaland timing-noncritical paths.

  1. Extraction of Timing Paths and Slack Information

First, the top\(P\) timing-critical paths and the slack information of eachhyperedge using the wireload model (WLM) is obtained fromOpenSTA. Thetiming cost of each path is then calculated:

\[t_p = (1- \frac{slack_p - \Delta}{clock\_period})^\mu\]

where a fixed extra delay\(\Delta\) is introduced for timing guardband,and\(\mu\) (default 2) is the exponent.

The snaking factor of a path\(SF(p)\) is defined as the maximum numberof block reentries along the path\(p\). The timing cost of a hyperedge iscomputed using the timing weight corresponding to hyperedge slack\(slack_e\)and the accumulated timing cost of all paths traversing the hyperedge.

\[t_e = (1- \frac{slack_e -\Delta}{clock\_period})^\mu + \sum_{\{p|e\in p\}}t_p\]
  1. Timing-aware Coarsening

The timing-aware feature is achieved by adding a timing cost of hyperedge\(t_e\) to the connectivity score earlier mentioned. If vertices\((u,v)\)are associated with multiple critical paths, then they are more likely tobe merged. This is reflected in the update score function:

\[r_t(u,v) = \hat{r}(u,v) + \sum_{e\in\{I(v) \cap I(u)\}} \frac{\beta t_e}{|e| - 1}\]
  1. Timing-aware Refinement

Timing-aware refinement is based on a similar cost function as the mainalgorithm. Instead, an additional slack propagation step is performed atthe end of each PM/FM/HER pass.

Commands#

Note

  • Parameters in square brackets[-paramparam] are optional.

  • Parameters without square brackets-param2param2 are required.

Partition Hypergraph Netlist#

This command performs hypergraph netlist partitioning.

triton_part_hypergraph-hypergraph_filehypergraph_file-num_partsnum_parts-balance_constraintbalance_constraint[-base_balancebase_balance][-scale_factorscale_factor][-seedseed][-vertex_dimensionvertex_dimension][-hyperedge_dimensionhyperedge_dimension][-placement_dimensionplacement_dimension][-fixed_filefixed_file][-community_filecommunity_file][-group_filegroup_file][-placement_fileplacement_file][-e_wt_factorse_wt_factors][-v_wt_factors<v_wt_factors>][-placement_wt_factors<placement_wt_factors>][-thr_coarsen_hyperedge_size_skipthr_coarsen_hyperedge_size_skip][-thr_coarsen_verticesthr_coarsen_vertices][-thr_coarsen_hyperedgesthr_coarsen_hyperedges][-coarsening_ratiocoarsening_ratio][-max_coarsen_itersmax_coarsen_iters][-adj_diff_ratioadj_diff_ratio][-min_num_vertices_each_partmin_num_vertices_each_part][-num_initial_solutionsnum_initial_solutions][-num_best_initial_solutionsnum_best_initial_solutions][-refiner_itersrefiner_iters][-max_movesmax_moves][-early_stop_ratioearly_stop_ratio][-total_corking_passestotal_corking_passes][-v_cycle_flagv_cycle_flag][-max_num_vcyclemax_num_vcycle][-num_coarsen_solutionsnum_coarsen_solutions][-num_vertices_threshold_ilpnum_vertices_threshold_ilp][-global_net_thresholdglobal_net_threshold]

Options#

Switch Name

Description

-num_parts

Number of partitions. The default value is2, and the allowed values are integers[0,MAX_INT].

-balance_constraint

Allowed imbalance between blocks. The default value is1.0, and the allowed values are floats.

-base_balance

Tcl list of baseline imbalance between partitions. The default value is{1.0}, and the allowed values are floats that sum up to1.0.

-scale_factor

KIV. The default value is{1.0}, and the allowed values are floats that sum up to1.0.

-seed

Random seed. The default value is0, and the allowed values are integers[-MAX_INT,MAX_INT].

-vertex_dimension

Number of vertices in the hypergraph. The default value is1, and the allowed values are integers[0,MAX_INT].

-hyperedge_dimension

Number of hyperedges in hypergraph. The default value is1, and the allowed values are integers[0,MAX_INT].

-placement_dimension

Number of dimensions for canvas if placement information is provided. The default value is0, and the allowed values are integers[0,MAX_INT].

-hypergraph_file

Path to hypergraph file.

-fixed_file

Path to fixed vertices constraint file.

-community_file

Path tocommunity attributes file to guide the partitioning process.

-group_file

Path tostaytogether attributes file.

-placement_file

Placement information file, each line corresponds to a group fixed vertices, community, and placement attributes following thehMETIS format.

-e_wt_factors

Hyperedge weight factor.

-v_wt_factors

Vertex weight factors.

-placement_wt_factors

Placement weight factors.

-thr_coarsen_hyperedge_size_skip

Threshold for ignoring large hyperedge (default 200, integer).

-thr_coarsen_vertices

Number of vertices of coarsest hypergraph (default 10, integer).

-thr_coarsen_hyperedges

Number of vertices of coarsest hypergraph (default 50, integer).

-coarsening_ratio

Coarsening ratio of two adjacent hypergraphs (default 1.6, float).

-max_coarsen_iters

Number of iterations (default 30, integer).

-adj_diff_ratio

Minimum difference of two adjacent hypergraphs (default 0.0001, float).

-min_num_vertices_each_part

Minimum number of vertices in each partition (default 4, integer).

-num_initial_solutions

Number of initial solutions (default 50, integer).

-num_best_initial_solutions

Number of top initial solutions to filter out (default 10, integer).

-refiner_iters

Refinement iterations (default 10, integer).

-max_moves

The allowed moves for each Fiduccia-Mattheyes (FM) algorithm pass or greedy refinement (default 60, integer).

-early_stop_ratio

Describes the ratio\(e\) where if the\(n_{moved vertices} > n_{vertices} * e\), the tool exits the current FM pass. The intention behind this is that most of the gains are achieved by the first few FM moves. (default 0.5, float).

-total_corking_passes

Maximum level of traversing the buckets to solve the “corking effect” (default 25, integer).

-v_cycle_flag

Disables v-cycle is used to refine partitions (default true, bool).

-max_num_vcycle

Maximum number ofvcycles (default 1, integer).

-num_coarsen_solutions

Number of coarsening solutions with different randoms seed (default 3, integer).

-num_vertices_threshold_ilp

Describes threshold\(t\), the number of vertices used for integer linear programming (ILP) partitioning. if\(n_{vertices} > t\), do not use ILP-based partitioning.(default 50, integer).

-global_net_threshold

If the net is larger than this, it will be ignored by TritonPart (default 1000, integer).

Evaluate Hypergraph Partition#

This command evaluates hypergraph partition.

evaluate_hypergraph_solution-num_partsnum_parts-balance_constraintbalance_constraint-hypergraph_filehypergraph_file-solution_filesolution_file[-base_balancebase_balance][-scale_factorscale_factor][-vertex_dimensionvertex_dimension][-hyperedge_dimensionhyperedge_dimension][-fixed_filefixed_file][-group_filegroup_file][-e_wt_factorse_wt_factors][-v_wt_factorsv_wt_factors]

Options#

Switch Name

Description

-num_parts

Number of partitions. The default value is2, and the allowed values are integers[0,MAX_INT].

-balance_constraint

Allowed imbalance between blocks. The default value is1.0, and the allowed values are floats.

-vertex_dimension

Number of vertices in the hypergraph. The default value is1, and the allowed values are integers[0,MAX_INT].

-hyperedge_dimension

Number of hyperedges in hypergraph. The default value is1, and the allowed values are integers[0,MAX_INT].

-hypergraph_file

Path to hypergraph file.

-solution_file

Path to solution file.

-base_balance

Tcl list of baseline imbalance between partitions. The default value is{1.0}, and the allowed values are floats that sum up to1.0.

-scale_factor

KIV. The default value is{1.0}, and the allowed values are floats that sum up to1.0.

-fixed_file

Path to fixed vertices constraint file.

-group_file

Path tostaytogether attributes file.

-e_wt_factors

Hyperedge weight factor.

-v_wt_factors

Vertex weight factor.

Partition Netlist#

This command partitions the design netlist. Note that design must be loaded in memory.

triton_part_design[-num_partsnum_parts][-balance_constraintbalance_constraint][-base_balancebase_balance][-scale_factorscale_factor][-seedseed][-timing_aware_flagtiming_aware_flag][-top_ntop_n][-placement_flagplacement_flag][-fence_flagfence_flag][-fence_lxfence_lx][-fence_lyfence_ly][-fence_uxfence_ux][-fence_uyfence_uy][-fixed_filefixed_file][-community_filecommunity_file][-group_filegroup_file][-solution_filesolution_file][-net_timing_factornet_timing_factor][-path_timing_factorpath_timing_factor][-path_snaking_factorpath_snaking_factor][-timing_exp_factortiming_exp_factor][-extra_delayextra_delay][-guardband_flagguardband_flag][-e_wt_factorse_wt_factors][-v_wt_factorsv_wt_factors][-placement_wt_factorsplacement_wt_factors][-thr_coarsen_hyperedge_size_skipthr_coarsen_hyperedge_size_skip][-thr_coarsen_verticesthr_coarsen_vertices][-thr_coarsen_hyperedgesthr_coarsen_hyperedges][-coarsening_ratiocoarsening_ratio][-max_coarsen_itersmax_coarsen_iters][-adj_diff_ratioadj_diff_ratio][-min_num_vertices_each_partmin_num_vertices_each_part][-num_initial_solutionsnum_initial_solutions][-num_best_initial_solutionsnum_best_initial_solutions][-refiner_itersrefiner_iters][-max_movesmax_moves][-early_stop_ratioearly_stop_ratio][-total_corking_passestotal_corking_passes][-v_cycle_flagv_cycle_flag][-max_num_vcyclemax_num_vcycle][-num_coarsen_solutionsnum_coarsen_solutions][-num_vertices_threshold_ilpnum_vertices_threshold_ilp][-global_net_thresholdglobal_net_threshold]

Options#

Switch Name

Description

-num_parts

Number of partitions. The default value is2, and the allowed values are integers[0,MAX_INT].

-balance_constraint

Allowed imbalance between blocks. The default value is1.0, and the allowed values are floats.

-base_balance

Tcl list of baseline imbalance between partitions. The default value is{1.0}, and the allowed values are floats that sum up to1.0.

-scale_factor

KIV. The default value is{1.0}, and the allowed values are floats that sum up to1.0.

-seed

Random seed. The default value is1, and the allowed values are integers[-MAX_INT,MAX_INT].

-timing_aware_flag

Enable timing-driven mode. The default value istrue, and the allowed values are booleans.

-top_n

Extract the top n critical timing paths. The default value is1000, and the allowed values are integers[0,MAX_INT.

-placement_flag

Enable placement driven partitioning. The default value isfalse, and the allowed values are booleans.

-fence_flag

Consider fences in the partitioning. The default value isfalse, and the allowed values are booleans.

-fence_lx

Fence lower left x in microns. The default value is0.0, and the allowed values are floats.

-fence_ly

Fence lower left y in microns. The default value is0.0, and the allowed values are floats.

-fence_ux

Fence upper right x in microns. The default value is0.0, and the allowed values are floats.

-fence_uy

Fence upper right y in microns. The default value is0.0, and the allowed values are floats.

-fixed_file

Path to fixed vertices constraint file

-community_file

Path tocommunity attributes file to guide the partitioning process.

-group_file

Path tostaytogether attributes file.

-solution_file

Path to solution file.

-net_timing_factor

Hyperedge timing weight factor (default 1.0, float).

-path_timing_factor

Cutting critical timing path weight factor (default 1.0, float).

-path_snaking_factor

Snaking a critical path weight factor (default 1.0, float).

-timing_exp_factor

Timing exponential factor for normalized slack (default 1.0, float).

-extra_delay

Extra delay introduced by a cut (default 1e-9, float).

-guardband_flag

Enable timing guardband option (default false, bool).

-e_wt_factors

Hyperedge weight factor.

-v_wt_factors

Vertex weight factor.

-placement_wt_factors

Placement weight factor.

-thr_coarsen_hyperedge_size_skip

Threshold for ignoring large hyperedge. The default value is1000, and the allowed values are integers[0,MAX_INT].

-thr_coarsen_vertices

Number of vertices of coarsest hypergraph. The default value is10, and the allowed values are integers[0,MAX_INT].

-thr_coarsen_hyperedges

Number of vertices of the coarsest hypergraph. The default value is50, and the allowed values are integers[0,MAX_INT].

-coarsening_ratio

Coarsening ratio of two adjacent hypergraphs. The default value is1.5, and the allowed values are floats.

-max_coarsen_iters

Number of iterations. The default value is30, and the allowed values are integers[0,MAX_INT].

-adj_diff_ratio

Minimum ratio difference of two adjacent hypergraphs. The default value is0.0001, and the allowed values are floats.

-min_num_vertices_each_part

Minimum number of vertices in each partition. The default value is4, and the allowed values are integers[0,MAX_INT].

-num_initial_solutions

Number of initial solutions. The default value is100, and the allowed values are integers[0,MAX_INT].

-num_best_initial_solutions

Number of top initial solutions to filter out. The default value is10, and the allowed values are integers[0,MAX_INT].

-refiner_iters

Refinement iterations. The default value is10, and the allowed values are integers[0,MAX_INT].

-max_moves

The allowed moves for each Fiduccia-Mattheyes (FM) algorithm pass or greedy refinement. The default value is100, and the allowed values are integers[0,MAX_INT].

-early_stop_ratio

Describes the ratio\(e\) where if the\(n_{moved vertices} > n_{vertices} * e\), the tool exists the current FM pass. The intention behind this is that most of the gains are achieved by the first few FM moves. The default value is0.5, and the allowed values are floats.

-total_corking_passes

Maximum level of traversing the buckets to solve the “corking effect”. The default value is25, and the allowed values are integers[0,MAX_INT].

-v_cycle_flag

Disables v-cycle is used to refine partitions. The default value istrue, and the allowed values are booleans.

-max_num_vcycle

Maximum number of vcycles. The default value is1, and the allowed values are integers[0,MAX_INT].

-num_coarsen_solutions

Number of coarsening solutions with different randoms seed. The default value is4, and the allowed values are integers[0,MAX_INT].

-num_vertices_threshold_ilp

Describes threshold\(t\), the number of vertices used for integer linear programming (ILP) partitioning. if\(n_{vertices} > t\), do not use ILP-based partitioning. The default value is50, and the allowed values are integers[0,MAX_INT].

-global_net_threshold

If the net is larger than this, it will be ignored by TritonPart. The default value is1000, and the allowed values are integers[0,MAX_INT].

Evaluate Netlist Partition#

This command evaluates partition design solution.

evaluate_part_design_solution[-num_partsnum_parts][-balance_constraintbalance_constraint][-base_balancebase_balance][-scale_factorscale_factor][-timing_aware_flagtiming_aware_flag][-top_ntop_n][-fence_flagfence_flag][-fence_lxfence_lx][-fence_lyfence_ly][-fence_uxfence_ux][-fence_uyfence_uy][-fixed_filefixed_file][-community_filecommunity_file][-group_filegroup_file][-hypergraph_filehypergraph_file][-hypergraph_int_weight_filehypergraph_int_weight_file][-solution_filesolution_file][-net_timing_factornet_timing_factor][-path_timing_factorpath_timing_factor][-path_snaking_factorpath_snaking_factor][-timing_exp_factortiming_exp_factor][-extra_delayextra_delay][-guardband_flagguardband_flag][-e_wt_factorse_wt_factors][-v_wt_factorsv_wt_factors]

Options#

Switch Name

Description

-num_parts

Number of partitions. The default value is2, and the allowed values are integers[0,MAX_INT].

-balance_constraint

Allowed imbalance between blocks. The default value is1.0, and the allowed values are floats.

-base_balance

Tcl list of baseline imbalance between partitions. The default value is{1.0}, and the allowed values are floats that sum up to1.0.

-scale_factor

KIV. The default value is{1.0}, and the allowed values are floats that sum up to1.0.

-timing_aware_flag

Enable timing-driven mode. The default value istrue, and the allowed values are booleans.

-top_n

Extract the top n critical timing paths. The default value is1000, and the allowed values are integers[0,MAX_INT].

-fence_flag

Consider fences in the partitioning. The default value isfalse, and the allowed values are booleans.

-fence_lx

Fence lower left x in microns. The default value is0.0, and the allowed values are floats.

-fence_ly

Fence lower left y in microns. The default value is0.0, and the allowed values are floats.

-fence_ux

Fence upper right x in microns. The default value is0.0, and the allowed values are floats.

-fence_uy

Fence upper right y in microns. The default value is0.0, and the allowed values are floats.

-fixed_file

Path to fixed vertices constraint file.

-community_file

Path tocommunity attributes file to guide the partitioning process.

-group_file

Path tostaytogether attributes file.

-hypergraph_file

Path to hypergraph file.

-hypergraph_int_weight_file

Path tohMETIS format integer weight file.

-solution_file

Path to solution file.

-net_timing_factor

Hyperedge timing weight factor. The default value is1.0, and the allowed values are floats.

-path_timing_factor

Cutting critical timing path weight factor. The default value is1.0, and the allowed values are floats.

-path_snaking_factor

Snaking a critical path weight factor. The default value is1.0, and the allowed values are floats.

-timing_exp_factor

Timing exponential factor for normalized slack. The default value is1.0, and the allowed values are floats.

-extra_delay

Extra delay introduced by a cut. The default value is1e-9, and the allowed values are floats.

-guardband_flag

Enable timing guardband option. The default value is 1false, and the allowed values are booleans.

-e_wt_factors

Hyperedge weight factors.

-v_wt_factors

Vertex weight factors.

Write Partition to Verilog#

This command writes the partition result to verilog.

write_partition_verilog[-port_prefixprefix][-module_suffixsuffix][-partitioning_idpart_id][file]

Options#

Switch Name

Description

-port_prefix

Port name prefix.

-module_suffix

Module name suffix.

file

Filename to write partition verilog to.

Read the Partition file#

This command reads the partition file into design.

read_partitioning-read_filename[-instance_map_filefile_path]

Switch Name

Description

-read_file

Read partitioning file (usually with the extension.part). The file format must match the same format as the output ofwrite_partition_verilog.

-instance_map_file

Instance mapping file.

Example Scripts#

How to partition a hypergraph in the way you would using hMETIS (min-cut partitioning)#

triton_part_hypergraph-hypergraph_filedes90.hgr-num_parts5-balance_constraint2-seed2

You can also check the provided examplehere.

How to perform the embedding-aware partitioning#

set num_parts 2set balance_constraint 2set seed 0set design sparcT1_chip2set hypergraph_file "${design}.hgr"set placement_file "${design}.hgr.ubfactor.2.numparts.2.embedding.dat"set solution_file "${design}.hgr.part.${num_parts}"triton_part_hypergraph  -hypergraph_file $hypergraph_file -num_parts $num_parts \                        -balance_constraint $balance_constraint \                        -seed $seed  \                        -placement_file ${placement_file} -placement_wt_factors { 0.00005 0.00005 } \                        -placement_dimension 2

You can find the provided examplehere.

How to partition a netlist#

# set technology informationset ALL_LEFS “list_of_lefs”set ALL_LIBS “list_of_libs”# set design informationset design “design_name”set top_design “top_design”set netlist “netlist.v”set sdc “timing.sdc”foreach lef_file ${ALL_LEFS} {  read_lef $lef_file}foreach lib_file ${ALL_LIBS} {  read_lib $lib_file}read_verilog $netlistlink_design $top_designread_sdc $sdcset num_parts 5set balance_constraint 2set seed 0set top_n 100000# set the extra_delay_cut to 20% of the clock period# the extra_delay_cut is introduced for each cut hyperedgeset extra_delay_cut 9.2e-10  set timing_aware_flag trueset timing_guardband trueset part_design_solution_file "${design}_part_design.hgr.part.${num_parts}"################################################################################################ TritonPart with slack progagation##############################################################################################puts "Start TritonPart with slack propagation"# call triton_part to partition the netlisttriton_part_design -num_parts $num_parts -balance_constraint $balance_constraint \                   -seed $seed -top_n $top_n \                   -timing_aware_flag $timing_aware_flag -extra_delay $extra_delay_cut \                   -guardband_flag $timing_guardband \                   -solution_file $part_design_solution_file

You can find the provided examplehere.

Regression tests#

There are a set of regression tests in./test. For more information, refer to thissection.

Simply run the following script:

./test/regression

ArtNet Spec File Generation Flow#

ArtNet is the hierarchical clustering-based artificial netlist generator with the capability to support heterogeneous designs with macros.ArtNet enables netlist generation from (1) user-specified parameters, and (2) from parameters of a given target design.

../../../_images/ArtNet_usecases.png

Use Cases of ArtNet

Netlist Parameters#

../../../_images/ArtNet_ParamTable.png

Description of Netlist Parameters

What is Rent’s exponent?

  • Rent’s Rule(link)

    • A heuristic used to describe the relationship between the number of external pins (connections) and the size of a circuit (usually in terms of the number of gates). It provides a simple way to estimate how the complexity of a circuit grows as the number of components increases.

    • Region1 refers to the portion of the circuit where Rent’s rule is typically valid. In this region, the relationship between internal and external connections follows the power-law form described by Rent’s rule.

    • InRegion 2, the structure of the circuit may deviate from Rent¡¯s rule and the simple power-law relationship no longer holds as closely.|../../../_images/RentsRule.png ||:–:||Region I and II in #Terminals-#Gate Plot |

Spec File Description#

  • The spec file, which is the input file for ArtNet, is structured as follows.|../../../_images/ArtNet_specFile.png ||:–:||Example of SpecFile |

  • LIBRARY: Defines the master names of all standard cells and macros used in the entire circuit.

  • MODULE: Specifies a submodule within the logical hierarchy under the top module. Multiple types of submodules can be defined; the example includes a single submodule namedsub_module.

  • LIBRARIES: Lists the masters and MODULEs used within the circuit or submodule. MODULEs can also include LIBRARIES with other MODULE definitions, representing multi-level hierarchy…

  • DISTRIBUTION: Indicates the quantity of each master or MODULE defined in LIBRARIES.

    • For example, in the top module, if LIBRARIES includeslib andsub_module, the first DISTRIBUTION line refers to the number of each cell in LIBRARYlib (e.g., 1200 DFFHQx4, 3000 INVx2, etc.).

    • The second DISTRIBUTION line shows that 10 instances ofsub_module are used under the top module.

  • SIZE:

    • The first SIZE defines the physical region size of Region 1 (recommended: 0.25x ~ 0.50x of total number of instances).

    • The second SIZE indicates the total number of instances in the MODULE or CIRCUIT (recommended: 100 ~ 10^9).

  • p/q: Represent the interconnect complexity.

    • p: Rent¡¯s exponent (recommended: 0.4 ~ 0.7)

    • q: the standard deviation of Rent¡¯s exponent. (recommended: 0.01 ~ 0.2)

  • I/O: The number of primary inputs and outputs for the MODULE or CIRCUIT. (recommended: 10 ~ 1000)

Parameter Extraction Command#

This command performs ArtNet spec file generation.

write_artnet_spec[-out_filefile]

Options#

Switch Name

Description

-out_file

Name of output spec file.

References#

  1. Bustany, I., Kahng, A. B., Koutis, I., Pramanik, B., & Wang, Z. (2023). K-SpecPart: A Supervised Spectral Framework for Multi-Way Hypergraph Partitioning Solution Improvement. arXiv preprint arXiv:2305.06167.(.pdf)

  2. Bustany, I., Gasparyan, G., Kahng, A. B., Koutis, I., Pramanik, B., & Wang, Z. (2023). “An Open-Source Constraints-Driven General Partitioning Multi-Tool for VLSI Physical Design”, Proc. ACM/IEEE International Conference of Computer-Aided Design 2023,(.pdf).

  3. Landman, B. S., & Russo, R. L. (1971). “On a Pin Versus Block Relationship for Partitions of Logic Graphs”, IEEE Trans. on Computers, 20(12) pp.1469-1479,(link).

License#

BSD 3-Clause License. SeeLICENSE file.


[8]ページ先頭

©2009-2025 Movatter.jp