Mailing list archives : pcb-rnd

ID:4267
From:ge...@igor2.repo.hu
Date:Fri, 7 Aug 2020 16:58:08 +0200 (CEST)
Subject:[pcb-rnd] new: external autorouter route-rnd
Hi all,
 
I've finished the first testable version of ringdove's (external) 
autorouter, route-rnd.
 
I. what we have now
 
Reminder (for more details, read my previous email on the topic): my 
current focus is not on providing the ultimate autorouter, but to build up 
the infrastructure so that we can easily develop new autorouters, outside 
of pcb-rnd. What we have as of r32397:
 
- The file formats for communication defined: 
http://www.repo.hu/projects/tedax/router.html ; this document also has an 
example output (also in svg) of the dumb horver router
 
- The low level code in io_tedax to write the route request block and load 
and apply the result; plus the actions for these
 
- A new plugin, ar_extern, that can export-run-import using an external 
autorouter in a single action call or single click
 
- ar_extern also can fetch available methods (algorithsm) from the 
external routers and query them for the possible configuration settings; 
with all these, a nice GUI dialog box can be presented that can fully 
configure the external router before that single click
 
- An external autorouter project, route-rnd, that has enough 
infrastructure to load and save in tEDAx, to map net segments and run a 
routing algorithm; it is modular, so it's very easy to add new routing 
algorithms
 
- A rather dumb router algorithm called 'horver' which uses horizontal 
lines on the top side and vertical lines on the bottom side then uses long 
buses along the edges of the board. The result is not pretty, but it does 
a complete routing in many cases for a specific type of boards
 
II. If you want to try it
 
1. download and install route-rnd from svn://svn.repo.hu/route-rnd/trunk
(in theory you can avoid installing it but that requires 
runtime configuration on pcb-rnd side, under the plugins/ar_extern subrtee 
- go fiugre, or really, just install it, it's a single executable and a 
few htmls in doc/)
 
2. use the latest svn HEAD pcb-rnd
 
3. import your sch (or place a few subcircuits, change refdes and draw rat 
lines); the horver router works well only if you have your terminals in 
some sort of grid; easiest to use dip() and acy() and rcy() parts and use 
100 mil grid
 
4. choose the external autorouter submenu from connects/automatic routing 
menu (or use the extroute() action); if you have route-rnd installed you 
will get a GUI with a few settings and a button for running the router. 
The reroute button is useful if you change settings or placement.
 
Options:
 
- Open the netlist window and disable rats for a few nets - those nets 
will not be autorouted; you can use this to e.g. disable gnd routing and 
later on draw it as a ground poly
 
- You can disable specific edges (e.g. the left edge of board) to be used 
for bus; this is useful if you have connectors that have to be near the 
edge there; note: this simple algorithm doesn't respect board dimensions
 
- This dumb algorithm will try to bring out ("escape") all terminals for a 
given network to a specific edge of the board; the escape lines are 
allowed to have a so called "dog leg" of +-1 grid distance from the 
terminal. Grid is what route-rnd autodetects (so your grid setting in 
pcb-rnd doesn't matter, how you placed your subcircuits does). So it's 
best to leave some space between your subcircuits
 
- You can manually draw things and route-rnd will try to go around those; 
you can even manually draw a few critical nets first, then do the rest 
with route-rnd. Best way to do this is to respect the top-side-horizontal, 
bottom-side-vertical orientation with lines
 
- Note: polygons are obstacles
 
 
III. what's next
 
I will now switch to doing the rest of the feature development and 
bugfixes scheduled for this cycle. Then I will start working on the 
toporouter in route-rnd. It will take months. We will probably have 
something usable next year.
 
Remember: the main goal is to be able to remove all the half-broken and/or 
half-finished autorouters from pcb-rnd, providing better alternatives in a 
simpler, external router code. That's my main drive, not need for having 
an autorouter algorithm that is "perfect".
 
Anyway, now that we have the full infra for generic external 
autorouters, if you always wanted to try coding one, this is a good time. 
You can do it as a stand-alone program written from scratch in any 
language and it will almost instantly "integrate" with pcb-rnd.
 
 
 
Regards,
 
Igor2
 

Reply subtree:
4267 [pcb-rnd] new: external autorouter route-rnd from ge...@igor2.repo.hu