August–September 2024 Development Update

Weblate translation infrastructure, net presorting by pairwise detours, band selection and length measurement and deletion, manpage generation

We have spent the time since the last update on infrastructure tasks and smaller features for the Topola PCB router.

Weblate translation infrastructure

Work done by Michał Stankiewicz (MStankiewiczOfficial) and Mikołaj Wielgus (mikolaj).

Most importantly, we have configured Codeberg Translate, the Codeberg’s instance of Weblate, for Topola. This provides an easy way to translate Topola without having to know how to use advanced software such as Git.

We invite you to translate Topola to your language too!

Net presorting by pairwise detours

Implemented by Mikołaj Wielgus (mikolaj) starting in commit b2c9305cea.

The order in which nets are routed significantly influences the resulting total length of the routed tracks. As an illustration, take a look at this routed layout:

A suboptimal routing of one straight horizontal and two bended verticaltracks.

The single (straight) horizontal track was routed before the two (bended) vertical ones, obstructing them, and compelling them to detour. The resulting total length is greater than it would have been if the vertical tracks were routed first, and the horizontal one last, since in that case a detour, already shorter on its own, would have been instead taken not by two tracks, but only one.

So, to optimize this aspect of routing, Topola now has an option to first reorder the nets to reduce the lengths of the soon-routed tracks. For the layout above, this means doing as suggested in the above paragraph: routing the vertical tracks first, and the horizontal track last, resulting in the most optimal layout shown below.

A more optimal routing on the same layout as above. It is now thehorizontal track that is bended, while the vertical tracks arestraight.

There is currently only one ordering strategy available at the moment: presorting by pairwise detours. The way this works is simple: Topola sorts the nets using Rust’s default pattern-defeating quicksort algorithm. Every time two nets have to be compared, Topola does a dry run of routing them in the original order, and then does this again but with reverse order. The sum of new band lengths is recorded in both cases. If the sum is lower for the reverse order, the nets are swapped.

We recognize that this may not be the fastest or most length-minimizing method, but we need to start with something.

Band selection and length measurement and deletion

Implemented by Mikołaj Wielgus (mikolaj) starting in commit f7126dfa33.

Topola’s graphical user interface has been improved by making it possible to select currently routed bands. Once one or more bands are selected, the user may measure their total length, deselect, or delete them.

Animation showing two bands selected with cursor first having theirtotal length measured, and then beingdeleted.

Manpage generation

Implemented by Hakki (hakki) in commit 817fd5e57f.

When building Topola from source, a manpage will now be generated in the man/ directory. Once Topola is released and packaged for Unix systems, this manpage will be accessible by running man topola.