An open API service indexing awesome lists of open source software.

https://github.com/stefansalewski/rbr

Rubberband maze router for PCB traces
https://github.com/stefansalewski/rbr

Last synced: about 2 months ago
JSON representation

Rubberband maze router for PCB traces

Awesome Lists containing this project

README

          

= Rubberband routing of PCB traces
:icons: font
:imagesdir: http://ssalewski.de/tmp
:source-highlighter: rouge
:rouge-style: molokai

== Fully experimental work with no real use!

This is a port of my old initial version from
http://ssalewski.de/Router.html.en
to Nim language.

Instead of using the CGAL library for the constrained delaunay triangulation and the
CGAL Apollonius graph for determining the convex hull of disks, for both
now pure Nim libs are used. And instead of a fibonacci queue from BOOST
library as priority queue we now use the heapqueue from the Nim standard library.

Of course this router is useless as its own, but it may become an important core component
of an EDA (electronic design automation) tool.

For compiling the code you need

https://github.com/StefanSalewski/cdt2

https://github.com/StefanSalewski/QuickhullDisk

CDT2 is a variant of CDT with a modified, more OOP style API.

If you compiled router.nim you can run it with plain ./router without arguments
or with a numeric argument. A PNG file showing the rubberband traces
is created in the current directory.

== Detailed instructions for testing

----
nimble install gintro
nimble install itertools
nimble install https://github.com/stefansalewski/QuickHullDisk.git
nimble install https://github.com/stefansalewski/cdt2.git
git clone https://github.com/stefansalewski/RBR.git
cd RBR
nim c router.nim
./router
./router 13
eog pig13.png
----

image::NimRouting1.png[]

=== Layer assignment example

The Nim version of the layer-assignments works as well already, so together with SDT for board creation, a
real EDA tool would be possible. Well, for a useful tool, maybe 3000 hours of work may be still needed, the
Gerber export is still missing completely. But it is not impossible.

image::LANimpic.png[]