Exemple #1
0
 def add(self, item):
     import spira.all as spira
     from spira.yevon.gdsii.cell_list import CellList
     cells = CellList()
     for e in self._list:
         cells.add(e.dependencies())
     return cells
Exemple #2
0
class Library(__Library__):
    """ 
    Library contains all the cell and pcell informartion
    of a given layout connected to a RDD. 
    
    Examples
    --------
    >>> lib = spira.Library(name='LIB')
    """

    name = StringParameter(doc='Unique name for the library.')
    accessed = TimeParameter(
        doc='Timestamp at which the library was accessed.')
    modified = TimeParameter(
        doc='Timestamp at which the library was modified.')

    def __init__(self, name='spira_library', infile=None, **kwargs):
        # super().__init__(name=name, infile=None, **kwargs)
        __Library__.__init__(self, name=name, **kwargs)
        # gdspy.GdsLibrary.__init__(self, name=name, infile=None, **kwargs)
        self.cells = CellList()
        self.graphs = list()

    def __repr__(self):
        class_string = "[SPiRA: Library(\'{}\')] ({} cells)"
        return class_string.format(self.name, self.cells.__len__())

    def __str__(self):
        return self.__repr__()

    def referenced_structures(self):
        referred_to_list = list()
        for s in self.cells:
            referred_to_list.append(s.dependencies())
        return referred_to_list

    def get_cell(self, cell_name):
        for C in self.cells:
            if C.name == cell_name:
                return C
        return None

    def is_empty(self):
        return len(self.cells) == 0

    def clear(self):
        self.cells.clear()
Exemple #3
0
 def dependencies(self):
     from spira.yevon.gdsii.cell_list import CellList
     d = CellList()
     d.add(self.reference)
     d.add(self.reference.dependencies())
     return d
Exemple #4
0
 def dependencies(self):
     from spira.yevon.gdsii.cell_list import CellList
     cells = CellList()
     for e in self._list:
         cells.add(e.dependencies())
     return cells
Exemple #5
0
 def __init__(self, name='spira_library', infile=None, **kwargs):
     # super().__init__(name=name, infile=None, **kwargs)
     __Library__.__init__(self, name=name, **kwargs)
     # gdspy.GdsLibrary.__init__(self, name=name, infile=None, **kwargs)
     self.cells = CellList()
     self.graphs = list()
Exemple #6
0
 def referenced_cells(self):
     referred_to_list = CellList()
     for c in self.cells:
         referred_to_list.append(c.dependencies())
     return referred_to_list
Exemple #7
0
 def __init__(self, name='spira_library', infile=None, **kwargs):
     super().__init__(name=name, **kwargs)
     self.cells = CellList()
     self.graphs = list()
Exemple #8
0
class Library(UnitGridContainer, MixinBowl):
    """ 
    Library contains all the cell and pcell informartion
    of a given layout connected to a RDD. 

    Examples
    --------
    >>> lib = spira.Library(name='LIB')
    """

    name = StringParameter(doc='Unique name for the library.')
    accessed = TimeParameter(
        doc='Timestamp at which the library was accessed.')
    modified = TimeParameter(
        doc='Timestamp at which the library was modified.')

    def __init__(self, name='spira_library', infile=None, **kwargs):
        super().__init__(name=name, **kwargs)
        self.cells = CellList()
        self.graphs = list()

    def __repr__(self):
        class_string = "[SPiRA: Library(\'{}\')] ({} cells)"
        return class_string.format(self.name, self.cells.__len__())

    def __str__(self):
        return self.__repr__()

    def __len__(self):
        return len(self.cells)

    def __getitem__(self, index):
        return self.cells[index]

    def __contains__(self, item):
        return self.cells.__contains__(item)

    def __iadd__(self, other):
        if isinstance(other, Cell):
            self.cells.add(other)
            for d in other.dependencies():
                self.cells.add(d)
        elif isinstance(other, ElementList):
            for d in other.dependencies():
                self.cells.add(d)
        return self

    def __eq__(self, other):
        if not isinstance(other, Library):
            return False
        if len(self.cells) != len(other.cells):
            return False
        for cell1, cells in zip(self.cells, other.cells):
            if cell1.name != cell2.name:
                return False
        return True

    def __ne__(self, other):
        return not self.__eq__(other)

    def referenced_cells(self):
        referred_to_list = CellList()
        for c in self.cells:
            referred_to_list.append(c.dependencies())
        return referred_to_list

    def get_cell(self, cell_name):
        for C in self.cells:
            if C.name == cell_name:
                return C
        return None

    def is_empty(self):
        return len(self.cells) == 0