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

Name of BaseDatabase object.

params

BaseDatabase object's parameter dictionary.

elements

Element object dictionary.

noname_index

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).

summarize()

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
  • name (str) – BaseDatabase object name.

  • params (dict, optional) – parameters of BaseDatabase.

  • elements (dict, optional) – dictionary having the elements of BaseDatabase.

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

list

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.

summarize()[source]#

Get object information summary.

_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

dict

name = None#

Name of BaseDatabase object.

Example

>>> import laygo2
>>> base = laygo2.object.database.BaseDatabase(name="mycell")
>>> base.name
"mycell"

Notes

(Korean) BaseDatabase 이름.

Type

str

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

int

params = None#

BaseDatabase object’s parameter dictionary.

Example

>>> import laygo2
>>> base = laygo2.object.database.BaseDatabase(name="mycell",
               params={'ivdd': 0.001})
>>> base.params
{'ivdd': 0.001}

Notes

(Korean) BaseDatabase의 속성.

Type

dict or None