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 TransformationgetTransformation () const
 
const BoxgetArea () const
 
const BasicLayergetBasicLayer () const
 
CellgetMasterCell ()
 
InstancegetInstance ()
 
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:

secQueryParameters

A query walkthrough is defined by the following parameters:

Member Enumeration Documentation

◆ 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

\sreturn The hierarchical level from which we start to consider objects.

◆ getStopLevel()

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

\sreturn The hierarchical level from which we stop to consider objects.

◆ getDepth()

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

\sreturn The hierarchical depth of the current Query walkthrough.

◆ getTransformation()

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

\sreturn The cumulative transformation of the master cell currently under exploration.

References Hurricane::Transformation::getTransformation().

◆ getArea()

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

\sreturn 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

\sreturn The BasicLayer we are filtering with.

◆ getMasterCell()

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

\sreturn The master Cell currently under exploration.

◆ getInstance()

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

\sreturn The Instance currently under exploration.

◆ getPath()

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

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

◆ hasGoCallback()

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

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

◆ hasMarkerCallback()

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

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

◆ hasRubberCallback()

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

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

◆ hasExtensionGoCallback()

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

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

◆ hasMasterCellCallback()

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

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

◆ goCallback()

void Hurricane::Query::goCallback ( Go )
pure virtual

\sreturn 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

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

◆ rubberCallback()

void Hurricane::Query::rubberCallback ( Rubber )
virtual

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

◆ extensionGoCallback()

void Hurricane::Query::extensionGoCallback ( Go )
pure virtual

\sreturn 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

\sreturn 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
cellThe top Cell on which to start the Query.
areaThe area under which objects are queried.
transformationAn initial transformation to apply to cell.
basicLayerConsider only objects containing this BasicLayer.
extensionMaskConsider only ExtensionGo matching this mask.
filterConsider 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:


Generated by doxygen 1.9.1 on Thu Aug 11 2022 Return to top of page
Hurricane VLSI Database Copyright © 2000-2020 Bull S.A. All rights reserved