# Hurricane Documentation

# Hurricane VLSI Database

List of all members | Public Types | Public Member Functions
Hurricane::Query Class Referenceabstract

Query description (API) More...

## Public Types

enum | QueryFilter { DoMasterCells = 1, DoTerminalCells = 2, DoComponents = 4, DoMarkers = 8, DoRubbers = 16, DoExtensionGos = 32, DoAll }

## Public Member Functions

| Query ()
virtual | ~Query ()
unsigned int | getStartLevel () const
unsigned int | getStopLevel () const
size_t | getDepth () const
const Transformation & | getTransformation () const
const Box & | getArea () const
const BasicLayer * | getBasicLayer () const
Cell * | getMasterCell ()
Instance * | getInstance ()
Path | getPath () const
virtual bool | hasGoCallback () const
virtual bool | hasMarkerCallback () const
virtual bool | hasRubberCallback () const
virtual bool | hasExtensionGoCallback () const
virtual bool | hasMasterCellCallback () const
virtual void | goCallback (Go *)=0
virtual void | markerCallback (Marker *)
virtual void | rubberCallback (Rubber *)
virtual void | extensionGoCallback (Go *)=0
virtual void | masterCellCallback ()=0
void | setQuery (Cell *cell, const Box &area, const Transformation &transformation, const BasicLayer *basicLayer, ExtensionSlice::Mask extensionMask, Mask filter, DbU::Unit threshold=0)
void | setCell (Cell *cell)
void | setArea (const Box &area)
void | setTransformation (const Transformation &transformation)
virtual void | setBasicLayer (const BasicLayer *basicLayer)
void | setExtensionMask (ExtensionSlice::Mask mode)
void | setFilter (Mask mode)
void | setStartLevel (unsigned int level)
void | setStopLevel (unsigned int level)
virtual void | doQuery ()

## Detailed Description

Query description (API)

# Introduction

The Query is a part of the trans-hierarchical mechanism. A Query performs a walktrough over all the Occurrences of objects under a determined area, thus providing a virtual flattening service. Please note that only placed objects (i.e. inserted in a QuadTree) are took into account.

To use the Query class the user has to create derived classes and overload the various callbacks. At least the following pure virtual methods must be overloaded:

- Query::masterCellCallback().
- Query::goCallback().
- Query::extensionGoCallback().

# secQueryParameters

A query walkthrough is defined by the following parameters:

- The starting hierarchical level: only objects with a hierarchical depth greater or equal will be explored. The top level Cell has a depth of zero, the master Cell of the instances a depth of one and so on.
- The stoping hierarchical level: only objects with a hierarchical depth lesser or equal will be considered.
- The top Cell on which to start.
- The area to consider on the top Cell.
- A transformation to apply on the top Cell.
- A BasicLayer to select only the Gos containing it.
- An ExtensionSlice::Mask to select which user-defined slice to process.
- A Mask, to select which kind of Go to process.

## Member Enumeration Documentation

## ◆ QueryFilter

enum Hurricane::Query::QueryFilter

Set of flags to specify on which types of objects the Query must iterate.

Enumerator
DoMasterCells | Activate the call of the Query::masterCellCallback().
DoTerminalCells | Activate the call of the Query::masterCellCallback(), but only on leaf Cell of the hierarchy.
DoComponents | Activate the call of the Query::goCallback().
DoMarkers | Activate the call of the Query::markerCallback().
DoRubbers | Activate the call of the Query::rubberCallback().
DoExtensionGos | Activate the call of the Query::extensionGoCallback().
DoAll | Activate all the callbacks at once.

## Constructor & Destructor Documentation

## ◆ Query()

Hurricane::Query::Query | ( |  | ) |

Default constructor. Initialisation is done through Query::setQuery().

## ◆ ~Query()

Hurricane::Query::~Query | ( |  | ) |

virtual

Default destructor.

## Member Function Documentation

## ◆ getStartLevel()

unsigned int Hurricane::Query::getStartLevel | ( |  | ) | const

inline

The hierarchical level from which we start to consider objects.

## ◆ getStopLevel()

unsigned int Hurricane::Query::getStopLevel | ( |  | ) | const

inline

The hierarchical level from which we stop to consider objects.

## ◆ getDepth()

size_t Hurricane::Query::getDepth | ( |  | ) | const

inline

The hierarchical depth of the current Query walkthrough.

## ◆ getTransformation()

const Transformation & Hurricane::Query::getTransformation | ( |  | ) | const

inline

The cumulative transformation of the master cell currently under exploration.

## ◆ getArea()

const Box & Hurricane::Query::getArea | ( |  | ) | const

inline

The area to explore, expressed in the coordinates system of the current master cell under exploration. This is the starting area with the inverse of the current transformation applied.

## ◆ getBasicLayer()

