API reference - Class DeepShapeStore

Notation used in Ruby API documentation

Module: db

Description: An opaque layout heap for the deep region processor

This class is used for keeping intermediate, hierarchical data for the deep region processor. It is used in conjunction with the region constructor to create a deep (hierarchical) region.

layout = ... # a layout
layer = ...  # a layer
cell = ...   # a cell (initial cell for the deep region)
dss = RBA::DeepShapeStore::new
region = RBA::Region::new(cell.begin(layer), dss)

The DeepShapeStore object also supplies some configuration options for the operations acting on the deep regions. See for example threads=.

This class has been introduced in version 0.26.

Public constructors

new DeepShapeStore ptrnewCreates a new object of this class

Public methods

void_createEnsures the C++ object is created
void_destroyExplicitly destroys the object
[const]bool_destroyed?Returns a value indicating whether the object was already destroyed
[const]bool_is_const_object?Returns a value indicating whether the reference is a const reference
void_manageMarks the object as managed by the script side.
void_unmanageMarks the object as no longer owned by the script side.
voidadd_breakout_cell(unsigned int layout_index,
unsigned int[] cell_index)
Adds a cell indexe to the breakout cell list for the given layout inside the store
voidadd_breakout_cells(unsigned int layout_index,
unsigned int[] cells)
Adds cell indexes to the breakout cell list for the given layout inside the store
voidadd_breakout_cells(unsigned int layout_index,
string pattern)
Adds cells (given by a cell name pattern) to the breakout cell list for the given layout inside the store
voidadd_breakout_cells(string pattern)Adds cells (given by a cell name pattern) to the breakout cell list to all layouts inside the store
voidclear_breakout_cells(unsigned int layout_index)Clears the breakout cells
voidclear_breakout_cellsClears the breakout cells
[const]boolis_singular?Gets a value indicating whether there is a single layout variant
[const]doublemax_area_ratioGets the max. area ratio.
voidmax_area_ratio=(double ratio)Sets the max. area ratio for bounding box vs. polygon area
[const]unsigned longmax_vertex_countGets the maximum vertex count.
voidmax_vertex_count=(unsigned long count)Sets the maximum vertex count default value
voidpop_stateRestores the store's state on the state state
voidpush_statePushes the store's state on the state state
[const]boolreject_odd_polygonsGets a flag indicating whether to reject odd polygons.
voidreject_odd_polygons=(bool count)Sets a flag indicating whether to reject odd polygons
voidset_breakout_cells(unsigned int layout_index,
unsigned int[] cells)
Sets the breakout cell list (as cell indexes) for the given layout inside the store
voidset_breakout_cells(unsigned int layout_index,
string pattern)
Sets the breakout cell list (as cell name pattern) for the given layout inside the store
voidset_breakout_cells(string pattern)Sets the breakout cell list (as cell name pattern) for the all layouts inside the store
voidsubcircuit_hierarchy_for_nets=(bool value)Sets a value indicating whether to build a subcircuit hierarchy per net
voidsubcircuit_hierarchy_for_nets=(bool value)Gets a value indicating whether to build a subcircuit hierarchy per net
[const]inttext_enlargementGets the text enlargement value.
voidtext_enlargement=(int value)Sets the text enlargement value
[const]varianttext_property_nameGets the text property name.
voidtext_property_name=(variant name)Sets the text property name.
[const]intthreadsGets the number of threads.
voidthreads=(int n)Sets the number of threads to allocate for the hierarchical processor
[const]boolwants_all_cellsGets a flag wether to copy the full hierarchy for the working layouts
voidwants_all_cells=(bool flag)Sets a flag wether to copy the full hierarchy for the working layouts

Deprecated methods (protected, public, static, non-static and constructors)

voidcreateUse of this method is deprecated. Use _create instead
voiddestroyUse of this method is deprecated. Use _destroy instead
[const]booldestroyed?Use of this method is deprecated. Use _destroyed? instead
[const]boolis_const_object?Use of this method is deprecated. Use _is_const_object? instead

