예제 #1
0
 def create_routes(self, elems):
     elems = spira.ElementalList()
     elems += spira.Rectangle(p1=(4, -4), p2=(146, 4), layer=RDD.PLAYER.M2.METAL)
     elems += spira.Rectangle(p1=(-3, -4), p2=(-30, 4), layer=RDD.PLAYER.M2.METAL)
     elems += spira.Rectangle(p1=(153, -4), p2=(180, 4), layer=RDD.PLAYER.M2.METAL)
     elems += spira.Rectangle(p1=(60, 0), p2=(80, 50), layer=RDD.PLAYER.M2.METAL)
     return elems
예제 #2
0
 def create_elements(self, elems):
     elems += spira.Rectangle(p1=(0, -0.5),
                              p2=(10, 0.5),
                              layer=RDD.PLAYER.M5.METAL)
     elems += spira.Rectangle(p1=(4.5, 0),
                              p2=(5.5, 15),
                              layer=RDD.PLAYER.M5.METAL)
     return elems
예제 #3
0
 def create_elements(self, elems):
     elems += spira.Rectangle(p1=(-7.5, -13.2),
                              p2=(7.5, -8.2),
                              layer=RDD.PLAYER.R1.METAL)
     elems += spira.Rectangle(p1=(-4, -12),
                              p2=(4.1, -10),
                              layer=RDD.PLAYER.C1.VIA)
     return elems
예제 #4
0
 def create_routes(self, elems):
     elems += spira.Rectangle(p1=(4, -4),
                              p2=(146, 4),
                              layer=RDD.PLAYER.M2.METAL)
     elems += spira.Rectangle(p1=(-3, -4),
                              p2=(-30, 4),
                              layer=RDD.PLAYER.M2.METAL)
     return elems
예제 #5
0
    def create_elementals(self, elems):

        elems += spira.Rectangle(p1=(60, 45), p2=(80, 80), layer=RDD.PLAYER.M2.METAL)

        c1 = spira.Cell(name='ply1')
        c1 += spira.Rectangle(p1=(60, 80), p2=(80, 100), layer=RDD.PLAYER.M2.METAL)
        c1 += spira.Rectangle(p1=(70, 60), p2=(100, 70), layer=RDD.PLAYER.M2.METAL)
        elems += spira.SRef(c1)
        
        return elems
예제 #6
0
    def create_elements(self, elems):

        group = spira.Group()
        group += spira.Rectangle(p1=(0, 0), p2=(10, 10), layer=spira.Layer(1))
        group += spira.Rectangle(p1=(0, 15), p2=(10, 30), layer=spira.Layer(1))

        group.transform(self.group_transform)

        elems += group

        bbox_shape = group.bbox_info.bounding_box(margin=1)
        elems += spira.Polygon(shape=bbox_shape, layer=spira.Layer(2))

        return elems
예제 #7
0
 def create_t1(self):
     T = self.get_transforms()
     ply = spira.Rectangle(p1=(0, 0),
                           p2=(self.width, self.length),
                           layer=spira.Layer(number=2))
     ply.transform(transformation=T)
     return ply
예제 #8
0
 def create_elements(self, elems):
     t1, t2 = self.get_transforms()
     elems += spira.SRef(alias='Sr2', reference=ResVia(), transformation=t2)
     elems += spira.Rectangle(p1=(-10, -55),
                              p2=(10, -35),
                              layer=RDD.PLAYER.M2.METAL)
     return elems
예제 #9
0
 def create_t2(self):
     T = spira.GenericTransform(rotation=-60)
     ply = spira.Rectangle(p1=(0, 0),
                           p2=(10, 50),
                           layer=spira.Layer(number=3),
                           transformation=T)
     return ply
예제 #10
0
 def create_t2(self):
     tf = spira.GenericTransform(translation=Coord(-22, 0))
     ply = spira.Rectangle(p1=(0, 0),
                           p2=(10, 50),
                           layer=spira.Layer(number=3),
                           transformation=tf)
     return ply
예제 #11
0
 def create_t1(self):
     T = spira.Rotation(rotation=-30)
     ply = spira.Rectangle(p1=(0, 0),
                           p2=(10, 50),
                           layer=spira.Layer(number=2))
     ply.transform(T)
     return ply
예제 #12
0
 def create_t1(self):
     T = spira.Translation(Coord(-10, 0))
     ply = spira.Rectangle(p1=(0, 0),
                           p2=(10, 50),
                           layer=spira.Layer(number=2))
     ply.transform(T)
     return ply
