optical pins name revised. Pin type added
This commit is contained in:
@@ -150,8 +150,12 @@ class Heater_NDoped():
|
||||
)
|
||||
## Add pin
|
||||
nd.Pin(name='a0').put(wg_input.pin['b0'])
|
||||
nd.Pin(name='a1', width=self.w_wg).put(wg_input.pin['b0'])
|
||||
nd.Pin(name='b1', width=self.w_wg).put(wg_output.pin['b0'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: nd.Pin(name='a1', width=self.w_wg).put(wg_input.pin['b0'])
|
||||
nd.Pin(name='opt_a1', width=self.w_wg,type="optical:").put(wg_input.pin['b0'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: nd.Pin(name='b1', width=self.w_wg).put(wg_output.pin['b0'])
|
||||
nd.Pin(name='opt_b1', width=self.w_wg,type="optical:").put(wg_output.pin['b0'])
|
||||
nd.Pin(name='ep1', width=abs(metal_l.pin['a0'].y-metal_l.pin['b0'].y)).put(
|
||||
metal_l.pin['a0'].x, (metal_l.pin['a0'].y+metal_l.pin['b0'].y)/2, 180
|
||||
)
|
||||
@@ -169,40 +173,64 @@ class Heater_NDoped():
|
||||
stripe = Route(radius=5, width=gc.w_wg, xs='strip')
|
||||
gc_input = gc.cell.put('g1',0,gc_offset,180)
|
||||
gc_output = gc.cell.put('g1',gc2gc_length,gc_offset,0)
|
||||
mmi_input = mmi.cell.put('a1',20,0,0)
|
||||
mmi_output = mmi.cell.put('a1', gc_output.pin['g1'].x-20,0, 180)
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_input = mmi.cell.put('a1',20,0,0)
|
||||
mmi_input = mmi.cell.put('opt_a1',20,0,0)
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_output = mmi.cell.put('a1', gc_output.pin['g1'].x-20,0, 180)
|
||||
mmi_output = mmi.cell.put('opt_a1', gc_output.pin['g1'].x-20,0, 180)
|
||||
stripe.sbend_p2p(
|
||||
pin1=gc_input.pin['g1'],
|
||||
pin2=mmi_input.pin['a1'],
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin2=mmi_input.pin['a1'],
|
||||
pin2=mmi_input.pin['opt_a1'],
|
||||
Lstart=5,
|
||||
arrow=False
|
||||
).put()
|
||||
stripe.sbend_p2p(
|
||||
pin1=gc_output.pin['g1'],
|
||||
pin2=mmi_output.pin['a1'],
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin2=mmi_output.pin['a1'],
|
||||
pin2=mmi_output.pin['opt_a1'],
|
||||
Lstart=5,
|
||||
arrow=False
|
||||
).put()
|
||||
# Connect upper arm
|
||||
ps = self.cell.put('a1',mmi_input.pin['b1'].x+40,mzi_offset)
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: ps = self.cell.put('a1',mmi_input.pin['b1'].x+40,mzi_offset)
|
||||
ps = self.cell.put('opt_a1',mmi_input.pin['opt_b1'].x+40,mzi_offset)
|
||||
stripe.sbend_route_p2p(
|
||||
pin1=mmi_input.pin['b1'],
|
||||
pin2=ps.pin['a1'],
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin1=mmi_input.pin['b1'],
|
||||
pin1=mmi_input.pin['opt_b1'],
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin2=ps.pin['a1'],
|
||||
pin2=ps.pin['opt_a1'],
|
||||
arrow=False
|
||||
).put()
|
||||
stripe.sbend_route_p2p(
|
||||
pin1=mmi_output.pin['b2'],
|
||||
pin2=ps.pin['b1'],
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin1=mmi_output.pin['b2'],
|
||||
pin1=mmi_output.pin['opt_b2'],
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin2=ps.pin['b1'],
|
||||
pin2=ps.pin['opt_b1'],
|
||||
arrow=False
|
||||
).put()
|
||||
# Connect lower arm
|
||||
stripe.strt_p2p(
|
||||
pin1=mmi_input.pin['b2'],
|
||||
pin2=mmi_output.pin['b1'],
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin1=mmi_input.pin['b2'],
|
||||
pin1=mmi_input.pin['opt_b2'],
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin2=mmi_output.pin['b1'],
|
||||
pin2=mmi_output.pin['opt_b1'],
|
||||
arrow=False
|
||||
).put()
|
||||
## Put CT heater
|
||||
ps_ct = self.cell.put('a1',ps.pin['a1'].x,ps.pin['a1'].y+ct_pitch,0)
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: ps_ct = self.cell.put('a1',ps.pin['a1'].x,ps.pin['a1'].y+ct_pitch,0)
|
||||
ps_ct = self.cell.put('opt_a1',ps.pin['opt_a1'].x,ps.pin['opt_a1'].y+ct_pitch,0)
|
||||
## Put pins
|
||||
nd.Pin(name="ep1", pin=ps.pin['ep1']).put()
|
||||
nd.Pin(name="en1", pin=ps.pin['en1']).put()
|
||||
@@ -306,9 +334,15 @@ class PS_PIN() :
|
||||
nd.add_layer2xsection(xsection='slab2strip_pin', layer='STRIP_CLD', leftedge=(0.5,self.w_slab*2), rightedge=(-0.5,-self.w_slab*2), overwrite=True)
|
||||
taper_strip2slab = taper_xs2xs(xs_1='strip',xs_2='slab2strip_pin',L_taper=10,w_1=self.w_wg,w_2=self.w_wg_slab, L_port=0.2)
|
||||
taper_slab2strip = taper_xs2xs(xs_1='slab2strip_pin',xs_2='strip',L_taper=10,w_1=self.w_wg_slab, w_2=self.w_wg,L_port=0.2)
|
||||
taper_input = taper_strip2slab.cell.put('a1',0,0,0)
|
||||
wg_ps = slab.strt(length=self.l_wg,arrow=False).put(taper_input.pin['b1'])
|
||||
taper_output = taper_slab2strip.cell.put('a1',wg_ps.pin['b0'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: taper_input = taper_strip2slab.cell.put('a1',0,0,0)
|
||||
taper_input = taper_strip2slab.cell.put('opt_a1',0,0,0)
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: wg_ps = slab.strt(length=self.l_wg,arrow=False).put(taper_input.pin['b1'])
|
||||
wg_ps = slab.strt(length=self.l_wg,arrow=False).put(taper_input.pin['opt_b1'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: taper_output = taper_slab2strip.cell.put('a1',wg_ps.pin['b0'])
|
||||
taper_output = taper_slab2strip.cell.put('opt_a1',wg_ps.pin['b0'])
|
||||
|
||||
''' Add doping area near the waveguide '''
|
||||
l_edge = 1
|
||||
@@ -317,10 +351,18 @@ class PS_PIN() :
|
||||
p_layer_temp = self.p_layer_list[_index_]
|
||||
n_layer_temp = self.n_layer_list[_index_]
|
||||
doping_polygon = [
|
||||
(taper_input.pin['b1'].x+l_edge, self.w_wg_slab/2+d2wg_temp),
|
||||
(taper_output.pin['a1'].x-l_edge, self.w_wg_slab/2+d2wg_temp),
|
||||
(taper_output.pin['a1'].x-l_edge, self.w_plus_max),
|
||||
(taper_input.pin['b1'].x+l_edge, self.w_plus_max)
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: (taper_input.pin['b1'].x+l_edge, self.w_wg_slab/2+d2wg_temp),
|
||||
(taper_input.pin['opt_b1'].x+l_edge, self.w_wg_slab/2+d2wg_temp),
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: (taper_output.pin['a1'].x-l_edge, self.w_wg_slab/2+d2wg_temp),
|
||||
(taper_output.pin['opt_a1'].x-l_edge, self.w_wg_slab/2+d2wg_temp),
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: (taper_output.pin['a1'].x-l_edge, self.w_plus_max),
|
||||
(taper_output.pin['opt_a1'].x-l_edge, self.w_plus_max),
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: (taper_input.pin['b1'].x+l_edge, self.w_plus_max)
|
||||
(taper_input.pin['opt_b1'].x+l_edge, self.w_plus_max)
|
||||
]
|
||||
nd.Polygon(points=doping_polygon, layer=p_layer_temp).put(0,0)
|
||||
nd.Polygon(points=doping_polygon, layer=n_layer_temp).put(0,0,flop=True)
|
||||
@@ -332,15 +374,23 @@ class PS_PIN() :
|
||||
xs_l1="sa", xs_l2="metal", show_pins=False
|
||||
)
|
||||
vias_p = vias.cell.put(
|
||||
taper_input.pin['b1'].x+self.l_wg/2, (self.w_plus_max+self.d2wg_list[-1]+self.w_wg_slab/2)/2
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: taper_input.pin['b1'].x+self.l_wg/2, (self.w_plus_max+self.d2wg_list[-1]+self.w_wg_slab/2)/2
|
||||
taper_input.pin['opt_b1'].x+self.l_wg/2, (self.w_plus_max+self.d2wg_list[-1]+self.w_wg_slab/2)/2
|
||||
)
|
||||
vias_n = vias.cell.put(
|
||||
taper_input.pin['b1'].x+self.l_wg/2, -(self.w_plus_max+self.d2wg_list[-1]+self.w_wg_slab/2)/2
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: taper_input.pin['b1'].x+self.l_wg/2, -(self.w_plus_max+self.d2wg_list[-1]+self.w_wg_slab/2)/2
|
||||
taper_input.pin['opt_b1'].x+self.l_wg/2, -(self.w_plus_max+self.d2wg_list[-1]+self.w_wg_slab/2)/2
|
||||
)
|
||||
|
||||
''' Add Pins '''
|
||||
nd.Pin(name='a1',width=self.w_wg).put(taper_input.pin['a1'])
|
||||
nd.Pin(name='b1',width=self.w_wg).put(taper_output.pin['b1'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: nd.Pin(name='a1',width=self.w_wg).put(taper_input.pin['a1'])
|
||||
nd.Pin(name='opt_a1',width=self.w_wg,type="optical:").put(taper_input.pin['opt_a1'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: nd.Pin(name='b1',width=self.w_wg).put(taper_output.pin['b1'])
|
||||
nd.Pin(name='opt_b1',width=self.w_wg,type="optical:").put(taper_output.pin['opt_b1'])
|
||||
nd.Pin(name="ep1", width=self.w_plus_max-(self.d2wg_list[-1]+self.w_wg_slab/2)-0.2*2).put(vias_p.pin['a0'])
|
||||
nd.Pin(name="en1", width=self.w_plus_max-(self.d2wg_list[-1]+self.w_wg_slab/2)-0.2*2).put(vias_n.pin['a0'])
|
||||
# nd.put_stub()
|
||||
@@ -351,52 +401,90 @@ class PS_PIN() :
|
||||
Generating a Mach-Zehnder Interferometer for testing the PIN phase shifter.
|
||||
'''
|
||||
with nd.Cell(name=self.cell_name+"_MZI", instantiate=False) as ICell :
|
||||
mmi_input = mmi.cell.put('a1',0,0,0)
|
||||
pin2test = self.cell.put('a1', mmi_input.pin['b1'].move(60,100,0))
|
||||
mmi_bottom = mmi.cell.put('a1', pin2test.pin['b1'].x+10, mmi_input.pin['b2'].y, 0)
|
||||
mmi_up = mmi.cell.put('a1', pin2test.pin['b1'].move(10,0,0))
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_input = mmi.cell.put('a1',0,0,0)
|
||||
mmi_input = mmi.cell.put('opt_a1',0,0,0)
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin2test = self.cell.put('a1', mmi_input.pin['b1'].move(60,100,0))
|
||||
pin2test = self.cell.put('opt_a1', mmi_input.pin['opt_b1'].move(60,100,0))
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_bottom = mmi.cell.put('a1', pin2test.pin['b1'].x+10, mmi_input.pin['b2'].y, 0)
|
||||
mmi_bottom = mmi.cell.put('opt_a1', pin2test.pin['opt_b1'].x+10, mmi_input.pin['opt_b2'].y, 0)
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_up = mmi.cell.put('a1', pin2test.pin['b1'].move(10,0,0))
|
||||
mmi_up = mmi.cell.put('opt_a1', pin2test.pin['opt_b1'].move(10,0,0))
|
||||
mmi_middle = mmi.cell.put(
|
||||
'a1',
|
||||
mmi_bottom.pin['b1'].x+mmi.length+25,
|
||||
mmi_up.pin['b2'].y/2+mmi_bottom.pin['b1'].y/2,
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: 'a1',
|
||||
'opt_a1',
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_bottom.pin['b1'].x+mmi.length+25,
|
||||
mmi_bottom.pin['opt_b1'].x+mmi.length+25,
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_up.pin['b2'].y/2+mmi_bottom.pin['b1'].y/2,
|
||||
mmi_up.pin['opt_b2'].y/2+mmi_bottom.pin['opt_b1'].y/2,
|
||||
180
|
||||
)
|
||||
''' Wg routing '''
|
||||
strip = Route(radius=10, width=self.w_wg, xs='strip')
|
||||
strip.strt_p2p(pin1=mmi_input.pin['b2'],pin2=mmi_bottom.pin['a1'],arrow=False).put()
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.strt_p2p(pin1=mmi_input.pin['b2'],pin2=mmi_bottom.pin['a1'],arrow=False).put()
|
||||
strip.strt_p2p(pin1=mmi_input.pin['opt_b2'],pin2=mmi_bottom.pin['opt_a1'],arrow=False).put()
|
||||
# strip.sbend_p2p(pin1=mmi_input.pin['b1'],pin2=pin2test.pin['a1'],Lstart=1,arrow=False).put()
|
||||
strip.sbend_p2p(
|
||||
pin1=mmi_input.pin['b1'],pin2=nd.Pin().put(mmi_input.pin['b1'].x+11,pin2test.pin['a1'].y,180),
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin1=mmi_input.pin['b1'],pin2=nd.Pin().put(mmi_input.pin['b1'].x+11,pin2test.pin['a1'].y,180),
|
||||
pin1=mmi_input.pin['opt_b1'],pin2=nd.Pin().put(mmi_input.pin['opt_b1'].x+11,pin2test.pin['opt_a1'].y,180),
|
||||
radius=5, Lstart=0.5, arrow=False
|
||||
).put()
|
||||
strip.sbend_p2p(
|
||||
pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['b1'].x+22,mmi_input.pin['b1'].y+1,180),
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['b1'].x+22,mmi_input.pin['b1'].y+1,180),
|
||||
pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['opt_b1'].x+22,mmi_input.pin['opt_b1'].y+1,180),
|
||||
radius=5, Lstart=0.5, arrow=False
|
||||
).put()
|
||||
strip.sbend_p2p(
|
||||
pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['b1'].x+33,pin2test.pin['a1'].y,180),
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['b1'].x+33,pin2test.pin['a1'].y,180),
|
||||
pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['opt_b1'].x+33,pin2test.pin['opt_a1'].y,180),
|
||||
radius=5, Lstart=0.5, arrow=False
|
||||
).put()
|
||||
strip.sbend_p2p(
|
||||
pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['b1'].x+44,mmi_input.pin['b1'].y+1,180),
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['b1'].x+44,mmi_input.pin['b1'].y+1,180),
|
||||
pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['opt_b1'].x+44,mmi_input.pin['opt_b1'].y+1,180),
|
||||
radius=5, Lstart=0.5, arrow=False
|
||||
).put()
|
||||
strip.sbend_p2p(
|
||||
pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['b1'].x+55,pin2test.pin['a1'].y,180),
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['b1'].x+55,pin2test.pin['a1'].y,180),
|
||||
pin1=nd.Pin().put(),pin2=nd.Pin().put(mmi_input.pin['opt_b1'].x+55,pin2test.pin['opt_a1'].y,180),
|
||||
radius=5, Lstart=0.5, arrow=False
|
||||
).put()
|
||||
strip.strt_p2p(pin1=nd.Pin().put(),pin2=pin2test.pin['a1'],arrow=False).put()
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.strt_p2p(pin1=nd.Pin().put(),pin2=pin2test.pin['a1'],arrow=False).put()
|
||||
strip.strt_p2p(pin1=nd.Pin().put(),pin2=pin2test.pin['opt_a1'],arrow=False).put()
|
||||
# strip.sbend(radius=5,offset=-abs(pin2test.pin['a1'].y-mmi_input.pin['b1'].y),arrow=False).put()
|
||||
strip.strt_p2p(pin1=mmi_up.pin['a1'],pin2=pin2test.pin['b1'],arrow=False).put()
|
||||
strip.sbend_p2p(pin1=mmi_up.pin['b2'],pin2=mmi_middle.pin['b2'],Lstart=0.5,radius=10,arrow=False).put()
|
||||
strip.sbend_p2p(pin1=mmi_bottom.pin['b1'],pin2=mmi_middle.pin['b1'],Lstart=2.5,radius=10,arrow=False).put()
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.strt_p2p(pin1=mmi_up.pin['a1'],pin2=pin2test.pin['b1'],arrow=False).put()
|
||||
strip.strt_p2p(pin1=mmi_up.pin['opt_a1'],pin2=pin2test.pin['opt_b1'],arrow=False).put()
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.sbend_p2p(pin1=mmi_up.pin['b2'],pin2=mmi_middle.pin['b2'],Lstart=0.5,radius=10,arrow=False).put()
|
||||
strip.sbend_p2p(pin1=mmi_up.pin['opt_b2'],pin2=mmi_middle.pin['opt_b2'],Lstart=0.5,radius=10,arrow=False).put()
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.sbend_p2p(pin1=mmi_bottom.pin['b1'],pin2=mmi_middle.pin['b1'],Lstart=2.5,radius=10,arrow=False).put()
|
||||
strip.sbend_p2p(pin1=mmi_bottom.pin['opt_b1'],pin2=mmi_middle.pin['opt_b1'],Lstart=2.5,radius=10,arrow=False).put()
|
||||
|
||||
''' Add pads '''
|
||||
pad_ground = pad.cell.put(
|
||||
mmi_input.pin['b1'].x+40+30+50,mmi_input.pin['b1'].y+5+40-4,0
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_input.pin['b1'].x+40+30+50,mmi_input.pin['b1'].y+5+40-4,0
|
||||
mmi_input.pin['opt_b1'].x+40+30+50,mmi_input.pin['opt_b1'].y+5+40-4,0
|
||||
)
|
||||
pad_signal = pad.cell.put(
|
||||
mmi_input.pin['b1'].x+40+30+100+50,mmi_input.pin['b1'].y+5+40-4,0
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: mmi_input.pin['b1'].x+40+30+100+50,mmi_input.pin['b1'].y+5+40-4,0
|
||||
mmi_input.pin['opt_b1'].x+40+30+100+50,mmi_input.pin['opt_b1'].y+5+40-4,0
|
||||
)
|
||||
|
||||
''' Metal Connecting '''
|
||||
@@ -427,13 +515,21 @@ class PS_PIN() :
|
||||
)
|
||||
)
|
||||
''' Put output gratings '''
|
||||
strip.strt(length=60,arrow=False).put(mmi_input.pin['a1'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.strt(length=60,arrow=False).put(mmi_input.pin['a1'])
|
||||
strip.strt(length=60,arrow=False).put(mmi_input.pin['opt_a1'])
|
||||
gc.cell.put('g1')
|
||||
strip.strt(length=60,arrow=False).put(mmi_up.pin['b1'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.strt(length=60,arrow=False).put(mmi_up.pin['b1'])
|
||||
strip.strt(length=60,arrow=False).put(mmi_up.pin['opt_b1'])
|
||||
gc.cell.put('g1')
|
||||
strip.strt(length=100,arrow=False).put(mmi_middle.pin['a1'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.strt(length=100,arrow=False).put(mmi_middle.pin['a1'])
|
||||
strip.strt(length=100,arrow=False).put(mmi_middle.pin['opt_a1'])
|
||||
gc.cell.put('g1')
|
||||
strip.strt(length=60,arrow=False).put(mmi_bottom.pin['b2'])
|
||||
## revised in 2026.06.07 by Qin Yue
|
||||
# legacy: strip.strt(length=60,arrow=False).put(mmi_bottom.pin['b2'])
|
||||
strip.strt(length=60,arrow=False).put(mmi_bottom.pin['opt_b2'])
|
||||
gc.cell.put('g1')
|
||||
return ICell
|
||||
|
||||
|
||||
Reference in New Issue
Block a user