From a09c97f4c3873b94fbb1df74ece250bbf07c133e Mon Sep 17 00:00:00 2001 From: Jingyan Ling <jingyanling2018@u.northwestern.edu> Date: Mon, 5 Aug 2019 11:25:05 -0700 Subject: [PATCH] rearragne code, journal --- README.md | 10 +- paperbot_ee/paperbot_dsn.py | 126 ------------------ paperbot_ee_autoroute/auto_route_dsn.py | 8 ++ paperbot_ee_autoroute/paperbot_ee.rules | 61 +++++++++ paperbot_ee_autoroute/paperbot_ee.ses | 37 +++++ fp-info-cache => test_history/fp-info-cache | 0 .../kicad_board.dsn | 0 .../kicad_board.kicad_pcb | 0 .../kicad_board.pro | 0 .../kicad_board_routed.dsn | 0 .../kicad_python.net | 0 .../kicad_python.py | 0 kicad_test.dxf => test_history/kicad_test.dxf | 0 .../paperbot_kicad.dxf | 0 14 files changed, 115 insertions(+), 127 deletions(-) delete mode 100644 paperbot_ee/paperbot_dsn.py create mode 100644 paperbot_ee_autoroute/auto_route_dsn.py create mode 100644 paperbot_ee_autoroute/paperbot_ee.rules create mode 100644 paperbot_ee_autoroute/paperbot_ee.ses rename fp-info-cache => test_history/fp-info-cache (100%) rename kicad_board.dsn => test_history/kicad_board.dsn (100%) rename kicad_board.kicad_pcb => test_history/kicad_board.kicad_pcb (100%) rename kicad_board.pro => test_history/kicad_board.pro (100%) rename kicad_board_routed.dsn => test_history/kicad_board_routed.dsn (100%) rename kicad_python.net => test_history/kicad_python.net (100%) rename kicad_python.py => test_history/kicad_python.py (100%) rename kicad_test.dxf => test_history/kicad_test.dxf (100%) rename paperbot_kicad.dxf => test_history/paperbot_kicad.dxf (100%) diff --git a/README.md b/README.md index c258d92..92ab6ea 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/paperbot_ee/paperbot_dsn.py b/paperbot_ee/paperbot_dsn.py deleted file mode 100644 index befdd0c..0000000 --- a/paperbot_ee/paperbot_dsn.py +++ /dev/null @@ -1,126 +0,0 @@ -#!/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) - - - - - - - - - - diff --git a/paperbot_ee_autoroute/auto_route_dsn.py b/paperbot_ee_autoroute/auto_route_dsn.py new file mode 100644 index 0000000..719625f --- /dev/null +++ b/paperbot_ee_autoroute/auto_route_dsn.py @@ -0,0 +1,8 @@ +#!/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 diff --git a/paperbot_ee_autoroute/paperbot_ee.rules b/paperbot_ee_autoroute/paperbot_ee.rules new file mode 100644 index 0000000..d015151 --- /dev/null +++ b/paperbot_ee_autoroute/paperbot_ee.rules @@ -0,0 +1,61 @@ + +(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 diff --git a/paperbot_ee_autoroute/paperbot_ee.ses b/paperbot_ee_autoroute/paperbot_ee.ses new file mode 100644 index 0000000..515be5e --- /dev/null +++ b/paperbot_ee_autoroute/paperbot_ee.ses @@ -0,0 +1,37 @@ + +(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 diff --git a/fp-info-cache b/test_history/fp-info-cache similarity index 100% rename from fp-info-cache rename to test_history/fp-info-cache diff --git a/kicad_board.dsn b/test_history/kicad_board.dsn similarity index 100% rename from kicad_board.dsn rename to test_history/kicad_board.dsn diff --git a/kicad_board.kicad_pcb b/test_history/kicad_board.kicad_pcb similarity index 100% rename from kicad_board.kicad_pcb rename to test_history/kicad_board.kicad_pcb diff --git a/kicad_board.pro b/test_history/kicad_board.pro similarity index 100% rename from kicad_board.pro rename to test_history/kicad_board.pro diff --git a/kicad_board_routed.dsn b/test_history/kicad_board_routed.dsn similarity index 100% rename from kicad_board_routed.dsn rename to test_history/kicad_board_routed.dsn diff --git a/kicad_python.net b/test_history/kicad_python.net similarity index 100% rename from kicad_python.net rename to test_history/kicad_python.net diff --git a/kicad_python.py b/test_history/kicad_python.py similarity index 100% rename from kicad_python.py rename to test_history/kicad_python.py diff --git a/kicad_test.dxf b/test_history/kicad_test.dxf similarity index 100% rename from kicad_test.dxf rename to test_history/kicad_test.dxf diff --git a/paperbot_kicad.dxf b/test_history/paperbot_kicad.dxf similarity index 100% rename from paperbot_kicad.dxf rename to test_history/paperbot_kicad.dxf -- GitLab