Detailed description

_create

Signature: void _create

Description: Ensures the C++ object is created

Use this method to ensure the C++ object is created, for example to ensure that resources are allocated. Usually C++ objects are created on demand and not necessarily when the script object is created.

_destroy

Signature: void _destroy

Description: Explicitly destroys the object

Explicitly destroys the object on C++ side if it was owned by the script interpreter. Subsequent access to this object will throw an exception. If the object is not owned by the script, this method will do nothing.

_destroyed?

Signature: [const] bool _destroyed?

Description: Returns a value indicating whether the object was already destroyed

This method returns true, if the object was destroyed, either explicitly or by the C++ side. The latter may happen, if the object is owned by a C++ object which got destroyed itself.

_is_const_object?

Signature: [const] bool _is_const_object?

Description: Returns a value indicating whether the reference is a const reference

This method returns true, if self is a const reference. In that case, only const methods may be called on self.

_manage

Signature: void _manage

Description: Marks the object as managed by the script side.

After calling this method on an object, the script side will be responsible for the management of the object. This method may be called if an object is returned from a C++ function and the object is known not to be owned by any C++ instance. If necessary, the script side may delete the object if the script's reference is no longer required.

Usually it's not required to call this method. It has been introduced in version 0.24.

_unmanage

Signature: void _unmanage

Description: Marks the object as no longer owned by the script side.

Calling this method will make this object no longer owned by the script's memory management. Instead, the object must be managed in some other way. Usually this method may be called if it is known that some C++ object holds and manages this object. Technically speaking, this method will turn the script's reference into a weak reference. After the script engine decides to delete the reference, the object itself will still exist. If the object is not managed otherwise, memory leaks will occur.

Usually it's not required to call this method. It has been introduced in version 0.24.

add_breakout_cell

Signature: void add_breakout_cell (unsigned int layout_index, unsigned int[] cell_index)

Description: Adds a cell indexe to the breakout cell list for the given layout inside the store

See clear_breakout_cells for an explanation of breakout cells.

This method has been added in version 0.26.1

add_breakout_cells

(1) Signature: void add_breakout_cells (unsigned int layout_index, unsigned int[] cells)

Description: Adds cell indexes to the breakout cell list for the given layout inside the store

See clear_breakout_cells for an explanation of breakout cells.

This method has been added in version 0.26.1

(2) Signature: void add_breakout_cells (unsigned int layout_index, string pattern)

Description: Adds cells (given by a cell name pattern) to the breakout cell list for the given layout inside the store

See clear_breakout_cells for an explanation of breakout cells.

This method has been added in version 0.26.1

(3) Signature: void add_breakout_cells (string pattern)

Description: Adds cells (given by a cell name pattern) to the breakout cell list to all layouts inside the store

See clear_breakout_cells for an explanation of breakout cells.

This method has been added in version 0.26.1

clear_breakout_cells

(1) Signature: void clear_breakout_cells (unsigned int layout_index)

Description: Clears the breakout cells

Breakout cells are a feature by which hierarchy handling can be disabled for specific cells. If cells are specified as breakout cells, they don't interact with neighbor or parent cells, hence are virtually isolated. Breakout cells are useful to shortcut hierarchy evaluation for cells which are otherwise difficult to handle. An example are memory array cells with overlaps to their neighbors: a precise handling of such cells would generate variants and the boundary of the array. Although precise, this behavior leads to partial flattening and propagation of shapes. In consequence, this will also result in wrong device detection in LVS applications. In such cases, these array cells can be declared 'breakout cells' which makes them isolated entities and variant generation does not happen.

See also set_breakout_cells and add_breakout_cells.

This method has been added in version 0.26.1

(2) Signature: void clear_breakout_cells

Description: Clears the breakout cells

See the other variant of clear_breakout_cells for details.

