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