def _generate_instances(self, insts): x_inc = self.mysingleObstacle.gap_btw_barriers * 1 + self.mysingleObstacle.obstacle_trap_radius * 2 y_inc = self.mysingleObstacle.obstacle_trap_radius * 2 + self.mysingleObstacle.gap_btw_barriers cycles_x = int(self.wholeTrapX / (self.mysingleObstacle.gap_btw_barriers + self.mysingleObstacle.obstacle_trap_radius * 2)) cycles_y = int(self.wholeTrapY / (y_inc)) insts += i3.ARef( reference=self.mysingleObstacle, origin=(0, 0.0 * self.cell.wholeTrapY), period=(x_inc, 0), n_o_periods=(cycles_x, 1), #transformation=i3.Rotation((0.0, 0.0), 40.0) ) xf = self.mysingleObstacle.gap_btw_barriers + self.mysingleObstacle.obstacle_trap_radius * 0.5 insts += i3.ARef( reference=self.mysingleObstacle, origin=(xf, y_inc), period=(x_inc, 0), n_o_periods=(cycles_x, 1), #transformation=i3.Rotation((0.0, 0.0), 40.0) ) insts += i3.SRef(reference=self.rightFilling, position=(cycles_x * x_inc, 0)) insts += i3.SRef(reference=self.leftFilling, position=(0, y_inc)) #transformation=i3.Rotation((0.0, 0.0), 40.0) print 'insts', insts return insts
def _generate_elements(self, elems): elems += i3.Rectangle( layer=i3.TECH.PPLAYER.PPLUS.LINE, center=(0, 10000), # change box_size=(190, 30000)) elems += i3.Rectangle( layer=i3.TECH.PPLAYER.PPLUS.LINE, center=(10000, 10000), # change box_size=(190, 30000)) elems += i3.Rectangle( layer=i3.TECH.PPLAYER.PPLUS.LINE, center=(6000 + 13905 + 190 / 2, 10000), # change box_size=(190, 30000)) elems += i3.Rectangle( layer=i3.TECH.PPLAYER.PPLUS.LINE, center=(5000, 15000), # change box_size=(30000, 190)) elems += i3.Rectangle( layer=i3.TECH.PPLAYER.SIL.LINE, center=(0, 10000), # change box_size=(210, 30000)) Medphab = mmi_slots_cell_test() elems += i3.ARef(n_o_periods=(2, 6), period=(20000, 5000), reference=Medphab, origin=(-21400, 13625)) return elems
def _generate_elements(self, elems): from ..metal.contact import CONTACT_STD elems += i3.Line(layer=i3.TECH.PPLAYER.GE, begin_coord=(0.0, 0.0), end_coord=(self.length, 0.0), line_width=self.width) elems += i3.Line(layer=i3.TECH.PPLAYER.N, begin_coord=(0.0, self.contact_offset), end_coord=(self.length, self.contact_offset), line_width=1.0) elems += i3.Line(layer=i3.TECH.PPLAYER.P, begin_coord=(0.0, -self.contact_offset), end_coord=(self.length, -self.contact_offset), line_width=1.0) elems += i3.Wedge(layer=i3.TECH.PPLAYER.SI, begin_coord=(-5.0, 0.0), end_coord=(0.0, 0.0), begin_width=0.45, end_width=self.taper_width) elems += i3.ARef( reference=CONTACT_STD(), origin=(0.5 * self.contact_pitch, self.contact_offset), period=(self.contact_pitch, 0.0), n_o_periods=(int(np.floor(self.length / self.contact_pitch)), 1)) elems += i3.ARef( reference=CONTACT_STD(), origin=(0.5 * self.contact_pitch, -self.contact_offset), period=(self.contact_pitch, 0.0), n_o_periods=(int(np.floor(self.length / self.contact_pitch)), 1)) elems += i3.Boundary(layer=i3.TECH.PPLAYER.M1, shape=[ (0.0, self.contact_offset - 0.5), (self.length, self.contact_offset - 0.5), (self.length, self.contact_offset + 2.0), (0.0, self.contact_offset + 2.0) ]) elems += i3.Boundary(layer=i3.TECH.PPLAYER.M1, shape=[ (0.0, -self.contact_offset + 0.5), (self.length, -self.contact_offset + 0.5), (self.length, -self.contact_offset - 2.0), (0.0, -self.contact_offset - 2.0) ]) return elems
def _generate_instances(self, insts): from numpy import floor via_span_x = min(self.metal1_size[0], self.metal2_size[0]) via_span_y = min(self.metal1_size[1], self.metal2_size[1]) periods_x = int(floor(via_span_x / self.via_pitch[0])) periods_y = int(floor(via_span_y / self.via_pitch[1])) insts += i3.ARef(reference=self.via, origin=(-0.5 * via_span_x + 0.5 * self.via_pitch[0], -0.5 * via_span_y + 0.5 * self.via_pitch[1]), period=self.via_pitch, n_o_periods=(periods_x, periods_y)) return insts
def _generate_instances(self, insts): x_inc = (self.mysingleObstacle.gap_btw_barriers + self.mysingleObstacle.obstacle_trap_length) * 2 y_inc = self.mysingleObstacle.channel_trap_width * 1.5 cycles_x = int(self.wholeTrapX / ((self.mysingleObstacle.gap_btw_barriers + self.mysingleObstacle.obstacle_trap_length) * 2)) cycles_y = int(self.wholeTrapY / (y_inc)) insts += i3.ARef(reference=self.mysingleObstacle, origin=(0, 0.0 * self.cell.wholeTrapY), period=(x_inc, y_inc), n_o_periods=(cycles_x, cycles_y)) print 'insts', insts return insts
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position # RELEASE release = Release( length=self.length, width=self.width, ) # release = i3.Rectangle(layer=i3.Layer(number=1, name="release"), center=(0, 0), # box_size=(self.length, self.width)) # elems += i3.SRef(reference=release, position=self.position) Error dx = 918.125 # 800nm coupon for i in range(0, 3, 1): elems += i3.ARef(n_o_periods=(3, 7), period=(159.5, 210), reference=release, origin=(640.5 + i * dx, 468.4)) elems += i3.ARef(n_o_periods=(3, 7), period=(159.5, 210), reference=release, origin=(640.5 + i * dx, 538.4)) elems += i3.ARefY(n_o_periods_1d=7, period_1d=210, reference=release, origin=(560.75 + i * dx, 511.6)) dy = 1725 elems += i3.ARef(n_o_periods=(3, 15), period=(159.5, 210), reference=release, origin=(640.5 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(3, 15), period=(159.5, 210), reference=release, origin=(640.5 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=15, period_1d=210, reference=release, origin=(560.75 + i * dx, 511.6 + dy)) dy = 5060 elems += i3.ARef(n_o_periods=(3, 15), period=(159.5, 210), reference=release, origin=(640.5 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(3, 15), period=(159.5, 210), reference=release, origin=(640.5 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=15, period_1d=210, reference=release, origin=(560.75 + i * dx, 511.6 + dy)) dy = 8395 elems += i3.ARef(n_o_periods=(3, 8), period=(159.5, 210), reference=release, origin=(640.5 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(3, 7), period=(159.5, 210), reference=release, origin=(640.5 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=7, period_1d=210, reference=release, origin=(560.75 + i * dx, 511.6 + dy)) dx += 200 # 1000nm coupon for i in range(0, 3, 1): elems += i3.ARef(n_o_periods=(4, 7), period=(167.6, 210), reference=release, origin=(3402.975 + i * dx, 468.4)) elems += i3.ARef(n_o_periods=(4, 7), period=(167.6, 210), reference=release, origin=(3402.975 + i * dx, 538.4)) elems += i3.ARefY(n_o_periods_1d=7, period_1d=210, reference=release, origin=(3319.175 + i * dx, 511.6)) dy = 1725 elems += i3.ARef(n_o_periods=(4, 15), period=(167.6, 210), reference=release, origin=(3402.975 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(4, 15), period=(167.6, 210), reference=release, origin=(3402.975 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=15, period_1d=210, reference=release, origin=(3319.175 + i * dx, 511.6 + dy)) dy = 5060 elems += i3.ARef(n_o_periods=(4, 15), period=(167.6, 210), reference=release, origin=(3402.975 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(4, 15), period=(167.6, 210), reference=release, origin=(3402.975 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=15, period_1d=210, reference=release, origin=(3319.175 + i * dx, 511.6 + dy)) dy = 8395 elems += i3.ARef(n_o_periods=(4, 8), period=(167.6, 210), reference=release, origin=(3402.975 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(4, 7), period=(167.6, 210), reference=release, origin=(3402.975 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=7, period_1d=210, reference=release, origin=(3319.175 + i * dx, 511.6 + dy)) dx += 200 # 1200nm coupon for i in range(0, 3, 1): elems += i3.ARef(n_o_periods=(5, 7), period=(173, 210), reference=release, origin=(6762.75 + i * dx, 468.4)) elems += i3.ARef(n_o_periods=(5, 7), period=(173, 210), reference=release, origin=(6762.75 + i * dx, 538.4)) elems += i3.ARefY(n_o_periods_1d=7, period_1d=210, reference=release, origin=(6676.25 + i * dx, 511.6)) dy = 1725 elems += i3.ARef(n_o_periods=(5, 15), period=(173, 210), reference=release, origin=(6762.75 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(5, 15), period=(173, 210), reference=release, origin=(6762.75 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=15, period_1d=210, reference=release, origin=(6676.25 + i * dx, 511.6 + dy)) dy = 5060 elems += i3.ARef(n_o_periods=(5, 15), period=(173, 210), reference=release, origin=(6762.75 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(5, 15), period=(173, 210), reference=release, origin=(6762.75 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=15, period_1d=210, reference=release, origin=(6676.25 + i * dx, 511.6 + dy)) dy = 8395 elems += i3.ARef(n_o_periods=(5, 8), period=(173, 210), reference=release, origin=(6762.75 + i * dx, 468.4 + dy)) elems += i3.ARef(n_o_periods=(5, 7), period=(173, 210), reference=release, origin=(6762.75 + i * dx, 538.4 + dy)) elems += i3.ARefY(n_o_periods_1d=7, period_1d=210, reference=release, origin=(6676.25 + i * dx, 511.6 + dy)) return elems
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position # RELEASE release = Release( length=self.length, width=self.width, ) # elems += i3.SRef(reference=release, position=self.position) elems += i3.ARef(n_o_periods=(3, self.nb), period=(self.length + 250, 210), reference=release, origin=(x0, y0)) elems += i3.ARef(n_o_periods=(3, self.nb), period=(self.length + 250, 280), reference=release, origin=(x0, y0 + 210 * self.nb - (210 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(3, self.nb), period=(self.length + 250, 350), reference=release, origin=(x0, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(3, self.nb), period=(self.length + 250, 420), reference=release, origin=(x0, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space + 350 * self.nb - (350 - self.width) + self.space)) elems += i3.ARef(n_o_periods=(2, self.nb), period=(self.length + 500, 210), reference=release, origin=(x0 + 9250 - self.shrink * 3, y0)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 500, 280), reference=release, origin=(x0 + 9250 - self.shrink * 3, y0 + 210 * self.nb - (210 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 500, 350), reference=release, origin=(x0 + 9250 - self.shrink * 3, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 500, 420), reference=release, origin=(x0 + 9250 - self.shrink * 3, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space + 350 * self.nb - (350 - self.width) + self.space)) elems += i3.ARef(n_o_periods=(2, self.nb), period=(self.length + 750, 210), reference=release, origin=(x0 + 8000 * 2 - self.shrink * 5, y0)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 750, 280), reference=release, origin=(x0 + 8000 * 2 - self.shrink * 5, y0 + 210 * self.nb - (210 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 750, 350), reference=release, origin=(x0 + 8000 * 2 - self.shrink * 5, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 750, 420), reference=release, origin=(x0 + 8000 * 2 - self.shrink * 5, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space + 350 * self.nb - (350 - self.width) + self.space)) elems += i3.ARef(n_o_periods=(2, self.nb), period=(self.length + 1000, 210), reference=release, origin=(x0 + 23250 - self.shrink * 7, y0)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 1000, 280), reference=release, origin=(x0 + 23250 - self.shrink * 7, y0 + 210 * self.nb - (210 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 1000, 350), reference=release, origin=(x0 + 23250 - self.shrink * 7, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 1000, 420), reference=release, origin=(x0 + 23250 - self.shrink * 7, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space + 350 * self.nb - (350 - self.width) + self.space)) elems += i3.ARef(n_o_periods=(2, self.nb), period=(self.length + 1500, 210), reference=release, origin=(x0 + 29750 + 1500 - self.shrink * 9, y0)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 1500, 280), reference=release, origin=(x0 + 29750 + 1500 - self.shrink * 9, y0 + 210 * self.nb - (210 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 1500, 350), reference=release, origin=(x0 + 29750 + 1500 - self.shrink * 9, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 1500, 420), reference=release, origin=(x0 + 29750 + 1500 - self.shrink * 9, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space + 350 * self.nb - (350 - self.width) + self.space)) elems += i3.ARef(n_o_periods=(2, self.nb), period=(self.length + 2000, 210), reference=release, origin=(x0 + 38250 + 2000 - self.shrink * 11, y0)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 2000, 280), reference=release, origin=(x0 + 38250 + 2000 - self.shrink * 11, y0 + 210 * self.nb - (210 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 2000, 350), reference=release, origin=(x0 + 38250 + 2000 - self.shrink * 11, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 2000, 420), reference=release, origin=(x0 + 38250 + 2000 - self.shrink * 11, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space + 350 * self.nb - (350 - self.width) + self.space)) elems += i3.ARef(n_o_periods=(2, self.nb), period=(self.length + 3000, 210), reference=release, origin=(x0 + 47750 + 3000 - self.shrink * 13, y0)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 3000, 280), reference=release, origin=(x0 + 47750 + 3000 - self.shrink * 13, y0 + 210 * self.nb - (210 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 3000, 350), reference=release, origin=(x0 + 47750 + 3000 - self.shrink * 13, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space)) elems += i3.ARef( n_o_periods=(2, self.nb), period=(self.length + 3000, 420), reference=release, origin=(x0 + 47750 + 3000 - self.shrink * 13, y0 + 210 * self.nb - (210 - self.width) + self.space + 280 * self.nb - (280 - self.width) + self.space + 350 * self.nb - (350 - self.width) + self.space)) # elems += i3.Circle(layer=i3.Layer(number = 5, name = "tether"),radius=50000) return elems