This method has been added in version 0.26.1

create

Signature: void create

Description: Ensures the C++ object is created

Use of this method is deprecated. Use _create instead

Use this method to ensure the C++ object is created, for example to ensure that resources are allocated. Usually C++ objects are created on demand and not necessarily when the script object is created.

destroy

Signature: void destroy

Description: Explicitly destroys the object

Use of this method is deprecated. Use _destroy instead

Explicitly destroys the object on C++ side if it was owned by the script interpreter. Subsequent access to this object will throw an exception. If the object is not owned by the script, this method will do nothing.

destroyed?

Signature: [const] bool destroyed?

Description: Returns a value indicating whether the object was already destroyed

Use of this method is deprecated. Use _destroyed? instead

This method returns true, if the object was destroyed, either explicitly or by the C++ side. The latter may happen, if the object is owned by a C++ object which got destroyed itself.

is_const_object?

Signature: [const] bool is_const_object?

Description: Returns a value indicating whether the reference is a const reference

Use of this method is deprecated. Use _is_const_object? instead

This method returns true, if self is a const reference. In that case, only const methods may be called on self.

is_singular?

Signature: [const] bool is_singular?

Description: Gets a value indicating whether there is a single layout variant

Specifically for network extraction, singular DSS objects are required. Multiple layouts may be present if different sources of layouts have been used. Such DSS objects are not usable for network extraction.

max_area_ratio

Signature: [const] double max_area_ratio

Description: Gets the max. area ratio.

Python specific notes:
The object exposes a readable attribute 'max_area_ratio'. This is the getter.

max_area_ratio=

Signature: void max_area_ratio= (double ratio)

Description: Sets the max. area ratio for bounding box vs. polygon area

This parameter is used to simplify complex polygons. It is used by create_polygon_layer with the default parameters. It's also used by boolean operations when they deliver their output.

Python specific notes:
The object exposes a writable attribute 'max_area_ratio'. This is the setter.

max_vertex_count

Signature: [const] unsigned long max_vertex_count

Description: Gets the maximum vertex count.

Python specific notes:
The object exposes a readable attribute 'max_vertex_count'. This is the getter.

max_vertex_count=

Signature: void max_vertex_count= (unsigned long count)

Description: Sets the maximum vertex count default value

This parameter is used to simplify complex polygons. It is used by create_polygon_layer with the default parameters. It's also used by boolean operations when they deliver their output.

Python specific notes:
The object exposes a writable attribute 'max_vertex_count'. This is the setter.

new

Signature: [static] new DeepShapeStore ptr new

Description: Creates a new object of this class

Python specific notes:
This method is the default initializer of the object.

pop_state

Signature: void pop_state

Description: Restores the store's state on the state state

This will restore the state pushed by push_state.

This method has been added in version 0.26.1

push_state

Signature: void push_state

Description: Pushes the store's state on the state state

This will save the stores state (threads, max_vertex_count, max_area_ratio, breakout cells ...) on the state stack. pop_state can be used to restore the state.

This method has been added in version 0.26.1

reject_odd_polygons

Signature: [const] bool reject_odd_polygons

Description: Gets a flag indicating whether to reject odd polygons.

This attribute has been introduced in version 0.27.

Python specific notes:
The object exposes a readable attribute 'reject_odd_polygons'. This is the getter.

reject_odd_polygons=

Signature: void reject_odd_polygons= (bool count)

Description: Sets a flag indicating whether to reject odd polygons

Some kind of 'odd' (e.g. non-orientable) polygons may spoil the functionality because they cannot be handled properly. By using this flag, the shape store we reject these kind of polygons. The default is 'accept' (without warning).

This attribute has been introduced in version 0.27.

Python specific notes:
The object exposes a writable attribute 'reject_odd_polygons'. This is the setter.

set_breakout_cells

(1) Signature: void set_breakout_cells (unsigned int layout_index, unsigned int[] cells)

