April–May 2024 Development Update

Specctra DSN import, ratsnest generation, egui/eframe GUI, website move and CI

It has been two months since Topola’s website was created. We will continue to post updates with this frequency, as we are obligated by our agreement with NLnet to keep the user and developer communities up to date with our progress at least every two months.

We have made considerable progress since the last update: we implemented Specctra DSN import, generation of the ratsnest, and a graphical user interface (GUI). We also moved our website to Codeberg Pages and set up continuous integration (CI) for it.

Specctra DSN Import

Implemented by Tomasz Cichoń (tomec), started in commit 3f6bad2ed6.

Topola now can load layouts from Specctra DSN files. DSN is the de facto standard EDA format for importing PCB layouts with DRC rules into standalone autorouters.

For example, the following KiCad layout:

The layout to be imported via DSN as displayed inKiCad

Can now be loaded in Topola and will look like this:

The same layout imported in Topola

Ratsnest Generation

Implemented by Mikołaj Wielgus (mikolaj), started in commit 8d59242f3f.

Topola now generates and displays line segments that show which pairs of pads should be connected. This set of line segments, known as the ratsnest, aids both the designer and the autorouter in figuring out where to start and stop routing.

Ratsnests’ ratlines drawn overlaid on a layout

Egui GUI

Implemented by Mikołaj Wielgus (mikolaj), started in commit f2c2dca4be.

Topola now has a basic graphical user interface (GUI) written using the egui library and its paired eframe framework.

Animation showing two pads being selected with cursor. Then the cursor clicks on a button labeled“Autoroute”, and a straight trace appears connecting both pads

Website Move and CI

Work done by Panagiotis “Ivory” Vasilopoulos (n0toose) in repository topola/pages.

Our website’s hosting was moved from Hetzner to Codeberg Pages. Codeberg’s CI (an instance of Woodpecker CI) was set up to automatically build the website when committing to its repository.