Main Page | Namespace List | Class Hierarchy | Compound List | File List | Namespace Members | Compound Members | File Members

NetType Class Reference

#include <netlist.h>

Collaboration diagram for NetType:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 NetType (const vector< PinType > &newPins, const vector< PadType > &newPads)
 NetType (const NetType &newNet)
void operator= (const NetType &newNet)
double getHPWL (const OrientedPacking &pk) const

Public Attributes

const vector< PinType > & pins
const vector< PadType > & pads

Private Member Functions

void getOffsets (double orig_x_offset, double orig_y_offset, OrientedPacking::ORIENT orient, double &x_offset, double &y_offset) const

Private Attributes

vector< PinTypein_pins
vector< PadTypein_pads

Constructor & Destructor Documentation

NetType::NetType const vector< PinType > &  newPins,
const vector< PadType > &  newPads
[inline]
 

Definition at line 50 of file netlist.h.

References in_pads, in_pins, pads, and pins.

00052       : pins(in_pins),
00053         pads(in_pads),
00054         in_pins(newPins),
00055         in_pads(newPads) {}

NetType::NetType const NetType newNet  )  [inline]
 

Definition at line 182 of file netlist.h.

References in_pads, and in_pins.

00183    : pins(in_pins),
00184      pads(in_pads)
00185 {
00186    in_pins = newNet.in_pins;
00187    in_pads = newNet.in_pads;
00188 }


Member Function Documentation

double NetType::getHPWL const OrientedPacking pk  )  const
 

Definition at line 48 of file netlist.cxx.

References getOffsets(), BasePacking::height, in_pads, in_pins, OrientedPacking::orient, OrientedPacking::ORIENT, BasePacking::width, BasePacking::xloc, and BasePacking::yloc.

00049 {
00050    double minX = Dimension::INFTY;
00051    double maxX = -1 * Dimension::INFTY;
00052    double minY = Dimension::INFTY;
00053    double maxY = -1 * Dimension::INFTY;
00054 
00055    for (unsigned int i = 0; i < in_pads.size(); i++)
00056    {
00057       double xloc = in_pads[i].xloc;
00058       double yloc = in_pads[i].yloc;
00059 
00060       minX = min(minX, xloc);
00061       maxX = max(maxX, xloc);
00062       minY = min(minY, yloc);
00063       maxY = max(maxY, yloc);
00064 //      printf("PAD [%d]: %lf, %lf\n", i, xloc, yloc);
00065    }
00066 
00067    for (unsigned int i = 0; i < in_pins.size(); i++)
00068    {
00069       double orig_x_offset = in_pins[i].x_offset;
00070       double orig_y_offset = in_pins[i].y_offset;
00071 
00072       int blk_index = in_pins[i].block;
00073       OrientedPacking::ORIENT blk_orient = pk.orient[blk_index];
00074 
00075       double x_length = (blk_orient % 2 == 0)?
00076          pk.width[blk_index] : pk.height[blk_index];
00077       double y_length = (blk_orient % 2 == 0)?
00078          pk.height[blk_index] : pk.width[blk_index];
00079 
00080       double x_offset = -1;
00081       double y_offset = -1;
00082       getOffsets(orig_x_offset, orig_y_offset, blk_orient,
00083                  x_offset, y_offset);
00084 
00085       double xloc = pk.xloc[blk_index] + (x_length / 2) + x_offset;
00086       double yloc = pk.yloc[blk_index] + (y_length / 2) + y_offset;
00087 
00088       minX = min(minX, xloc);
00089       maxX = max(maxX, xloc);
00090       minY = min(minY, yloc);
00091       maxY = max(maxY, yloc);
00092 //      printf("PIN [%d]: %lf (%lf-%lf), %lf(%lf-%lf)\n",
00093 //             i, xloc, pk.xloc[blk_index], pk.xloc[blk_index]+x_length,
00094 //             yloc, pk.yloc[blk_index], pk.yloc[blk_index]+y_length);
00095    }
00096 //   printf("x-span: %lf - %lf\n", minX, maxX);
00097 //   printf("y-span: %lf - %lf\n", minY, maxY);
00098 //   printf("HPWL: %lf ", (maxX-minX) + (maxY-minY));
00099    return ((maxX - minX) + (maxY - minY));
00100 }

Here is the call graph for this function:

void NetType::getOffsets double  orig_x_offset,
double  orig_y_offset,
OrientedPacking::ORIENT  orient,
double &  x_offset,
double &  y_offset
const [inline, private]
 

Definition at line 196 of file netlist.h.

References OrientedPacking::E, OrientedPacking::FE, OrientedPacking::FN, OrientedPacking::FS, OrientedPacking::FW, OrientedPacking::N, OrientedPacking::S, OrientedPacking::UNDEFINED, and OrientedPacking::W.

Referenced by getHPWL().

00201 {
00202    switch (blk_orient)
00203    {
00204    case OrientedPacking::N:
00205       x_offset = orig_x_offset;
00206       y_offset = orig_y_offset;
00207       break;
00208       
00209    case OrientedPacking::E:
00210       x_offset = orig_y_offset;
00211       y_offset = -1 * orig_x_offset;
00212       break;
00213       
00214    case OrientedPacking::S:
00215       x_offset = -1 * orig_x_offset;
00216       y_offset = -1 * orig_y_offset;
00217       break;
00218       
00219    case OrientedPacking::W:
00220       x_offset = -1 * orig_y_offset;
00221       y_offset = orig_x_offset;
00222       break;
00223 
00224    case OrientedPacking::FN:
00225       x_offset = -1 * orig_x_offset;
00226       y_offset = orig_y_offset;
00227       break;
00228 
00229    case OrientedPacking::FE:
00230       x_offset = orig_y_offset;
00231       y_offset = orig_x_offset;
00232       break;
00233 
00234    case OrientedPacking::FS:
00235       x_offset = orig_x_offset;
00236       y_offset = -1 * orig_y_offset;
00237       break;
00238 
00239    case OrientedPacking::FW:
00240       x_offset = -1 * orig_y_offset;
00241       y_offset = -1 * orig_x_offset;
00242       break;
00243 
00244    case OrientedPacking::UNDEFINED:
00245       cout << "ERROR: the orientation for this block is undefined."
00246            << endl;
00247       exit(1);
00248       break;
00249                             
00250    default:
00251       cout << "ERROR in specified orientation." << endl;
00252       exit(1);
00253       break;
00254    }
00255 }

void NetType::operator= const NetType newNet  )  [inline]
 

Definition at line 190 of file netlist.h.

References in_pads, and in_pins.

00191 {
00192    in_pins = newNet.in_pins;
00193    in_pads = newNet.in_pads;
00194 }


Member Data Documentation

vector<PadType> NetType::in_pads [private]
 

Definition at line 82 of file netlist.h.

Referenced by getHPWL(), NetType(), and operator=().

vector<PinType> NetType::in_pins [private]
 

Definition at line 81 of file netlist.h.

Referenced by getHPWL(), NetType(), and operator=().

const vector<PadType>& NetType::pads
 

Definition at line 61 of file netlist.h.

Referenced by NetType().

const vector<PinType>& NetType::pins
 

Definition at line 60 of file netlist.h.

Referenced by NetType().


The documentation for this class was generated from the following files:
Generated on Mon Apr 25 01:14:54 2005 for Parquete by doxygen 1.3.2