Article from Issue 237/2020

The promised profusion of extra time has failed to materialize for Graham this month, leaving him with too many synth kits to build, a table littered with components, and a leaking toilet.

Circuit design

Horizon EDA

One of the many things that once seemed impossible, but is now accessible, is creating your own printed circuit boards (PCBs). You can now prototype and design your own boards from your humble home computer, and there are also now many manufacturers who welcome print runs as small as one. Add to this a crowdsourcing community happy to dive in to add their own orders and support themselves, and home brew PCB design should properly be considered a new cottage industry. The central part of this new ecosystem is open source software that can help you design, arrange, and build a circuit board that will work exactly as you intend it to and print according to your own specifications and requirements. This is the job of an Electronic Design Automation (EDA) package, which is exactly what Horizon EDA happens to be.

Horizon EDA is a comprehensive circuit design and creation tool that bundles several key components (pun intended). The first, and perhaps most important, is called "the pool." This is the parts library that lets you drag and drop predefined and readily available components into your designs. There's a comprehensive editor for adding your own parts, but you're more likely to clone the 35,000 parts database from Horizon's own GitHub repository and use this via the tabbed-by-category pool manager. There's a big difference in the way EDA implements versus other open source tools, because it uses a very flexible hierarchy of JSON-formatted files for each part, tracked by metadata stored in SQLite. It can also only contain real parts with full part numbers you can type into sites like to place an order. This is something you'll appreciate if you've used, for example, the Arduino IDE parts list.

With a new project created, the second key component is the schematic editor. This is where you place components from the pool to design the circuit with the functionality you need. The connections themselves are composed of networks, such as tracks for different voltages and signals. These networks can have their own algorithmically controlled rules, such as clearance, track width, and hole size. These become apparent in the third key component, the board layout preview. This is where your design becomes an actual circuit with components placed on a board. This view can quickly become complicated when it arranges your components and circuits across the various layers and tracks required to take the logical concept into the physical realm. You can even view the final board in exploded OpenGL 3 3D, which is a brilliant educational tool useful for any example boards you might want to download or share.

The GTK+ 3 interface is absolutely beautiful throughout, and the development team has succeeded in making their application a playground for experimentation. It's also brilliant having everything in one place, without having to skip between different applications or worry about whether one layer is going to be properly translated into a circuit. When you're finished, you don't just get a PCB you can order; you also get a fully populated and formatted bill of materials ready for your component order. If you've ever had to do this manually, you'll know this is half the effort of the entire circuit design. That all this can be found in a new and yet fully mature open source application is remarkable. There's never been a better time to brush up on your electrical engineering knowledge!

Project Website

UCC:x50-b-bold1. Board layout:/UCC After creating a circuit schematic, the board editor renders its netlist of circuits into a printable circuit board. UCC:x50-b-bold2. Real parts:/UCC Every component includes annotated parts and context-aware details on their specifications. UCC:x50-b-bold3. Parts pool:/UCC There are over 35,000 different components in the additional parts repository. UCC:x50-b-bold4. Parts editor:/UCC Add and annotate your own parts to use in schematics. UCC:x50-b-bold5. Schematic editor:/UCC This is where the logic of your circuit is designed using components from the pool. UCC:x50-b-bold6. Netlists:/UCC Individual circuits within your design are added to the netlist, which are directly translated onto the board layout. UCC:x50-b-bold7. 3D/2D view:/UCC See exactly what your populated board will look like, complete with layer explosion.

Music player

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • The sysadmin's daily grind: Pi-hole

    A strange rule seems to dictate that the most useless products and services have the most annoying online advertising. Columnist Charly blocks the garish advertising for all computers on his network centrally with the Pi-hole tool, which is not only for Raspberry Pi devices.

  • Privacy Appliances

    A Raspberry Pi with the right software filters out annoying ads and nasty trackers for end devices on your local network.

  • Pi-hole

    Supporting browser plug-ins, network-based DNS blockers like Pi-hole help protect you against online tracking and unwanted content.

  • Mistborn

    Mistborn bundles important Internet services on your home network and secures them with a WireGuard VPN tunnel, Pi-hole, iptables rules, and separate containers.

  • FOSSPicks

    Over the past couple of months, Graham's ever-versatile Steam Deck has synced books to an e-reader, played movies on a television, joined Mumble, recorded two podcast episodes, and even played a few games.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More