Description: Sets the breakout cell list (as cell indexes) for the given layout inside the store

See clear_breakout_cells for an explanation of breakout cells.

This method has been added in version 0.26.1

(2) Signature: void set_breakout_cells (unsigned int layout_index, string pattern)

Description: Sets the breakout cell list (as cell name pattern) for the given layout inside the store

See clear_breakout_cells for an explanation of breakout cells.

This method has been added in version 0.26.1

(3) Signature: void set_breakout_cells (string pattern)

Description: Sets the breakout cell list (as cell name pattern) for the all layouts inside the store

See clear_breakout_cells for an explanation of breakout cells.

This method has been added in version 0.26.1

subcircuit_hierarchy_for_nets=

(1) Signature: void subcircuit_hierarchy_for_nets= (bool value)

Description: Sets a value indicating whether to build a subcircuit hierarchy per net

This flag is used to determine the way, net subcircuit hierarchies are built: when true, subcells are created for subcircuits on a net. Otherwise the net shapes are produced flat inside the cell they appear on.

This attribute has been introduced in version 0.28.4

Python specific notes:
The object exposes a writable attribute 'subcircuit_hierarchy_for_nets'. This is the setter.

(2) Signature: void subcircuit_hierarchy_for_nets= (bool value)

Description: Gets a value indicating whether to build a subcircuit hierarchy per net

See subcircuit_hierarchy_for_nets= for details.

This attribute has been introduced in version 0.28.4

Python specific notes:
The object exposes a writable attribute 'subcircuit_hierarchy_for_nets'. This is the setter.

text_enlargement

Signature: [const] int text_enlargement

Description: Gets the text enlargement value.

Python specific notes:
The object exposes a readable attribute 'text_enlargement'. This is the getter.

text_enlargement=

Signature: void text_enlargement= (int value)

Description: Sets the text enlargement value

If set to a non-negative value, text objects are converted to boxes with the given enlargement (width = 2 * enlargement). The box centers are identical to the original location of the text. If this value is negative (the default), texts are ignored.

Python specific notes:
The object exposes a writable attribute 'text_enlargement'. This is the setter.

text_property_name

Signature: [const] variant text_property_name

Description: Gets the text property name.

Python specific notes:
The object exposes a readable attribute 'text_property_name'. This is the getter.

text_property_name=

Signature: void text_property_name= (variant name)

Description: Sets the text property name.

If set to a non-null variant, text strings are attached to the generated boxes as properties with this particular name. This option has an effect only if the text_enlargement property is not negative. By default, the name is empty.

Python specific notes:
The object exposes a writable attribute 'text_property_name'. This is the setter.

threads

Signature: [const] int threads

Description: Gets the number of threads.

Python specific notes:
The object exposes a readable attribute 'threads'. This is the getter.

threads=

Signature: void threads= (int n)

Description: Sets the number of threads to allocate for the hierarchical processor

Python specific notes:
The object exposes a writable attribute 'threads'. This is the setter.

wants_all_cells

Signature: [const] bool wants_all_cells

Description: Gets a flag wether to copy the full hierarchy for the working layouts

This attribute has been introduced in version 0.28.10.

Python specific notes:
The object exposes a readable attribute 'wants_all_cells'. This is the getter.

wants_all_cells=

Signature: void wants_all_cells= (bool flag)

Description: Sets a flag wether to copy the full hierarchy for the working layouts

The DeepShapeStore object keeps a copy of the original hierarchy internally for the working layouts. By default, this hierarchy is mapping only non-empty cells. While the operations proceed, more cells may need to be added. This conservative approach saves some memory, but the update operations may reduce overall performance. Setting this flag to 'true' switches to a mode where the full hierarchy is copied always. This will take more memory but may save CPU time.

This attribute has been introduced in version 0.28.10.

Python specific notes:
The object exposes a writable attribute 'wants_all_cells'. This is the setter.