IterablePhysicalObject class#
- class laygo2.object.physical.IterablePhysicalObject(xy, name=None, params=None, elements=None)[source]#
Bases:
PhysicalObject
The base class of entities capable of iterable operations among elements.
Public Data Attributes:
Numpy array containing its element objects.
Retrive x,y coordinate values of the object.
Array size of the object.
Inherited from
PhysicalObject
Object name.
Physical coordinate values of the object in the form of [bottom_left, top_right].
Master ojbect for current object (for arrays and pins).
Dictionary storing the parameters associated with the object
The dictionary containing the key-value pairs of the major physical coordinates of the object, such as 'left', 'right', 'top', 'bottom', 'bottom_left', 'center', etc.
The left-center coordinate of the object.
The right-center coordinate of the object.
The top-center coordinate of the object.
The bottom-center coordinate of the object.
The center-center coordinate of the object.
The bottom-left coordinate of the object.
The bottom-right coordinate of the object.
The top-left coordinate of the object.
The top-right coordinate of the object.
The physical bounding box of the object.
Public Methods:
__init__
(xy[, name, params, elements])The constructor function.
__getitem__
(pos)Return the sub-elements of the object, based on the pos parameter.
__setitem__
(pos, item)Update the sub-elements of the object, based on the pos and item parameters.
__iter__
()Iterator that maps directly to the elements attribute of this object.
__next__
()Iterator that maps directly to the iterator function of the elements attribute of this object.
Enumerate over the element array.
Inherited from
PhysicalObject
- __init__(xy, name=None, params=None, elements=None)[source]#
The constructor function.
- Parameters:
xy (numpy.ndarray) – Physical coordinate values of the object in the form of [bottom_left, top_right].
name (str) – Object name.
params (dict) – Dictionary storing the parameters associated with the object.
elements (list) – List containing its element objects.
- Return type:
Example
>>> import laygo2 >>> phy0 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [100, 100]]) >>> phy1 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [200, 200]]) >>> phy2 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [300, 300]]) >>> element = [phy0, phy1, phy2] >>> iphy0 = laygo2.object.physical.IterablePhysicalObject( xy=[[0, 0], [300, 300]], elements = elements) >>> print(iphy0) <laygo2.object.physical.IterablePhysicalObject object at 0x000002049A77E380> name: None, class: IterablePhysicalObject, xy: [[0, 0], [300, 300]], params: None,
- _update_elements(xy_ofst)[source]#
Update the xy coordinates of the elements of this object, used internally by the _set_xy() function.
- _update_pointers()#
The internal function that updates the object’s pointers after a change in its physical coordinates.
- ndenumerate()[source]#
Enumerate over the element array. Calls np.ndenumerate() of the elements of this object.
- summarize()#
Return the summary of the object information.
- _xy = array([0, 0])#
The x and y coordinate values stored within.
- Type:
numpy.ndarray(dtype=numpy.int)
- property bbox#
The physical bounding box of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.bbox array([[ 0, 0], [200, 200]])
- Type:
- bottom = None#
The bottom-center coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.top array([100, 0])
- Type:
- bottom_left = None#
The bottom-left coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.bottom_left array([ 0, 0])
- Type:
- bottom_right = None#
The bottom-right coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.bottom_right array([200, 0])
- Type:
- center = None#
The center-center coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.center array([100, 100])
- Type:
- elements = None#
Numpy array containing its element objects.
Example
>>> import laygo2 >>> phy0 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [100, 100]]) >>> phy1 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [200, 200]]) >>> phy2 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [300, 300]]) >>> element = [phy0, phy1, phy2] >>> iphy0 = laygo2.object.physical.IterablePhysicalObject( xy=[[0, 0], [300, 300]], elements = elements) >>> iphy0.elements array([<laygo2.object.physical.PhysicalObject object at 0x000002049A77FDF0>, <laygo2.object.physical.PhysicalObject object at 0x000002049A77F3D0>, <laygo2.object.physical.PhysicalObject object at 0x000002049A77FF40>], dtype=object)
- Type:
- left = None#
The left-center coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.left array([ 0, 100])
- Type:
- master = None#
Master ojbect for current object (for arrays and pins).
Example
>>> import laygo2 >>> obj1 = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]], name="test1", params=None) >>> obj2 = laygo2.object.physical.Pin(xy = [[0, 0], [100, 100]], layer = ["M1", "drawing"], master=obj1) >>> obj2.master <laygo2.object.physical.PhysicalObject object at 0x00000204AAF3C7C0>
- Type:
- name = None#
Object name.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]], name="test", params={'maxI': 0.005}) >>> obj.name “test”
- Type:
- params = None#
Dictionary storing the parameters associated with the object
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]], name="test", params={'maxI': 0.005}) >>> obj.params {‘maxI’: 0.005 }
- Type:
- pointers = None#
The dictionary containing the key-value pairs of the major physical coordinates of the object, such as ‘left’, ‘right’, ‘top’, ‘bottom’, ‘bottom_left’, ‘center’, etc.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.pointers {'left': array([0, 100]), 'right': array([200, 100]), 'bottom': array([100, 0]), 'top': array([100, 200]), 'bottom_left': array([0, 0]), 'bottom_right': array([200, 0]), 'top_left': array([0, 200]), 'top_right': array([200, 200]), ‘center’: array( [100, 100] ) }
- Type:
- right = None#
The right-center coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.right array([200, 100])
- Type:
- property shape#
Array size of the object.
Example
>>> import laygo2 >>> phy0 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [100, 100]]) >>> phy1 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [200, 200]]) >>> phy2 = laygo2.object.physical.PhysicalObject(xy=[[0, 0], [300, 300]]) >>> element = [phy0, phy1, phy2] >>> iphy0 = laygo2.object.physical.IterablePhysicalObject( xy=[[0, 0], [300, 300]], elements = elements) >>> iphy0.shape array([3])
- top = None#
The top-center coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.top array([100, 200])
- Type:
- top_left = None#
The top-left coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.top_left array([ 0, 200])
- Type:
- top_right = None#
The top-right coordinate of the object.
Example
>>> import laygo2 >>> obj = laygo2.object.physical.PhysicalObject(xy = [[0, 0], [200, 200]]) >>> obj.top_right array([200, 200])
- Type:
- property xy#
Retrive x,y coordinate values of the object.
- Type:
numpy.ndarray(dtype=numpy.int)