# Hurricane VLSI Database

List of all members | Public Member Functions | Static Public Member Functions
Hurricane::Technology Class Reference

Technological rules description (API). More...

Inheritance diagram for Hurricane::Technology:
[legend]

## Public Member Functions
bool | isMetal (const Layer *) const
DataBase * | getDataBase () const
const Name & | getName () const
Layer * | getLayer (const Name &) const
BasicLayer * | getBasicLayer (const Name &) const
RegularLayer * | getRegularLayer (const Name &) const
ViaLayer * | getViaLayer (const Name &) const
Layers | getLayers () const
BasicLayers | getBasicLayers () const
BasicLayers | getBasicLayers (const Layer::Mask &) const
RegularLayers | getRegularLayers () const
ViaLayers | getViaLayers () const
Layer * | getLayer (const Layer::Mask &, bool useSymbolic=true) const
Layer * | getMetalAbove (const Layer *, bool useSymbolic=true) const
Layer * | getMetalBelow (const Layer *, bool useSymbolic=true) const
Layer * | getCutAbove (const Layer *, bool useSymbolic=true) const
Layer * | getCutBelow (const Layer *, bool useSymbolic=true) const
Layer * | getViaBetween (const Layer *, const Layer *, bool useSymbolic=true) const
Layer * | getNthMetal (int) const
void | setName (const Name &)
Public Member Functions inherited from Hurricane::DBo
virtual void | destroy ()
Property * | getProperty (const Name &) const
Properties | getProperties () const
bool | hasProperty () const
void | put (Property *)
void | remove (Property *)
void | removeProperty (const Name &)
void | clearProperties ()

## Static Public Member Functions
static Technology * | create (DataBase *, const Name &)

## Detailed Description

Technological rules description (API).

# Introduction

The Technology object provides the description of all the technology rules needed by the tools, currently it is limited to the description of all layers available. This object must be created once within the DataBase, and, in principle never destroyed (this would destroy layers and all objects laying on them ...).

Remark: There is only one technology for the current DataBase, and only one
  Database object, so only one technology defined.

## Member Function Documentation

## ◆ create()

Technology * Hurricane::Technology::create | ( | DataBase * | dataBase,
|  | const Name & | name
| ) |  |
| static

Returns: a newly created technology named `<name>` for the data base `<dataBase>`.

Caution: Throws an exception if the `dataBase` is `NULL`, if the name is empty or if
  the `dataBase` has already a technology.

## ◆ isMetal()

bool Hurricane::Technology::isMetal | ( | const Layer * | layer | ) | const
| inline

Returns: true if the `layer` is indeed of type BasicLayer::Material::metal.

References Hurricane::Layer::getMask().

## ◆ getDataBase()

DataBase * Hurricane::Technology::getDataBase | ( |  | ) | const
| inline

Returns: the DataBase owning the technology.

## ◆ getName()

const Name & Hurricane::Technology::getName | ( |  | ) | const
| inline

Returns: the technology name.

## ◆ getLayer() [1/2]

Layer * Hurricane::Technology::getLayer | ( | const Name & | name | ) | const
| inline

Returns: the Layer named `<name>` if it exists, else `NULL`.

## ◆ getBasicLayer()

BasicLayer * Hurricane::Technology::getBasicLayer | ( | const Name & | name | ) | const

Returns: the Layer named `<name>` if it exists and is a BasicLayer, else `NULL`.

## ◆ getRegularLayer()

BasicLayer * Hurricane::Technology::getRegularLayer | ( | const Name & | name | ) | const

Returns: the Layer named `<name>` if it exists and is a RegularLayer, else `NULL`.

## ◆ getViaLayer()

BasicLayer * Hurricane::Technology::getViaLayer | ( | const Name & | name | ) | const

Returns: the Layer named `<name>` if it exists and is a ViaLayer, else `NULL`.

## ◆ getLayers()

Layers Hurricane::Technology::getLayers | ( |  | ) | const
| inline

Returns: the collection of layers of the technology.

Remark: The layers are traversed according to their
  creation order. This order is very important, notably for the graphical display. Therefore deeper basic layers must be created first and upper layers later (the order of composite layers has no importance).

## ◆ getBasicLayers() [1/2]

BasicLayers Hurricane::Technology::getBasicLayers | ( |  | ) | const

Returns: the collection of basic layers of the technology (uses the same order).

## ◆ getBasicLayers() [2/2]

BasicLayers Hurricane::Technology::getBasicLayers | ( | const Layer::Mask & | mask | ) | const

Returns: the collection of basic layers of the technology which matches the Layer mask `<mask>` (uses the same order).

## ◆ getRegularLayers()

RegularLayers Hurricane::Technology::getRegularLayers | ( |  | ) | const

Returns: the collection of regular layers of the technology (uses the same order).

## ◆ getViaLayers()

ViaLayers Hurricane::Technology::getViaLayers | ( |  | ) | const

Returns: the collection of via layers of the technology (uses the same order).

## ◆ getLayer() [2/2]

Layer * Hurricane::Technology::getLayer | ( | const Layer::Mask & | mask,
|  | bool | useWorking = `true`
| ) |  | const

Returns: the layer whose mask equal `mask` and is flagged as working layer. if there is no working layer, returns the first layer that matches.

## ◆ getMetalAbove()

Layer * Hurricane::Technology::getMetalAbove | ( | const Layer * | layer,
|  | bool | useWorking = `true`
| ) |  | const

Returns: the first layer of metal type whose mask is above the current one. if there is no working layer, returns the first layer that matches.

## ◆ getMetalBelow()

Layer * Hurricane::Technology::getMetalBelow | ( | const Layer * | layer,
|  | bool | useWorking = `true`
| ) |  | const

Returns: the first layer of metal type whose mask is below the current one. if there is no working layer, returns the first layer that matches.

## ◆ getCutAbove()

Layer * Hurricane::Technology::getCutAbove | ( | const Layer * | layer,
|  | bool | useWorking = `true`
| ) |  | const

Returns: the first layer of cut type whose mask is above the current one. if there is no working layer, returns the first layer that matches.

## ◆ getCutBelow()

Layer * Hurricane::Technology::getCutBelow | ( | const Layer * | layer,
|  | bool | useWorking = `true`
| ) |  | const

Returns: the first layer of cut type whose mask is below the current one. if there is no working layer, returns the first layer that matches.

## ◆ getViaBetween()

Layer * Hurricane::Technology::getViaBetween | ( | const Layer * | ,
|  | const Layer * | ,
|  | bool | useSymbolic = `true`
| ) |  | const

Returns: the cut layer between `layer1` and `layer2`. They must be both of metal kind and contiguous.

## ◆ getNthMetal()

Layer * Hurricane::Technology::getNthMetal | ( | int | depth | ) | const

Returns: the `Nth` metal layer from the substrate. So a `depth` of zero should mean `metal1`.

## ◆ setName()

void Hurricane::Technology::setName | ( | const Name & | name | ) |

Allows to change the technology name (if empty name, throws an exception).

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

- Technology.h
- Technology.dox

Generated by doxygen 1.8.14 on Sun Mar 8 2020 | Return to top of page

Hurricane VLSI Database | Copyright © 2000-2016 Bull S.A. All rights reserved