예제 #13
0
 def create_t1(self):
     cell = spira.Cell()
     cell += spira.Rectangle(p1=(0, 0),
                             p2=(10, 50),
                             layer=spira.Layer(number=2))
     T = spira.Rotation(-30)
     S = spira.SRef(cell, transformation=T)
     return S
예제 #14
0
 def create_t2(self):
     cell = spira.Cell()
     cell += spira.Rectangle(p1=(0, 0),
                             p2=(10, 50),
                             layer=spira.Layer(number=3))
     T = spira.GenericTransform(rotation=-60)
     S = spira.SRef(cell, transformation=T)
     return S
예제 #15
0
 def create_t3(self):
     cell = spira.Cell()
     cell += spira.Rectangle(p1=(0, 0),
                             p2=(10, 50),
                             layer=spira.Layer(number=4))
     S = spira.SRef(cell)
     S.rotate(-90)
     return S
예제 #16
0
 def create_elements(self, elems):
     t1, t2 = self.get_transforms()
     elems += spira.SRef(alias='Sj1', reference=Jj(), transformation=t1)
     elems += spira.SRef(alias='Sr1', reference=ResVia(), midpoint=(0, -8))
     elems += spira.Rectangle(p1=(-10, -23),
                              p2=(10, 10),
                              layer=RDD.PLAYER.M2.METAL)
     return elems
예제 #17
0
 def create_elements(self, elems):
     t1, t2 = self.get_transforms()
     elems += spira.Rectangle(p1=(-13, -60),
                              p2=(13, 12),
                              layer=RDD.PLAYER.M1.METAL)
     elems += spira.SRef(alias='S1', reference=Top(), transformation=t1)
     elems += spira.SRef(alias='S2', reference=Bot(), transformation=t2)
     return elems
예제 #18
0
    def create_elements(self, elems):

        group = spira.Group()
        # group += spira.Rectangle(p1=(0,0), p2=(10,10), layer=spira.Layer(1))
        # group += spira.Rectangle(p1=(0,15), p2=(10,30), layer=spira.Layer(1))
        group += spira.Rectangle(p1=(0,0), p2=(10,10), layer=spira.RDD.PLAYER.M1.METAL)
        group += spira.Rectangle(p1=(0,15), p2=(10,30), layer=spira.RDD.PLAYER.M1.METAL)

        group.transform(spira.Rotation(-45))

        elems += group

        bbox_shape = group.bbox_info.bounding_box(margin=1)
        # elems += spira.Polygon(shape=bbox_shape, layer=spira.Layer(2))
        elems += spira.Polygon(shape=bbox_shape, layer=spira.RDD.PLAYER.M2.METAL)

        return elems
예제 #19
0
 def create_elementals(self, elems):
     # elems += spira.SRef(reference=ResistorCell())
     elems += self.res
     elems += spira.Rectangle(alias='M3',
                              p1=(-10, -15),
                              p2=(10, 15),
                              layer=RDD.PLAYER.M3.METAL)
     return elems
예제 #20
0
 def create_t3(self):
     ply = spira.Rectangle(p1=(0, 0),
                           p2=(10, 50),
                           layer=spira.Layer(number=4))
     ply.translate((30, 0))
     ply.rotate(90)
     # FIXME: Reflection is not working.
     ply.reflect(True)
     return ply
예제 #21
0
 def create_t3(self):
     cell = spira.Cell()
     tf_1 = spira.Translation(Coord(12.5, 2.5)) + spira.Rotation(60)
     tf_2 = spira.Translation(Coord(
         12.5, 2.5)) + spira.Rotation(60) + spira.Reflection(True)
     cell += spira.Rectangle(p1=(0, 0),
                             p2=(10, 50),
                             layer=spira.Layer(number=4))
     S1 = spira.SRef(cell, transformation=tf_1)
     S2 = spira.SRef(cell, transformation=tf_2)
     return [S1, S2]
예제 #22
0
    def create_elementals(self, elems):

        c1 = ResistorCell()
        s1 = spira.SRef(c1)
        elems += s1

        elems += spira.Rectangle(p1=(-10 * 1e6, -15 * 1e6),
                                 p2=(10 * 1e6, 15 * 1e6),
                                 layer=RDD.PLAYER.M2.METAL)

        return elems
예제 #23
0
 def create_t2(self):
     cell = spira.Cell()
     tf_1 = spira.GenericTransform(translation=(10, 10), rotation=45)
     tf_2 = spira.GenericTransform(translation=Coord(10, 10),
                                   rotation=45,
                                   reflection=True)
     cell += spira.Rectangle(p1=(0, 0),
                             p2=(10, 50),
                             layer=spira.Layer(number=3))
     S1 = spira.SRef(cell, transformation=tf_1)
     S2 = spira.SRef(cell, transformation=tf_2)
     return [S1, S2]
