BaseDatabase class#
- class laygo2.object.database.BaseDatabase(name, params=None, elements=None)[source]#
Bases:
Generic
[laygo2._typing.T
]A base class that implements basic functions for various database objects, such as libraries and designs.
Notes
(Korean) BaseDatabase는 데이터베이스 객체들의 기본 기능을 구현하는 클래스.
Public Data Attributes:
Name of BaseDatabase object.
BaseDatabase object's parameter dictionary.
Element object dictionary.
Unique identifier index for unnamed objects.
Public Methods:
keys
()Keys of elements.
items
()Key-object pairs of elements.
__getitem__
()Return the object corresponding to pos.
__setitem__
(key, item)Add key/object pair.
append
(item)Add physical object to BaseDatabase without taking any further actions.
__iter__
()Element-mapped direct iterator function.
__str__
()Return str(self).
Get object information summary.
__init__
(name[, params, elements])BaseDatabase class constructor function.
Inherited from
Generic
__class_getitem__
(params)__init_subclass__
(*args, **kwargs)This method is called when a class is subclassed.
- __init__(name, params=None, elements=None)[source]#
BaseDatabase class constructor function.
- Parameters
- Return type
laygo2.object.BaseDatabase
Example
>>> import laygo2 >>> base = laygo2.object.database.BaseDatabase(name='mycell') >>> print(base) <laygo2.object.database.BaseDatabase object> name: mycell, params: None elements: {}>
Notes
(Korean) BaseDatabase 클래스 생성자 함수.
- 파라미터
name(str): BaseDatabase 객체의 이름
params(dict): BaseDatabase의 parameters [optional]
elements(dict): BaseDatabase의 elements를 갖고 있는 dict [optional]
- 반환값
laygo2.object.BaseDatabase
- append(item)[source]#
Add physical object to BaseDatabase without taking any further actions.
- Parameters
item (laygo2.object.physical.PhysicalObject) – Physical object to be added.
- Returns
List of item name and item ([item.name, item]).
- Return type
Example
>>> import laygo2 >>> from laygo2.object.database import BaseDatabase >>> from laygo2.object.physical import Rect, Pin, Instance, Text >>> # Create a design >>> dsn = Design(name="mycell", libname="genlib") >>> # Create layout objects >>> r0 = Rect(xy=[[0, 0], [100, 100]], layer=["M1", "drawing"]) >>> p0 = Pin(xy=[[0, 0], [50, 50]], layer=["M1", "pin"], name="P") >>> i0 = Instance(libname="tlib", cellname="t0", name="I0", xy=[0, 0]) >>> t0 = Text(xy=[[50, 50], [100, 100]], layer=["text", "drawing"], text="T") >>> dsn.append(r0) >>> dsn.append(p0) >>> dsn.append(i0) >>> dsn.append(t0) >>> print(dsn) <laygo2.object.database.BaseDatabase object at 0x0000024C6C2EF010> name: mycell, params: None elements: { 'NoName_0': <laygo2.object.physical.Rect object at 0x0000024C6C230F40>, 'P': <laygo2.object.physical.Pin object at 0x0000024C6C2EFF40>, 'I0': <laygo2.object.physical.Instance object at 0x0000024C6C2EFDC0>, 'NoName_1': <laygo2.object.physical.Text object at 0x0000024C6C2EF8B0>}
- items()[source]#
Key-object pairs of elements.
- Parameters
None –
- Return type
dict_items
Example
>>> import laygo2 >>> from laygo2.object.database import BaseDatabase >>> from laygo2.object.physical import Rect, Pin, Instance, Text >>> # Create a design >>> dsn = BaseDatabase(name="mycell") >>> # Create layout objects >>> r0 = Rect(xy=[[0, 0], [100, 100]], layer=["M1", "drawing"]) >>> p0 = Pin(xy=[[0, 0], [50, 50]], layer=["M1", "pin"], name="P") >>> i0 = Instance(libname="tlib", cellname="t0", name="I0", xy=[0, 0]) >>> t0 = Text(xy=[[50, 50], [100, 100]], layer=["text", "drawing"], text="T") >>> dsn.append(r0) >>> dsn.append(p0) >>> dsn.append(i0) >>> dsn.append(t0) >>> print(dsn.items()) dict_items([('NoName_0', <laygo2.object.physical.Rect object at 0x0000024C6C230F40>), ('P', <laygo2.object.physical.Pin object at 0x0000024C6C2EFF40>), ('I0', <laygo2.object.physical.Instance object at 0x0000024C6C2EFDC0>), ('NoName_1', <laygo2.object.physical.Text object at 0x0000024C6C2EF8B0>)])
Notes
(Korean) elements의 key/object 짝 출력.
- keys()[source]#
Keys of elements.
Example
>>> import laygo2 >>> from laygo2.object.database import BaseDatabase >>> from laygo2.object.physical import Rect, Pin, Instance, Text >>> # Create a design >>> dsn = BaseDatabase(name="mycell") >>> # Create layout objects >>> r0 = Rect(xy=[[0, 0], [100, 100]], layer=["M1", "drawing"]) >>> p0 = Pin(xy=[[0, 0], [50, 50]], layer=["M1", "pin"], name="P") >>> i0 = Instance(libname="tlib", cellname="t0", name="I0", xy=[0, 0]) >>> t0 = Text(xy=[[50, 50], [100, 100]], layer=["text", "drawing"], text="T") >>> dsn.append(r0) >>> dsn.append(p0) >>> dsn.append(i0) >>> dsn.append(t0) >>> print(dsn.keys()) dict_keys(['NoName_0', 'P', 'I0', 'NoName_1'])
Notes
(Korean) BaseDatabase 객체의 구성 요소를 담고 있는 Dictionary.
- _is_protocol = False#
- elements: Dict[str, Type[Union[laygo2.object.physical.PhysicalObject, laygo2._typing.T]]] = None#
Element object dictionary.
Example
>>> import laygo2 >>> from laygo2.object.database import BaseDatabase >>> from laygo2.object.physical import Rect, Pin, Instance, Text >>> # Create a design. >>> dsn = BaseDatabase(name="mycell") >>> # Create layout objects. >>> r0 = Rect(xy=[[0, 0], [100, 100]], layer=["M1", "drawing"]) >>> p0 = Pin(xy=[[0, 0], [50, 50]], layer=["M1", "pin"], name="P") >>> i0 = Instance(libname="tlib", cellname="t0", name="I0", xy=[0, 0]) >>> t0 = Text(xy=[[50, 50], [100, 100]], layer=["text", "drawing"], text="T") >>> # Add layout objects to the design. >>> dsn.append(r0) >>> dsn.append(p0) >>> dsn.append(i0) >>> dsn.append(t0) >>> # >>> # Display elements of the design. >>> print(dsn.elements) {'NoName_0': <laygo2.object.physical.Rect object at 0x0000024C6C230F40>, 'P': <laygo2.object.physical.Pin object at 0x0000024C6C2EFF40>, 'I0': <laygo2.object.physical.Instance object at 0x0000024C6C2EFDC0>, 'NoName_1': <laygo2.object.physical.Text object at 0x0000024C6C2EF8B0>}
Notes
(Korean) BaseDatabase 객체의 구성 요소를 담고 있는 Dictionary.
- Type
- name = None#
Name of BaseDatabase object.
Example
>>> import laygo2 >>> base = laygo2.object.database.BaseDatabase(name="mycell") >>> base.name "mycell"
Notes
(Korean) BaseDatabase 이름.
- Type
- noname_index = 0#
Unique identifier index for unnamed objects.
Example
>>> import laygo2 >>> from laygo2.object.database import BaseDatabase >>> from laygo2.object.physical import Rect, Pin, Instance, Text >>> # Create a design >>> dsn = BaseDatabase(name="mycell") >>> # Create layout objects >>> r0 = Rect(xy=[[0, 0], [100, 100]], layer=["M1", "drawing"]) >>> dsn.append(r0) >>> print(base.noname_index) 0 >>> r1 = Rect(xy=[[100, 100], [200, 200]], layer=["M1", "drawing"]) >>> dsn.append(r1) >>> print(base.noname_index) 1
Notes
(Korean) BaseDatabase의 소속 객체들 중 이름이 정해지지 않은 객체의 이름을 정할 때 부여되는 고유 번호.
- Type