abc-master
|
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
#include <limits.h>
#include <assert.h>
#include "place_base.h"
#include "place_gordian.h"
#include "libhmetis.h"
Go to the source code of this file.
Data Structures | |
struct | FM_cell |
Typedefs | |
typedef struct FM_cell | FM_cell |
Functions | |
void | FM_updateGains (ConcreteNet *net, int partition, int inc, FM_cell target[], FM_cell *bin[], int count_1[], int count_2[]) |
void | initPartitioning () |
Initializes data structures necessary for partitioning. More... | |
void | presortNets () |
Sorts nets by corner positions. More... | |
bool | refinePartitions () |
Splits large leaf partitions. More... | |
void | reallocPartitions () |
Reallocates the partitions based on placement information. More... | |
bool | refinePartition (Partition *p) |
Splits any large leaves within a partition. More... | |
void | repartitionHMetis (Partition *parent) |
Repartitions the two subpartitions using the hMetis min-cut library. More... | |
void | repartitionFM (Partition *parent) |
Fiduccia-Matheyses mincut partitioning algorithm. More... | |
void | partitionEqualArea (Partition *parent) |
Splits a partition into two halves of equal area. More... | |
void | partitionScanlineMincut (Partition *parent) |
Scans the cells within a partition from left to right and chooses the min-cut. More... | |
void | reallocPartition (Partition *p) |
Reallocates a partition and all of its children. More... | |
void | resizePartition (Partition *p) |
Recomputes the bounding boxes of the child partitions based on their relative areas. More... | |
void | incrementalSubpartition (Partition *p, ConcreteCell *newCells[], const int numNewCells) |
Adds new cells to an existing partition. Partition sizes/locations are unchanged. More... | |
void | incrementalPartition () |
Adds new cells to an existing partition. Partition sizes/locations are unchanged. More... | |
Variables | |
ABC_NAMESPACE_IMPL_START Partition * | g_place_rootPartition = NULL |
ConcreteNet ** | allNetsR2 = NULL |
ConcreteNet ** | allNetsL2 = NULL |
ConcreteNet ** | allNetsB2 = NULL |
ConcreteNet ** | allNetsT2 = NULL |
void FM_updateGains | ( | ConcreteNet * | net, |
int | partition, | ||
int | inc, | ||
FM_cell | target[], | ||
FM_cell * | bin[], | ||
int | count_1[], | ||
int | count_2[] | ||
) |
void incrementalPartition | ( | ) |
Adds new cells to an existing partition. Partition sizes/locations are unchanged.
The function recurses, adding new cells to appropriate subpartitions.
Definition at line 1103 of file place_partition.c.
void incrementalSubpartition | ( | Partition * | p, |
ConcreteCell * | newCells[], | ||
const int | numNewCells | ||
) |
Adds new cells to an existing partition. Partition sizes/locations are unchanged.
The function recurses, adding new cells to appropriate subpartitions.
Definition at line 1052 of file place_partition.c.
void initPartitioning | ( | ) |
Initializes data structures necessary for partitioning.
Creates a valid g_place_rootPartition.
Definition at line 67 of file place_partition.c.
void partitionEqualArea | ( | Partition * | parent | ) |
Splits a partition into two halves of equal area.
Definition at line 834 of file place_partition.c.
void partitionScanlineMincut | ( | Partition * | parent | ) |
Scans the cells within a partition from left to right and chooses the min-cut.
Definition at line 879 of file place_partition.c.
void presortNets | ( | ) |
Sorts nets by corner positions.
Allocates allNetsX2 structures.
Definition at line 105 of file place_partition.c.
void reallocPartition | ( | Partition * | p | ) |
Reallocates a partition and all of its children.
Definition at line 988 of file place_partition.c.
void reallocPartitions | ( | ) |
Reallocates the partitions based on placement information.
Definition at line 138 of file place_partition.c.
Splits any large leaves within a partition.
Definition at line 150 of file place_partition.c.
bool refinePartitions | ( | ) |
Splits large leaf partitions.
Definition at line 126 of file place_partition.c.
void repartitionFM | ( | Partition * | parent | ) |
Fiduccia-Matheyses mincut partitioning algorithm.
UNIMPLEMENTED (well, un-C-ified)
Definition at line 435 of file place_partition.c.
void repartitionHMetis | ( | Partition * | parent | ) |
Repartitions the two subpartitions using the hMetis min-cut library.
The number of cut nets between the two partitions will be minimized.
Definition at line 258 of file place_partition.c.
void resizePartition | ( | Partition * | p | ) |
Recomputes the bounding boxes of the child partitions based on their relative areas.
Definition at line 1022 of file place_partition.c.
ConcreteNet ** allNetsB2 = NULL |
Definition at line 37 of file place_partition.c.
ConcreteNet ** allNetsL2 = NULL |
Definition at line 36 of file place_partition.c.
ConcreteNet** allNetsR2 = NULL |
Definition at line 35 of file place_partition.c.
ConcreteNet ** allNetsT2 = NULL |
Definition at line 38 of file place_partition.c.
ABC_NAMESPACE_IMPL_START Partition* g_place_rootPartition = NULL |
Definition at line 34 of file place_partition.c.