#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include "place_base.h"
Go to the source code of this file.
Place pad ring, leaving a core area to meet a desired utilization.
Sets the position of pads that aren't already fixed.
Computes g_place_coreBounds and g_place_padBounds. Determines g_place_rowHeight.
Definition at line 31 of file place_pads.c.
33 float coreArea = 0, totalArea = 0;
40 int remainingPads, northPads, southPads, eastPads, westPads;
42 printf(
"PLAC-00 : Placing IO pads\n");;
65 padCells[padCount++] = cell;
70 printf(
"ERROR: No pad cells\n");
76 coreArea /= utilization;
87 printf(
"PLAC-05 : \tpreplacing %d pad cells\n", padCount);
94 printf(
"PLAC-05 : \tplaceable rows : %d\n", numRows);
95 printf(
"PLAC-05 : \tcore dimensions : %.0fx%.0f\n",
97 printf(
"PLAC-05 : \tchip dimensions : %.0fx%.0f\n",
100 remainingPads = padCount;
104 northPads = remainingPads/4; remainingPads -= northPads;
106 for(i=0; i<northPads; i++) {
107 cell = padCells[c++];
114 southPads = remainingPads/3; remainingPads -= southPads;
116 for(i=0; i<southPads; i++) {
117 cell = padCells[c++];
124 eastPads = remainingPads/2; remainingPads -= eastPads;
126 for(i=0; i<eastPads; i++) {
127 cell = padCells[c++];
134 westPads = remainingPads;
136 for(i=0; i<westPads; i++) {
137 cell = padCells[c++];
ConcreteCell ** g_place_concreteCells
float getCellArea(const ConcreteCell *cell)
ABC_NAMESPACE_IMPL_START int g_place_numCells