oaDevice Class Reference

Inheritance diagram for oaDevice:

oaDesignObject oaObject oaMutualInductor oaSeriesRL oaStdDevice oaCouplingCap oaDiode oaInductor oaResistor


Public Methods

void destroy ()
oaBoolean hasId () const
oaUInt4 getId () const
void setName (const oaString &name)
void getName (oaString &name) const
oaParasiticNetworkgetParasiticNetwork () const
void addToSubNetwork (oaSubNetwork *subNetwork)
void removeFromSubNetwork (oaSubNetwork *subNetwork)
oaCollection< oaSubNetwork, oaDevice > getSubNetworks () const

Static Public Methods

oaDevice * find (const oaParasiticNetwork *network, oaUInt4 id, oaBoolean local)
oaDevice * find (const oaParasiticNetwork *network, const oaString &name)
oaBoolean isValidName (const oaParasiticNetwork *network, const oaString &name)
oaUInt4 getUniqueId (oaParasiticNetwork *network)
oaUInt4 getUniqueId (oaDesign *design)

Public Types

enum  { dtIndex = oacDeviceDataType }
enum  { domain = oacNoDomain }

Detailed Description

The oaDevice class is an abstract base class for parasitic devices contained within an oaParasiticNetwork. A device represents an instance of a particular type of parasitic element, such as a resistor, capacitor, or inductor.

Devices are managed objects, but they can be loaded from disk into memory (and unloaded from memory back to disk) on request as part of the parasitic network to which they belong. Therefore, database clients must be careful not to dereference a pointer to a device after the parasitic network to which it belongs has been unloaded.

There are a variety of different device types, many of which have two endpoints. Each endpoint connects directly to an oaNode object. This is in contrast to connections between instances and nets, where an additional object (oaInstTerm) is used to represent the connection. Most parasitic devices are symmetrical and do not have distinct information associated with each endpoint. Because devices are among the most numerous of database objects, there is a substantial capacity improvement by using a different connectivity model for devices than for instances.

Two types of devices do not have two endpoints connected to nodes. An oaMutualInductor represents an electromagnetic relationship between two inductors (between devices rather than nodes). An oaCouplingCap that couples between two different parasitic networks can connect directly to an instTerm or term in the other network, rather than to a node.

Most parasitic devices have one value for each analysis point that the parasitic network represents. Each value reflects the parasitic effect applicable to the operating points associated with the corresponding analysis point. The oaSeriesRL device has two values for each analysis point, one resistance and one capacitance. The oaSeriesRL device can be used to improve capacity when a resistor and an inductor are connected in series and the node between them is not of interest.

From an electrical standpoint, a coupling capacitor can connect two different nodes in the same parasitic network, or it can connect two nodes in different networks. In OpenAccess, a particular coupling relationship between two different networks is represented separately for each of the networks, with an oaCouplingCap device in each network. This allows each network to be loaded independently and efficiently. Applications must explicitly create and destroy each oaCouplingCap in the pair for a given coupling relationship.

Mutual inductors are handled in a similar fashion. A mutual inductor relates two different inductors, which can be in the same network or in different networks. When the inductors are in different networks, each network has its own mutual inductor device. Applications must explicitly create and destroy each mutual inductor in the pair for a given coupling relationship.

Devices can have an integer ID that is chosen by the client that creates them. The ID is usually optional, but IDs are required for inductors that are referenced by a mutual inductor, as well as for coupling caps and mutual inductors. For coupling caps and mutual inductors that connect two different parasitic networks, the same ID can be specified when creating each device in the pair, which allows applications to match up the devices.

Any ID specified for local devices contained within a single network must be unique across all local devices in that network, regardless of type. Similarly, any ID specified for couplingCaps and mutual inductors that couple from a given network to a different network must be unique across all non-local devices in the given network. The getUniqueId() functions can be called to obtain consecutive IDs for local devices and non-local devices.

Devices can also have a name, which is an optional string chosen by the client that creates them. This is primarily useful for small custom designs, as assigning a separate name to every parasitic device in large digital designs is prohibitively expensive. Device names must be unique within the same network,

Undo, properties, and groups are not supported for oaDevice. Extensions on oaDevice (and interPointer extensions that refer to an oaDevice) are only accessible while the oaDevice is loaded.

The oaDevice class can be observed by deriving from oaObserver<oaDevice>.


Member Function Documentation

void oaDevice::addToSubNetwork oaSubNetwork *    subNetwork
 

This function adds this device to the specified subNetwork.

Parameters:
subNetwork The sub-network to which this device is to be added
Exceptions:
oacSubNetworkDeviceNotSameDesign 

void oaDevice::destroy  
 

This function destroys this device.

oaDevice * oaDevice::find const oaParasiticNetwork *    network,
const oaString &    name
[static]
 

This function finds and returns the device with the specified name.

Parameters:
network The parasitic network to search for the device
name The name of the device to look for

oaDevice * oaDevice::find const oaParasiticNetwork *    network,
oaUInt4    id,
oaBoolean    local
[static]
 

This function finds and returns the device with the specified id within network. Local devices contained with network will be considered when local is true. CouplingCaps and mutual inductors in network that couple to other networks will be considered when local is false.

Parameters:
network The parasitic network to search for the device
id The id of the device to look for
local A boolean indicating if the search is to be restricted to devices local to the network

oaUInt4 oaDevice::getId   const
 

This function returns the optional ID if one was assigned to the device when it was created.

void oaDevice::getName oaString &    name const
 

This function returns the name of this device. If no name has been set, an empty string is returned.

Parameters:
name A reference to an oaString object to be populated with the name of this device

oaParasiticNetwork * oaDevice::getParasiticNetwork   const
 

This function returns the parasiticNetwork to which this device belongs.

oaCollection oaDevice::getSubNetworks   const
 

This function returns a collection of the subNetworks to which this device belongs.

oaUInt4 oaDevice::getUniqueId oaDesign *    design [static]
 

This function returns a unique integer ID for a coupling cap or mutual inductor that couples between two different networks in the specified design.

Parameters:
design The design to use

oaUInt4 oaDevice::getUniqueId oaParasiticNetwork *    network [static]
 

This function returns a unique integer ID for a local device in the specified network.

Parameters:
network The parasitic network to determine the potential unique ID for this device

oaBoolean oaDevice::hasId   const
 

This function returns a boolean indicating whether or not this device has a user-specified ID associated with it.

oaBoolean oaDevice::isValidName const oaParasiticNetwork *    network,
const oaString &    name
[static]
 

This function returns a boolean value that indicates if the specified name is valid for a new oaDevice in the specified network.

Parameters:
network The parasitic network in whose domain the name is to be validated
name A reference to an oaString object holding the name to be validated

void oaDevice::removeFromSubNetwork oaSubNetwork *    subNetwork
 

This function removes this node from the specified subNetwork.

Parameters:
subNetwork The sub-network from which this node is to be removed

void oaDevice::setName const oaString &    name
 

This function sets the name of this device.

Parameters:
name A reference to an oaString object that holds the new name for this device
Exceptions:
oacDeviceNameExists 


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
dtIndex 

anonymous enum
 

Enumeration values:
domain 


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

Return to top of page