예제 #24
0
    def create_elements(self, elems):
        t1, t2 = self.get_transforms()

        jj = Junction()

        elems += spira.SRef(alias='ref_jj1', reference=jj, transformation=t1)
        elems += spira.SRef(alias='ref_jj2', reference=jj, midpoint=(150, 0))
        # elems += spira.SRef(alias='ref_jj2', reference=jj, transformation=t2)

        # elems += spira.Rectangle(p1=(7, -13), p2=(143, 1), layer=spira.Layer(number=2))
        elems += spira.Rectangle(p1=(7, -13), p2=(143, 1), layer=RDD.PLAYER.M2.METAL)

        return elems
예제 #25
0
    def create_t1(self):
        cell = spira.Cell()
        cell += spira.Rectangle(p1=(0, 0),
                                p2=(10, 50),
                                layer=spira.Layer(number=2))

        S1 = spira.SRef(cell)
        S1.rotate(rotation=45)
        S1.translate(Coord(15, 15))

        S = spira.SRef(cell)
        S.rotate(rotation=45)
        S.translate(Coord(15, 15))
        S.reflect(True)

        return [S1, S]
예제 #26
0
 def create_ref_point(self):
     return spira.Rectangle(p1=(-2.5, -2.5),
                            p2=(2.5, 2.5),
                            layer=spira.Layer(number=1))
예제 #27
0
 def create_elements(self, elems):
     elems += spira.Rectangle(p1=(0,0), p2=(20,5), layer=spira.Layer(1))
     return elems
예제 #28
0
import numpy as np
import spira.all as spira

from spira.yevon.vmodel.virtual import virtual_connect
from spira.yevon.filters.boolean_filter import MetalConnectFilter
from spira.technologies.mit.process import RDD

el = spira.ElementList()

p1 = spira.Rectangle(p1=(0, 0), p2=(4, 10), layer=RDD.PLAYER.M5.METAL)
p2 = spira.Rectangle(p1=(0, 0), p2=(4, 12), layer=RDD.PLAYER.M5.METAL)
# FIXME: Throught a weird polygon error.
# p2 = spira.Rectangle(p1=(0, 0), p2=(4, 10), layer=RDD.PLAYER.M5.METAL)
p2.shape.move(pos=(7, 0))
el += [p1, p2]

el += spira.Rectangle(p1=(3, 4), p2=(8, 6), layer=RDD.PLAYER.M5.METAL)

# el += spira.Rectangle(p1=(8, 4), p2=(-4, 6), layer=RDD.PLAYER.M5.METAL)

# el += spira.Rectangle(p1=(-4, 4), p2=(1, 6), layer=RDD.PLAYER.M5.METAL)
# el += spira.Rectangle(p1=(3, 4), p2=(8, 6), layer=RDD.PLAYER.M5.METAL)

# el += spira.Rectangle(p1=(-4, 8), p2=(8, 12), layer=RDD.PLAYER.M5.METAL)

# el += spira.Rectangle(p1=(1, 9), p2=(3, 14), layer=RDD.PLAYER.M5.METAL)

# el += spira.Rectangle(p1=(-1, 9), p2=(5, 14), layer=RDD.PLAYER.M5.METAL)

# NOTE: Edge cases.
# el += spira.Rectangle(p1=(0, 10), p2=(4, 14), layer=RDD.PLAYER.M5.METAL)
예제 #29
0
import spira.all as spira
from spira.yevon import filters
from spira.yevon import constants
from spira.all import RDD

ply1 = spira.Rectangle(p1=(0, 0), p2=(10, 2), layer=RDD.PLAYER.M1.METAL)
D = spira.Cell(name='TopLevel', elements=[ply1])

# D += ply1.edges

for edge in ply1.edges:
    EF = filters.EdgeToPolygonFilter()
    D += EF(edge)

# for e in ply1.edges:
# D += spira.EdgeAdapter(original_edge=e, edge_type=constants.EDGE_TYPE_OUTSIDE)

# EF = filters.EdgeFilter(edge_type=constants.EDGE_TYPE_OUTSIDE)
# D = EF(D)

D.gdsii_output(file_name='Edges')
예제 #30
0
 def create_elementals(self, elems):
     elems += spira.Rectangle(alias='RES',
                              p1=(-5 * 1e6, -10 * 1e6),
                              p2=(5 * 1e6, 10 * 1e6),
                              layer=RDD.PLAYER.M3.METAL)
     return elems