Technological rules description (API). More...
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 |
PhysicalRule * | getUnitRule (std::string ruleName) const |
PhysicalRule * | getPhysicalRule (std::string ruleName, std::string layerName) const |
PhysicalRule * | getPhysicalRule (std::string ruleName, std::string layer1Name, std::string layer2Name) const |
void | setName (const Name &) |
bool | setSymbolicLayer (const Layer *) |
PhysicalRule * | addUnitRule (std::string ruleName, std::string reference) |
PhysicalRule * | addPhysicalRule (std::string ruleName, std::string reference) |
PhysicalRule * | addPhysicalRule (std::string ruleName, std::string layerName, std::string reference) |
PhysicalRule * | addPhysicalRule (std::string ruleName, std::string layer1Name, std::string layer2Name, std::string reference) |
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 &) |
Technological rules description (API).
The Technology object provides the description of all the technology rules needed by the tools, currently it contains:
DTR
in Alliance).
This object must be created once within the DataBase, and, in principle never destroyed (this would destroy layers and all objects laying on them ...).
Here
How to create a simple one layer rule, setup the minimal width of metal1
layer to 0.5µm.
How to create a one layer rule, with multiple steps. The minimal spacing of metal1
layer which will depend on the wire length. The spacing will be of 2µm for length below 50µm and 4µm above.
How to create a two layers rule, with non-isomorphic values. The minimum enclosure of metal1
layer over cut1
will be 1µm in horizontal direction and 0.5µm in vertical. The order of layers is significant in the function call, it must be read as "The encolusre of metal1 over cut1".
|
static |
Returns: a newly created technology named <name>
for the data base <dataBase>
.
dataBase
is NULL
, if the name is empty or if the dataBase
has already a technology.
|
inline |
Returns: true if the layer
is indeed of type BasicLayer::Material::metal.
References Hurricane::Layer::getMask().
|
inline |
Returns: the DataBase owning the technology.
|
inline |
Returns: the technology name.
Returns: the Layer named <name>
if it exists, else NULL
.
BasicLayer * Hurricane::Technology::getBasicLayer | ( | const Name & | name | ) | const |
Returns: the Layer named <name>
if it exists and is a BasicLayer, else NULL
.
BasicLayer * Hurricane::Technology::getRegularLayer | ( | const Name & | name | ) | const |
Returns: the Layer named <name>
if it exists and is a RegularLayer, else NULL
.
BasicLayer * Hurricane::Technology::getViaLayer | ( | const Name & | name | ) | const |
|
inline |
Returns: the collection of layers of the technology.
BasicLayers Hurricane::Technology::getBasicLayers | ( | ) | const |
Returns: the collection of basic layers of the technology (uses the same order).
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).
RegularLayers Hurricane::Technology::getRegularLayers | ( | ) | const |
Returns: the collection of regular layers of the technology (uses the same order).
ViaLayers Hurricane::Technology::getViaLayers | ( | ) | const |
Returns: the collection of via layers of the technology (uses the same order).
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.
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.
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.
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.
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.
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.
Layer * Hurricane::Technology::getNthMetal | ( | int | depth | ) | const |
Returns: the Nth
metal layer from the substrate. So a depth
of zero should mean metal1
.
PhysicalRule * Hurricane::Technology::getUnitRule | ( | std::string | ruleName | ) | const |
ruleName | The name of the rule |
Returns: The matching rule in the table of unit rules.
PhysicalRule * Hurricane::Technology::getPhysicalRule | ( | std::string | ruleName, |
std::string | layerName | ||
) | const |
ruleName | The name of the rule |
layerName | The name of the layer |
Returns: The matching rule in the table of one layer rules.
PhysicalRule * Hurricane::Technology::getPhysicalRule | ( | std::string | ruleName, |
std::string | layer1Name, | ||
std::string | layer2Name | ||
) | const |
ruleName | The name of the rule |
layer1Name | The name of the first layer |
layer2Name | The name of the second layer |
Returns: The matching rule in the table of two layers rules. The order of layers arguments is meaningful and should match The one used at rule creation.
void Hurricane::Technology::setName | ( | const Name & | name | ) |
Allows to change the technology name (if empty name, throws an exception).
bool Hurricane::Technology::setSymbolicLayer | ( | const Layer * | layer | ) |
Sets this exact layer
as symbolic (not is mask). Returns true on success (the layer exists).
PhysicalRule * Hurricane::Technology::addUnitRule | ( | std::string | ruleName, |
std::string | reference | ||
) |
ruleName | The name of the rule |
reference | A free comentary string for further reference. |
Returns: The newly added rule.
Create and add to Technology a rule whithout associated layer. The rule should contain a value which is anything but a length (Volt, Henry, Ohm, ...) The rule is created empty. For a detailed explanation see PhysicalRule.
PhysicalRule * Hurricane::Technology::addPhysicalRule | ( | std::string | ruleName, |
std::string | reference | ||
) |
ruleName | The name of the rule |
reference | A free comentary string for further reference. |
Returns: The newly added rule.
Create and add to Technology a rule whithout associated layer. The rule should contain only length value(s) (so DbU::Unit). The rule is created empty. For a detailed explanation see PhysicalRule.
PhysicalRule * Hurricane::Technology::addPhysicalRule | ( | std::string | ruleName, |
std::string | layerName, | ||
std::string | reference | ||
) |
ruleName | The name of the rule |
layerName | The one layer associated to the rule. |
reference | A free comentary string for further reference. |
Returns: The newly added rule.
Create and add to Technology a rule associated to one layer. The rule should contain only length value(s) (so DbU::Unit). The rule is created empty. For a detailed explanation see PhysicalRule.
PhysicalRule * Hurricane::Technology::addPhysicalRule | ( | std::string | ruleName, |
std::string | layer1Name, | ||
std::string | layer2Name, | ||
std::string | reference | ||
) |
ruleName | The name of the rule |
layer1Name | First layer associated to the rule. |
layer2Name | First layer associated to the rule. |
reference | A free comentary string for further reference. |
Returns: The newly added rule.
Create and add to Technology a rule associated to two layers. The order of layers is meaningful in case of an asymmetric rule. The rule should contain only length value(s) (so DbU::Unit). The rule is created empty. For a detailed explanation see PhysicalRule.
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 |