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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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]
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
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]
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
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]
def create_ref_point(self): return spira.Rectangle(p1=(-2.5, -2.5), p2=(2.5, 2.5), layer=spira.Layer(number=1))
def create_elements(self, elems): elems += spira.Rectangle(p1=(0,0), p2=(20,5), layer=spira.Layer(1)) return elems
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)
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')
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