-
Notifications
You must be signed in to change notification settings - Fork 5
Autorouters: MUCS PCB
Hereafter follow some copy/paste snippets I found regarding Autorouters.
The MUCS-PCB software was developed between 1985 and 1992 as part of a research project exploring PCB routing algorithms. The package is aimed at producing multilayer (2-16 layer) digital PCBs and was used for a number of years for routing boards designed in the department of computer science for production at out local PCB fab.
MUCS-PCB consists of:
- A textual design entry tool: ncap
- A ViewLogic Viewdraw netlist interface: vtoncap
- Gerber and Unix plot file plotting utils: gerber and unixplot
- Three autorouters:
- layer_pair - a two-layer serial router
- mat - a true multilayer serial router
- procore - an automated rip-up global router using simulated annealing techniques to achieve excellent results
A fuller description of the routers can be found in the attachment below.
MUCS-PCB is available under the terms of the Free Software Foundation's GNU General Public License version 2. Designs produced using MUCS-PCB do not contain significant portions of the tools and so are the property of the copyright owner of the original board description and are not required to be placed under the GNU GPL.
Copyright (C)1985-2001 Doug Edwards, Tim Spiers, Zahir Moosa, The University of Manchester School Of Computer Science (MUCS) Oxford Road, Manchester, M13 9PL, UK MUCS-PCB is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. MUCS-PCB is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Development of MUCS-PCB is encouraged, especially under the guise of the GNU EDA project gEDA although the authors would be interested to hear of any interesting uses to which the tools are put.
MUCS-PCB is configured with GNU automake and autoconf and tested on Linux 2.1 (RedHat 5.2, i686), SunOS 4.1.4 (sun4 sparc) and Solaris 2.6 (SunOS 5.6,i386 and sparc). (2001-10-25: doesn't time move on, anyway, MUCS-PCB should still build with sensible POSIX platforms, I'm currently using RedHat Linux 7.2 and Solaris 8). If you have any problems with the way the configure scripts are set up please submit a bug report.
MUCS-PCB distribution files can be found in http://apt.cs.manchester.ac.uk/ftp/pub/amulet/pcb/.
Currently available files are:
mucs_pcb-3.0.1.tar.gz - The MUCS-PCB software.
mucs_pcb-3.0.tar.gz - An older version of the MUCS-PCB software. The file includes the short examples and the obsolete code.
mucs_pcb_examples.tar.gz - Full source and output copies of examples given with mucs_pcb-3.0.
mucs_pcb_short_examples.tar.gz - Just the source of the above examples.
mucs_pcb_obsolete.tar.gz - Some obsolete MUCS-PCB code.
manual.ps.gz , manual.dvi.gz - Postscript / TeX DVI copies of the (out of date) manual.
Plot images if PCBs:
,
The mainboard and memboard demos are parts of hardware accelerator for PCB routing based on the routing algorithms used in MUCS-PCB.
This accelerator was designed using MUCS-PCB tools and nicely demonstrates that it's not only compilers which have bootstrapping problems ;).
A photo of a populated mainboard
.
Last but not least: the TREE board photos":
The TREE is a reconfigurable logic board base around a pair of Xilinx gate arrays (an XC4006 and an XC3020) and an Hitachi H8 microcontroller.
The gate arrays can be programmed from a Sun workstation using Viewlogic ViewDraw schematic capture or using VHDL synthesis. The board itself has as I/O devices:
- A two digit 7 segment LED display
- A 20 key keypad
- 64KB of SRAM
- ADC and DAC converters
- A speaker (conncted to the DAC), a microphone, analogue inputs/outputs
A dozen or so TREE boards have been produced and are used in this department to teach digital logic design to second year undergraduates.
Two classes of routers were implemented: Serial Routers and Global Routers:
The original software tracker written was developed as a basis for a hardware implementation of the tracker. It implements a layer-pair algorithm. The layer-pair algorithm uses a pair of layers with opposite biases, and then tries to route as many connections as possible on the pair of layers selected. Any failures are then routed on another layer pair and so on until all layers have been routed on, or there are no failed connections. The original software tracker can be specified using the -o option and the hardware equivalent, by the -h option. Currently the hardware router is not available for general use. Further details may be found in [Spie83], [Spie85], [Spie87]
This tracker is essentially the same as the previous tracker but with some bugs corrected and minor changes in the algorithm. The layer-pair structure is retained. The results from this tracker are usually better than that obtained from the original tracker, although improvements are minor. This tracker may also be specified by the -n option.
The third software tracker available is a true multilayer tracker in which all connections are routed on all the available layers simultaneously (as opposed to routing only on pairs of layers). This tracker may be specified by the -m option. For more than 2 routing layers, this router distributes tracks more evenly between the available routing layers than the layer-pair trackers, and the results are generally better. It is the default tracker.
A global router has been implemented that uses the technique of simulated annealing to perform ripup and rerouting operations. This is a useful facility because it allows the modification of existing routes to make room for unrouted connections. A true multilayer routing algorithm is used to route all the connections. This tracker may be specified by the -a option. A separate version has been implemented that basically employs the same ripup and reroute operations but restricts the size of the search space in an effort to converge to a final solution more quickly. The latter choice can be specified using the -g option.
Critical to the annealing process is the way the initial configuration is determined. By default, the annealed tracker determines an appropriate starting solution internally. The user can overide this default by specifying another initial tracker on the command line. This initial tracker is then used to determine the starting configuration for the annealed router.
A characteristic of the global routers are their non-deterministic nature. Rerouting a board with the same annealing parameters and board layout may not give the same results as previously obtained. It may be possible therefore to obtain a better result by re-running the annealed router on the same data.
For performance reasons, buried-vias are not allowed when using the global routers.