Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • jllemur813/roco_electrical
1 result
Show changes
Showing
with 120 additions and 0 deletions
#!/usr/bin/env python3
import copy
import numpy as np
from math import sqrt
def find_wire(file_path,pin_loc=None):
if not file_path.endswith('.ses'):
file_path+='.ses'
ses=open(file_path,'r').read().splitlines()
pathsec_list=[]
for i in range(len(ses)):
if 'path' in ses[i]:
for j in range(i,len(ses)):
if ')' in ses[j]:
pathsec=[i,j]
pathsec_list.append(pathsec)
break
path_list=[]
for sec_bry in pathsec_list:
onepath=[]
for j in range(sec_bry[0]+1,sec_bry[1]):
pts_str=ses[j].split()
ptstart=int(pts_str[0])
ptend=int(pts_str[1])
pts=[ptstart,ptend]
onepath.append(pts)
path_list.append(onepath)
pin_loc_=[]
for module in pin_loc:
for pin in module:
pin=np.array(pin)*10000
pin=pin.astype(int)
pin=pin.tolist()
pin_loc_.append(pin)
merged_path_list=[]
while len(path_list)!=0:
merged_path=path_list[0]
path_list.remove(merged_path)
flag=True
s_merge_flag=True
e_merge_flag=True
while flag:
s=merged_path[0]
e=merged_path[-1]
# m1_len=len(merged_path)
flag=False
if s in pin_loc_:
s_merge_flag=False
if e in pin_loc_:
e_merge_flag=False
to_merge_temp=[]
for restpath in path_list:
s_=restpath[0]
e_=restpath[-1]
# m2_len=len(restpath)
# if m1_len<3 or m2_len<3:
if (s==s_ or s==e_ or e==s_ or e==e_) and (s_merge_flag or e_merge_flag):
to_merge_temp.append(restpath)
if len(to_merge_temp)!=0:
dis=[]
for temp_path in to_merge_temp:
leng=len_of_path(temp_path)
dis.append(leng)
to_merge=to_merge_temp[np.argmin(dis)]
to_merge_copy=copy.deepcopy(to_merge)
s_=to_merge[0]
e_=to_merge[-1]
if s==s_ and s_merge_flag:
merged_path.remove(s)
merged_path=list(reversed(merged_path))+(to_merge_copy)
path_list.remove(to_merge)
flag=True
if s==e_ and s_merge_flag:
merged_path.remove(s)
merged_path=to_merge_copy+(merged_path)
path_list.remove(to_merge)
flag=True
if e==s_ and e_merge_flag:
merged_path.remove(e)
merged_path=(merged_path)+(to_merge_copy)
path_list.remove(to_merge)
flag=True
if e==e_ and e_merge_flag:
merged_path.remove(e)
merged_path=to_merge_copy+(list(reversed(merged_path)))
path_list.remove(to_merge)
flag=True
merged_path_list.append(merged_path)
for path in merged_path_list:
if len(path)>=3:
path_cp=copy.deepcopy(path)
for i in range(len(path_cp)-2):
pt1=path_cp[i]
pt2=path_cp[i+1]
pt3=path_cp[i+2]
x1,x2,x3=pt1[0],pt2[0],pt3[0]
y1,y2,y3=pt1[1],pt2[1],pt3[1]
if x1==x2 and x2==x3:
path.remove(pt2)
elif y1==y2 and y2==y3:
path.remove(pt2)
return merged_path_list
def len_of_path(path):
leng=0
for i in range(len(path)-1):
pt1=path[i]
pt2=path[i+1]
x1,y1=pt1[0],pt1[1]
x2,y2=pt2[0],pt2[1]
dis= sqrt((x1-x2)**2+(y1-y2)**2)
leng+=dis
return leng
journal_media/auto_read_and_cut.png

28.4 KiB

journal_media/auto_router.gif

524 KiB

journal_media/auto_router_from_dsn.gif

38.1 KiB

journal_media/autorouter_ignore_cu_layer.png

9.47 KiB

journal_media/autorouter_w_clearance.png

24.6 KiB

journal_media/branch_fix.png

30.6 KiB

journal_media/branch_issue.png

29.7 KiB

journal_media/circuit_demo.png

95.4 KiB

journal_media/circuit_inautorouter.png

25.5 KiB

journal_media/compare_dwg_autorouter.png

174 KiB

journal_media/connected_pin_issue.png

13.7 KiB

journal_media/contriA1.png

112 KiB

journal_media/contriB1.png

113 KiB

journal_media/contriC1.png

114 KiB

journal_media/contriD1.png

124 KiB

journal_media/cross_bug_report.png

143 KiB

journal_media/cross_cut.png

35.1 KiB

journal_media/current_demo.png

144 KiB

journal_media/cutoncopper_layer.png

8.5 KiB