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
+30 -6
View File
@@ -44,8 +44,16 @@ class ISL:
else :
nd.strt(length=length*(a1-a2)+(b1-b2),width=width*(a1-a2)+(b1-b2),layer=layers).put(-(b1-b2)/2,0,0)
nd.Pin(name='a1').put(0,0,180)
nd.Pin(name='b1').put(length,0,0)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin(name='a1').put(0,0,180)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin(name='opt_a1').put(0,0,180)
nd.Pin(name='ele_a1',type="electrical:").put(0,0,180)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin(name='b1').put(length,0,0)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin(name='opt_b1').put(length,0,0)
nd.Pin(name='ele_b1',type="electrical:").put(length,0,0)
self.cell = C
""" Internal Logic revised """
@@ -256,8 +264,16 @@ class Vias:
nd.Pin('a0',io=0,width=self.area[0]).put(0,0,0)
nd.Pin('b0',io=1,width=self.area[1]).put(-0,0,180)
nd.Pin('a1',io=0,width=self.area[0]).put(self.area[0]/2,0,0)
nd.Pin('b1',io=1,width=self.area[1]).put(-self.area[0]/2,0,180)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin('a1',io=0,width=self.area[0]).put(self.area[0]/2,0,0)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin('opt_a1',io=0,width=self.area[0]).put(self.area[0]/2,0,0)
nd.Pin('ele_a1',io=0,width=self.area[0],type="electrical:").put(self.area[0]/2,0,0)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin('b1',io=1,width=self.area[1]).put(-self.area[0]/2,0,180)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin('opt_b1',io=1,width=self.area[1]).put(-self.area[0]/2,0,180)
nd.Pin('ele_b1',io=1,width=self.area[1],type="electrical:").put(-self.area[0]/2,0,180)
if (self.show_pins):
nd.put_stub()
@@ -431,8 +447,16 @@ class Vias_arc:
circle(radius=R_cur,width=w_via,theta_start=A_start/pi*180,theta_stop=A_stop/pi*180,xs=xs,res=res,
).cell.put(0,0,0)
nd.Pin(name='b1').put(R*np.cos(theta_stop/180*pi),R*np.sin(theta_stop/180*pi),90+theta_stop)
nd.Pin(name='a1').put(R*np.cos(theta_start/180*pi),R*np.sin(theta_start/180*pi),-90+theta_start)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin(name='b1').put(R*np.cos(theta_stop/180*pi),R*np.sin(theta_stop/180*pi),90+theta_stop)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin(name='opt_b1').put(R*np.cos(theta_stop/180*pi),R*np.sin(theta_stop/180*pi),90+theta_stop)
nd.Pin(name='ele_b1',type="electrical:").put(R*np.cos(theta_stop/180*pi),R*np.sin(theta_stop/180*pi),90+theta_stop)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin(name='a1').put(R*np.cos(theta_start/180*pi),R*np.sin(theta_start/180*pi),-90+theta_start)
## revised in 2026.06.07 by Qin Yue
# legacy: nd.Pin(name='opt_a1').put(R*np.cos(theta_start/180*pi),R*np.sin(theta_start/180*pi),-90+theta_start)
nd.Pin(name='ele_a1',type="electrical:").put(R*np.cos(theta_start/180*pi),R*np.sin(theta_start/180*pi),-90+theta_start)
A_mid = (theta_start+theta_stop)/2
nd.Pin(name='c1').put(R*np.cos(A_mid/180*pi),R*np.sin(A_mid/180*pi),A_mid)