Skip to content
Snippets Groups Projects
Commit a09c97f4 authored by Jingyan Ling's avatar Jingyan Ling
Browse files

rearragne code, journal

parent bf5c4592
Branches
No related merge requests found
......@@ -538,4 +538,12 @@ Board design details(rules,parameters)---|
- Can open GUI with imported file
- Cannot run auto-routing function from script
- Manually click on auto-routing and save is needed (manual approval)
\ No newline at end of file
### 08/04/2019
- Working on parsing routed (wiring section) text information.
- Ref: [pyparsing](https://scipy-cookbook.readthedocs.io/items/Reading_Custom_Text_Files_with_Pyparsing.html)
- Parsing generated `dsn` file back to `DSN` class
- Fail
- Parsing generated `kicad_pcb` file back to `pykicad` package - `pcb` class
-
\ No newline at end of file
#!/usr/bin/env python3
import sys
sys.path.insert(1,'/home/jingyan/Documents/summer_intern_lemur/roco_electrical/dsn_python')
import dsnwritier
class brd_design():
def __init__(self,dwgfile,boundary_inx,libpath):
self.dwgfile=dwgfile
self.boundary_inx=boundary_inx
self.libpath=libpath
self.module_list=[
['mpu-9250.kicad_mod','J1',[103000,88000],270],
['ESP12F-Devkit-V3.kicad_mod','U1',[103000,48000],90],
]
self.netlist=[
['3v3',['U1-3','J1-1']],
['VIN',['U1-1']]
]
self.netclass_list=[
['default',['3v3','VIN'],'',1000,200]
]
self.brd_general()
self.boundary,self.keepout=self.load_drawing()
self.image,self.padstack=self.load_lib()
self.placement=self.place_modules()
self.net,self.netclass=self.create_net()
self.write_dsn()
def brd_general(self):
self.brd=dsnwritier.Dsn()
self.layers=[
dsnwritier.Layer('F.Cu'),
dsnwritier.Layer('B.Cu'),
dsnwritier.Layer('F.Mask'),
dsnwritier.Layer('B.Mask')
]
self.parsers= dsnwritier.Parser()
self.rule=dsnwritier.Rule()
clearance=[
dsnwritier.Clearance(200.1),
dsnwritier.Clearance(200.1,'default_smd'),
dsnwritier.Clearance(50,'smd_smd')]
self.rule.clearance=clearance
def load_drawing(self):
"""
create class: bourdry and keepout
from drawing file
"""
dwg=(dsnwritier.load_drawing(self.dwgfile)).load_polygon()
bdata=dwg.pop(self.boundary_inx)
kdata=dwg
keepout=[]
for i in range(len(kdata)):
keep_class=dsnwritier.Keepout(kdata[i])
keepout.append(keep_class)
boundary=dsnwritier.Boundary(bdata)
return boundary,keepout
def load_lib(self):
"""
create class: footprint (image) and padstack
from library path and modules
"""
image=[]
for mod in self.module_list:
img=dsnwritier.Footprint.from_file(self.libpath+mod[0],ref=mod[1])
image.append(img)
padstack=dsnwritier.Padstack.auto_detect(self.libpath+'mpu-9250.kicad_mod')
return image,padstack
def place_modules(self):
placement=[]
for mod in self.module_list:
place=dsnwritier.Placement(name=mod[0],ref1=mod[1],at=mod[2],orientation=mod[3])
placement.append(place)
return placement
def create_net(self):
nets_list=[]
netclass_list=[]
for net in self.netlist:
nets=dsnwritier.Net(net_name=net[0],conn_pins=net[1])
nets_list.append(nets)
for netclass in self.netclass_list:
netclasses=dsnwritier.NetClass(net_class_name=netclass[0],
nets_name=netclass[1],
via_name=netclass[2],
width=netclass[3],
clearance=netclass[4])
netclass_list.append(netclasses)
return nets_list,netclass_list
def write_dsn(self):
self.brd.parser=self.parsers
self.brd.rule=self.rule
self.brd.layers=self.layers
self.brd.boundary=self.boundary
self.brd.keepout=self.keepout
self.brd.image=self.image
self.brd.padstack=self.padstack
self.brd.placement=self.placement
self.brd.net=self.net
self.brd.netclass=self.netclass
self.brd.to_file('paperbot_ee.dsn')
libpath='/home/jingyan/Documents/summer_intern_lemur/roco_electrical/libraries/kicad-ESP8266/ESP8266.pretty/'
dwgfile='/home/jingyan/Documents/summer_intern_lemur/roco_electrical/dsn_line_test.dxf'
a= brd_design(dwgfile,0,libpath)
#!/usr/bin/env python3
import sys
sys.path.insert(1,'/home/jingyan/Documents/summer_intern_lemur/roco_electrical/dsn_python')
import subprocess
unrouted_dsn_file='paperbot_ee.dsn'
subprocess.call(['java','-jar','freeRouting.jar','-de',unrouted_dsn_file,'-white','-s'])
\ No newline at end of file
(rules PCB paperbot_ee
(snap_angle
fortyfive_degree
)
(autoroute_settings
(fanout off)
(autoroute on)
(postroute on)
(vias on)
(via_costs 50)
(plane_via_costs 5)
(start_ripup_costs 100)
(start_pass_no 4)
(layer_rule F.Cu
(active on)
(preferred_direction vertical)
(preferred_direction_trace_costs 1.8)
(against_preferred_direction_trace_costs 3.0)
)
(layer_rule B.Cu
(active on)
(preferred_direction horizontal)
(preferred_direction_trace_costs 1.0)
(against_preferred_direction_trace_costs 1.8)
)
(layer_rule F.Mask
(active on)
(preferred_direction vertical)
(preferred_direction_trace_costs 1.0)
(against_preferred_direction_trace_costs 2.2)
)
(layer_rule B.Mask
(active on)
(preferred_direction horizontal)
(preferred_direction_trace_costs 1.8)
(against_preferred_direction_trace_costs 2.6)
)
)
(rule
(width 1000.0)
(clear 200.0)
(clear 125.0 (type smd_to_turn_gap))
(clear 200.2 (type default_smd))
(clear 50.0 (type smd_smd))
)
(via_rule
default
)
(class default
3v3 VIN
(clearance_class default)
(via_rule default)
(rule
(width 1000.0)
)
(circuit
(use_layer F.Cu B.Cu F.Mask B.Mask)
)
)
)
\ No newline at end of file
(session paperbot_ee.ses
(base_design paperbot_ee.dsn)
(placement
(resolution um 10)
(component J1
(place J1 1030000 -880000 front 270)
)
(component U1
(place U1 1030000 -480000 front 90)
)
)
(was_is
)
(routes
(resolution um 10)
(parser
(host_cad "KiCad's Pcbnew")
(host_version "5.1.3-ffb9f22~84~ubuntu18.04.1")
)
(library_out
)
(network_out
(net 3v3
(wire
(path B.Cu 10000
890300 -600650
918654 -629004
1049358 -629004
1131600 -711246
1131600 -816500
)
)
)
)
)
)
\ No newline at end of file
File moved
File moved
File moved
File moved
File moved
File moved
File moved
File moved
File moved
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment