optical pins name revised. Pin type added

This commit is contained in:
=
2026-06-07 22:56:33 +08:00
parent a4ac88f002
commit 8462c3397f
262 changed files with 3251 additions and 1134 deletions
+72 -16
View File
@@ -590,7 +590,9 @@ class AED_Ring_PIN(MRR_AED): ## Finished in 2022.11.23
spacing=self.via_i2m.spacing,
sp_via_xs=self.via_i2m.sp_via_xs,
instantiate=self.via_i2m.instantiate,
).cell.put(INSTR.pin['a1'].x+self.w_metal/2+self.sp_cont,INSTR.pin['a1'].y,180)
## revised in 2026.06.07 by Qin Yue
# legacy: ).cell.put(INSTR.pin['a1'].x+self.w_metal/2+self.sp_cont,INSTR.pin['a1'].y,180)
).cell.put(INSTR.pin['opt_a1'].x+self.w_metal/2+self.sp_cont,INSTR.pin['opt_a1'].y,180)
BUS_VIA_R = Vias(xs=self.via_i2m.xs,area=[self.w_metal,BUS_IMP.w_wg-self.sp_cont*2],
xs_l1=self.via_i2m.xs_l1,
@@ -599,21 +601,47 @@ class AED_Ring_PIN(MRR_AED): ## Finished in 2022.11.23
spacing=self.via_i2m.spacing,
sp_via_xs=self.via_i2m.sp_via_xs,
instantiate=self.via_i2m.instantiate,
).cell.put(INSTR.pin['b1'].x-self.w_metal/2-self.sp_cont,INSTR.pin['b1'].y)
## revised in 2026.06.07 by Qin Yue
# legacy: ).cell.put(INSTR.pin['b1'].x-self.w_metal/2-self.sp_cont,INSTR.pin['b1'].y)
).cell.put(INSTR.pin['opt_b1'].x-self.w_metal/2-self.sp_cont,INSTR.pin['opt_b1'].y)
if (abs(BUS_VIA_L.pin['a0'].x) > abs(VIA_LO.pin['b1'].x)):
temp = eic_mt.bend(pin=VIA_LO.pin['b1'],angle=360-VIA_LO.pin['b1'].a,arrow=False).put(flip=0)
## revised in 2026.06.07 by Qin Yue
# legacy: if (abs(BUS_VIA_L.pin['a0'].x) > abs(VIA_LO.pin['b1'].x)):
## revised in 2026.06.07 by Qin Yue
# legacy: if (abs(BUS_VIA_L.pin['a0'].x) > abs(VIA_LO.pin['opt_b1'].x)):
if (abs(BUS_VIA_L.pin['a0'].x) > abs(VIA_LO.pin['ele_b1'].x)):
## revised in 2026.06.07 by Qin Yue
# legacy: temp = eic_mt.bend(pin=VIA_LO.pin['b1'],angle=360-VIA_LO.pin['b1'].a,arrow=False).put(flip=0)
## revised in 2026.06.07 by Qin Yue
# legacy: temp = eic_mt.bend(pin=VIA_LO.pin['opt_b1'],angle=360-VIA_LO.pin['opt_b1'].a,arrow=False).put(flip=0)
temp = eic_mt.bend(pin=VIA_LO.pin['ele_b1'],angle=360-VIA_LO.pin['ele_b1'].a,arrow=False).put(flip=0)
eic_mt.ubend_p2p(pin2=BUS_VIA_L.pin['a0'],arrow=False).put()
else :
eic_mt.strt_bend_strt_p2p(pin1=VIA_LO.pin['b1'],pin2=BUS_VIA_L.pin['a0'].move(0,0,90),arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.strt_bend_strt_p2p(pin1=VIA_LO.pin['b1'],pin2=BUS_VIA_L.pin['a0'].move(0,0,90),arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.strt_bend_strt_p2p(pin1=VIA_LO.pin['opt_b1'],pin2=BUS_VIA_L.pin['a0'].move(0,0,90),arrow=False).put()
eic_mt.strt_bend_strt_p2p(pin1=VIA_LO.pin['ele_b1'],pin2=BUS_VIA_L.pin['a0'].move(0,0,90),arrow=False).put()
if (abs(BUS_VIA_R.pin['a0'].x) > abs(VIA_RO.pin['a1'].x)):
temp = eic_mt.bend(pin=VIA_RO.pin['a1'],angle=VIA_RO.pin['a1'].a-180,arrow=False).put(flip=1)
## revised in 2026.06.07 by Qin Yue
# legacy: if (abs(BUS_VIA_R.pin['a0'].x) > abs(VIA_RO.pin['a1'].x)):
## revised in 2026.06.07 by Qin Yue
# legacy: if (abs(BUS_VIA_R.pin['a0'].x) > abs(VIA_RO.pin['opt_a1'].x)):
if (abs(BUS_VIA_R.pin['a0'].x) > abs(VIA_RO.pin['ele_a1'].x)):
## revised in 2026.06.07 by Qin Yue
# legacy: temp = eic_mt.bend(pin=VIA_RO.pin['a1'],angle=VIA_RO.pin['a1'].a-180,arrow=False).put(flip=1)
## revised in 2026.06.07 by Qin Yue
# legacy: temp = eic_mt.bend(pin=VIA_RO.pin['opt_a1'],angle=VIA_RO.pin['opt_a1'].a-180,arrow=False).put(flip=1)
temp = eic_mt.bend(pin=VIA_RO.pin['ele_a1'],angle=VIA_RO.pin['ele_a1'].a-180,arrow=False).put(flip=1)
eic_mt.ubend_p2p(pin2=BUS_VIA_R.pin['a0'],arrow=False).put()
else :
eic_mt.strt_bend_strt_p2p(pin1=VIA_RO.pin['a1'],pin2=BUS_VIA_R.pin['a0'].move(0,0,-90),arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.strt_bend_strt_p2p(pin1=VIA_RO.pin['a1'],pin2=BUS_VIA_R.pin['a0'].move(0,0,-90),arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.strt_bend_strt_p2p(pin1=VIA_RO.pin['opt_a1'],pin2=BUS_VIA_R.pin['a0'].move(0,0,-90),arrow=False).put()
eic_mt.strt_bend_strt_p2p(pin1=VIA_RO.pin['ele_a1'],pin2=BUS_VIA_R.pin['a0'].move(0,0,-90),arrow=False).put()
nd.Pin(name='en3',width=BUS_IMP.wg_Ltp-self.sp_cont*2).put(BUS_VIA_L.pin['a0'].x,BUS_VIA_L.pin['a0'].y,-90)
nd.Pin(name='en4',width=BUS_IMP.wg_Ltp-self.sp_cont*2).put(BUS_VIA_R.pin['a0'].x,BUS_VIA_R.pin['a0'].y,-90)
@@ -660,25 +688,53 @@ class AED_Ring_PIN(MRR_AED): ## Finished in 2022.11.23
xs_l2=self.via_i2m.xs_l2,
sz=self.via_i2m.sz,spacing=self.via_i2m.spacing,
sp_via_xs=self.via_i2m.sp_via_xs,
).cell.put(INSTR.pin['a1'].x+self.w_metal/2+self.sp_cont,INSTR.pin['a1'].y,180)
## revised in 2026.06.07 by Qin Yue
# legacy: ).cell.put(INSTR.pin['a1'].x+self.w_metal/2+self.sp_cont,INSTR.pin['a1'].y,180)
).cell.put(INSTR.pin['opt_a1'].x+self.w_metal/2+self.sp_cont,INSTR.pin['opt_a1'].y,180)
BUS_VIA_R = Vias(xs=self.via_i2m.xs,area=[self.w_metal,BUS_IMP.w_wg-self.sp_cont*2],
xs_l1=self.via_i2m.xs_l1,
xs_l2=self.via_i2m.xs_l2,
sp_via_xs=self.via_i2m.sp_via_xs,
sz=self.via_i2m.sz,spacing=self.via_i2m.spacing).cell.put(INSTR.pin['b1'].x-self.w_metal/2-self.sp_cont,INSTR.pin['b1'].y)
## revised in 2026.06.07 by Qin Yue
# legacy: sz=self.via_i2m.sz,spacing=self.via_i2m.spacing).cell.put(INSTR.pin['b1'].x-self.w_metal/2-self.sp_cont,INSTR.pin['b1'].y)
sz=self.via_i2m.sz,spacing=self.via_i2m.spacing).cell.put(INSTR.pin['opt_b1'].x-self.w_metal/2-self.sp_cont,INSTR.pin['opt_b1'].y)
eic_mt.bend(pin=VIA_LO.pin['a1'],angle=VIA_LO.pin['a1'].a-90,arrow=False).put(flip=1)
eic_mt.strt_bend_strt_p2p(pin2=BUS_VIA_L.pin['a1'],arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.bend(pin=VIA_LO.pin['a1'],angle=VIA_LO.pin['a1'].a-90,arrow=False).put(flip=1)
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.bend(pin=VIA_LO.pin['opt_a1'],angle=VIA_LO.pin['opt_a1'].a-90,arrow=False).put(flip=1)
eic_mt.bend(pin=VIA_LO.pin['ele_a1'],angle=VIA_LO.pin['ele_a1'].a-90,arrow=False).put(flip=1)
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.strt_bend_strt_p2p(pin2=BUS_VIA_L.pin['a1'],arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.strt_bend_strt_p2p(pin2=BUS_VIA_L.pin['opt_a1'],arrow=False).put()
eic_mt.strt_bend_strt_p2p(pin2=BUS_VIA_L.pin['ele_a1'],arrow=False).put()
eic_mt.bend(pin=VIA_RO.pin['b1'],angle=90-VIA_RO.pin['b1'].a).put(flip=0)
eic_mt.strt_bend_strt_p2p(pin2=BUS_VIA_R.pin['a1'],arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.bend(pin=VIA_RO.pin['b1'],angle=90-VIA_RO.pin['b1'].a).put(flip=0)
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.bend(pin=VIA_RO.pin['opt_b1'],angle=90-VIA_RO.pin['opt_b1'].a).put(flip=0)
eic_mt.bend(pin=VIA_RO.pin['ele_b1'],angle=90-VIA_RO.pin['ele_b1'].a).put(flip=0)
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.strt_bend_strt_p2p(pin2=BUS_VIA_R.pin['a1'],arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: eic_mt.strt_bend_strt_p2p(pin2=BUS_VIA_R.pin['opt_a1'],arrow=False).put()
eic_mt.strt_bend_strt_p2p(pin2=BUS_VIA_R.pin['ele_a1'],arrow=False).put()
else :
temp = eic_mt.bend(pin=VIA_LO.pin['b1'],angle=VIA_LO.pin['b1'].a-270,arrow=False).put(flip=1)
## revised in 2026.06.07 by Qin Yue
# legacy: temp = eic_mt.bend(pin=VIA_LO.pin['b1'],angle=VIA_LO.pin['b1'].a-270,arrow=False).put(flip=1)
## revised in 2026.06.07 by Qin Yue
# legacy: temp = eic_mt.bend(pin=VIA_LO.pin['opt_b1'],angle=VIA_LO.pin['opt_b1'].a-270,arrow=False).put(flip=1)
temp = eic_mt.bend(pin=VIA_LO.pin['ele_b1'],angle=VIA_LO.pin['ele_b1'].a-270,arrow=False).put(flip=1)
nd.Pin(name='en3',width=w_cont_out-self.sp_cont*2+ovlp,pin=temp.pin['b0']).put()
temp = eic_mt.bend(pin=VIA_RO.pin['a1'],angle=270-VIA_RO.pin['a1'].a,arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: temp = eic_mt.bend(pin=VIA_RO.pin['a1'],angle=270-VIA_RO.pin['a1'].a,arrow=False).put()
## revised in 2026.06.07 by Qin Yue
# legacy: temp = eic_mt.bend(pin=VIA_RO.pin['opt_a1'],angle=270-VIA_RO.pin['opt_a1'].a,arrow=False).put()
temp = eic_mt.bend(pin=VIA_RO.pin['ele_a1'],angle=270-VIA_RO.pin['ele_a1'].a,arrow=False).put()
nd.Pin(name='en4',width=w_cont_out-self.sp_cont*2+ovlp,pin=temp.pin['b0']).put()