const BasicLayer * Hurricane::Query::getBasicLayer | ( |  | ) | const

inline

The BasicLayer we are filtering with.

## ◆ getMasterCell()

Cell * Hurricane::Query::getMasterCell | ( |  | ) |

inline

The master Cell currently under exploration.

## ◆ getInstance()

Instance * Hurricane::Query::getInstance | ( |  | ) |

inline

The Instance currently under exploration.

## ◆ getPath()

Path Hurricane::Query::getPath | ( |  | ) | const

inline

The instanciation path between the instance currently under inspection and the top cell.

## ◆ hasGoCallback()

bool Hurricane::Query::hasGoCallback | ( |  | ) | const

virtual

Tells wether the Go callback is present and should be called.

## ◆ hasMarkerCallback()

bool Hurricane::Query::hasMarkerCallback | ( |  | ) | const

virtual

Tells wether the Marker callback is present and should be called.

## ◆ hasRubberCallback()

bool Hurricane::Query::hasRubberCallback | ( |  | ) | const

virtual

Tells wether the Rubber callback is present and should be called.

## ◆ hasExtensionGoCallback()

bool Hurricane::Query::hasExtensionGoCallback | ( |  | ) | const

virtual

Tells wether the ExtensionGo callback is present and should be called.

## ◆ hasMasterCellCallback()

bool Hurricane::Query::hasMasterCellCallback | ( |  | ) | const

virtual

Tells wether the master Cell callback is present and should be called.

## ◆ goCallback()

void Hurricane::Query::goCallback | ( | Go * |  | ) |

pure virtual

The method called on each encountered Go. This is a pure virtual method which must be overloaded in derived classes.

## ◆ markerCallback()

void Hurricane::Query::markerCallback | ( | Marker * |  | ) |

virtual

The method called on each encountered Marker. A default implementation is provided, which does absolutely nothing.

## ◆ rubberCallback()

void Hurricane::Query::rubberCallback | ( | Rubber * |  | ) |

virtual

The method called on each encountered Rubber. A default implementation is provided, which does absolutely nothing.

## ◆ extensionGoCallback()

void Hurricane::Query::extensionGoCallback | ( | Go * |  | ) |

pure virtual

The method called on each encountered ExtensionGo. This is a pure virtual method which must be overloaded in derived classes.

## ◆ masterCellCallback()

void Hurricane::Query::masterCellCallback | ( |  | ) |

pure virtual

The method called on each encountered master Cell. The Cell is not passed as parameter as it is directly accessible through Query::getCell(). This is a pure virtual method which must be overloaded in derived classes.

## ◆ setQuery()

void Hurricane::Query::setQuery | ( | Cell * | cell,
|  | const Box & | area,
|  | const Transformation & | transformation,
|  | const BasicLayer * | basicLayer,
|  | ExtensionSlice::Mask | extensionMask,
|  | Mask | filter,
|  | DbU::Unit | threshold = `0`
| ) |  |

Parameters

  cell | The top Cell on which to start the Query.
  area | The area under which objects are queried.
  transformation | An initial transformation to apply to `cell`.
  basicLayer | Consider only objects containing this BasicLayer.
  extensionMask | Consider only ExtensionGo matching this mask.
  filter | Consider only objects of certain types, as defined in QueryFilter.

Initialize the basic parameters of the Query. Those parameters can be changed individually afterwards with specific mutators.

## ◆ setCell()

void Hurricane::Query::setCell | ( | Cell * | cell | ) |

inline

Change the top Cell on which to perform the Query.

## ◆ setArea()

void Hurricane::Query::setArea | ( | const Box & | box | ) |

inline

Change the top area to query.

## ◆ setTransformation()

void Hurricane::Query::setTransformation | ( | const Transformation & | transformation | ) |

inline

Change the transformation applied to the top level Cell.

## ◆ setBasicLayer()

void Hurricane::Query::setBasicLayer | ( | const BasicLayer * | basicLayer | ) |

virtual

Change the BasicLayer selector.

## ◆ setExtensionMask()

void Hurricane::Query::setExtensionMask | ( | ExtensionSlice::Mask | mode | ) |

inline

Change the filtering mask for ExtensionSlice.

## ◆ setFilter()

void Hurricane::Query::setFilter | ( | Mask | mode | ) |

inline

Change the filtering mask for object types.

## ◆ setStartLevel()

void Hurricane::Query::setStartLevel | ( | unsigned int | level | ) |

inline

Change the starting depth level.

## ◆ setStopLevel()

void Hurricane::Query::setStopLevel | ( | unsigned int | level | ) |

inline

Change the stoping depth level.

## ◆ doQuery()

void Hurricane::Query::doQuery | ( |  | ) |

virtual

Perform the actual Query.

The documentation for this class was generated from the following files:

- Query.h
- Query.dox