Converting EAGLE Netlists to PADS for FreePCB

I’ve been using EAGLE for my circuit design, and for PCB layout when the boards are small enough. When I needed to lay out a larger board than the free version of EAGLE permits (about 4″ x 3″), I turned to FreePCB, a very nice free layout program written by an engineer dissatisfied with the state of free and inexpensive PCB software he was able to find. EAGLE can export netlist files (connections made between components), and FreePCB can import them, so it sounds like a perfect arrangement.

The only snag is, FreePCB uses PADS-PCB netlist format, which is apparently a bit of a de facto standard; and EAGLE uses what appears to be its own format. I wasn’t able to find any information on converting between the two; but the FreePCB author thought it would be a relatively simple matter to write a program to do the job, and so I did.

I know other people will be interested in using this–in fact, I’ve already got a request to share the script. I was going to clean it up and make it pretty first, but it’s probably more important to get the software out there and let other people start helping me build the parts conversion list. :-)

Download the Script

So without further ado, here it is, warts and all.

eagle2pads 2006-Aug-25 version .90


It’s a Perl script, so if you’re on a Unix platform (Unix, Linux, Mac OS X), save this file as-is, make it executable (chmod +x eagle2pads), and use it.

If you’re on Windows, I’m a little rusty on Perl on Windows; but for starters, download and install ActiveState’s ActivePerl (lower left for the download link), then save this file as eagle2pads.plx, then associate the plx extension with ActivePerl.

From EAGLE, export your netlist as project.enet and your partlist as project.epart, where project is whatever you want to call whatever you’re working on (but it has to match on the net- and partlist files).

Then from a command line (I don’t know offhand how to make this work from the Windows GUI–you’ll need a DOS prompt), run

eagle2pads project

The script will generate the file in the same directory, ready to import into FreePCB (or whatever else uses PADS, I guess).


EAGLE and FreePCB use different package names, so they have to be translated. Edit the xpackage routine at the end of the script–I’ve only made translations for the packages I’ve used so far.

FreePCB installs a very small parts/package library by default, so I was creating my own packages and putting them into the script. Later, I found out that FreePCB comes with a much larger optional library; so I need to install the library, see if these additional packages are available in it, and change the script to reference the proper standard (optional) versions rather than my own hacked up versions.

In both cases, when you import into FreePCB, it won’t recognize package types that aren’t properly translated. EAGLE’s package names are intelligible enough, and they’re attached to the component IDs, that you can probably figure out what’s what. Find the corresponding package name in FreePCB, add it to the script, and run it again.

Non-caveat: I’ve had very good luck with FreePCB not losing work I’ve already done when I change parts in EAGLE or update the translation table in eagle2pads. Your mileage may vary, so save your work before running another export/translate/import cycle.

Feedback / Support / Enhancements

If you find this useful, or interesting, or almost but not quite useful, or just have something to say about it, I’d love to hear from you! WordPress (the blog hosting software I use) doesn’t seem to have a way to add comments to a “page;” so if you have something to say, please go to this post and put your comments at the bottom.

If you need help with the script, I’ll try to provide it. If you have parts to add to the conversion table, I’ll add them. If you have suggestions for changes, I’ll consider them. If you just want to say thanks, bless you!

If you post a comment to me, please do the following:

  • Give your real email address, whether you want a reply or not. Your address will not be posted on the site; I’m just curious to learn who’s reading this stuff.
  • Indicate whether you’d like a reply by email.
  • Indicate whether you’d like your comments posted on the blog.
  • Indicate whether you’d like your contributions credited in the script and/or on this page.