EAGLE to PADS (FreePCB) Netlist Converter

Based on a reader request, I’ve posted my EAGLE to PADS netlist conversion script, for drawing circuits in EAGLE and exporting them to produce in FreePCB (if the board is too big to draw in free EAGLE).

If you have questions, suggestions, or package translation contributions, please submit them as a comment attached to this post. If you’re viewing this post alone on a page, the comment box should be visible immediately below. If you’re viewing this inline in my blog, you should be able to click the “Comments” or “No Comments” link below to get to the comment box.

24 Responses to “EAGLE to PADS (FreePCB) Netlist Converter”

  1. Vignesh E says:

    Hi Keith,

    I am one of the users of FreePCB and I know the importance of such converters. Though I don’t use Eagle, but many others do. Your work will give a nice bridge between Eagle and FreePCB. Good work, thanks.

    Regards,
    Vignesh

  2. Frans says:

    Greetings,

    your Eagle to FreePCB script gave me lot’s of inspiration to achieve the same goal, albeit with another PCB program. I normally use EAGLE SCHEMA/PCB for all kinds of mostly digital stuff, but for specific analog purposes I prefer LAYO1. It’s an old fashioned ‘drawing’ program, the autorouter is something we shouldn’t even discuss, but otherwise it does it’s job excellent. There is no real schematic front-end for Layo, the import facility is based on the MENTOR file format as used by ORCAD.
    So after some heavy modification I have now e created a version that successfully converts EAGLE to LAYO1 for both .net and .cmp files, including translation of packaging.
    If you would like to obtain a copy, just drop me a line.

    Thanks again,
    /Frans

  3. William says:

    I found this script to be very useful. I had a circuit that I had drawn the schematic for in eagle, and the size limit on the board became a problem, so I used this script to transfer all the parts and nets to FreePCB.

    I only had a few problems, one of which of course was the package translation, but that just involved finding the package name in FreePCB and appending it to the list in the script.
    The other problem I had dealt with the width of the columns in the output files from eagle. They were different from the default script. It seemed to change depending on the parts, maybe it automatically sizes them for the specific layout. But it was an easy change, just change the widths here:
    unpack(“A9 A16 A16 A15 A16 A6″, $_);
    so that they match the size of the columns; uncommenting the warn command really helped a lot in finding the problem.

    Overall, extremely useful tool, saved me a ton of time.

    Thanks,
    William

  4. Keith Neufeld says:

    William, glad it could help!

    When I wrote the script, I didn’t have any spec for EAGLE’s partlist and netlist file formats, so the best I could do was assume that my files were representative and code accordingly. As a number of people have found out and I’ve experienced myself, it turns out the EAGLE files dynamically size the columns for whatever content you have in them, so they’re (probably) going to be different widths for every project.

    I’ve since written an update that first parses the table header to determine column widths, then parses the rest of the files with whatever sizes it found. It seems to work really well, and I’m sorry I haven’t got around to posting it for download yet. Still, changing the field widths in the unpack() command is a great workaround.

    Thanks for the feedback!

  5. VinnyD says:

    Does anyone know if there is an Eagle PCB to PADS PCB translator or any services out there that offer such a conversion?

    Thanks
    VinnyD

  6. Keith Neufeld says:

    Vinny, yes, I know of one. It’s even available for free download.

  7. VinnyD says:

    So Keith …. you now have my attention …. would you know from which site I can get this free download?

    Thanks
    VinnyD

  8. Keith Neufeld says:

    Vinny, I’ll give you a hint: You’re very warm.

  9. VinnyD says:

    Okay … duh!!! I get the message … but maybe I am blind, but the only thing I can find on this site is the Eagle to PADS netlist translator … is it in front of me and I just can’t see it?

    VinnyD

  10. Keith Neufeld says:

    Vinny, I apologize — are you looking for something to translate an entire, already-laid-out PCB from EAGLE to PADS? To my knowledge, that doesn’t exist; EAGLE (as far as I can tell) uses a proprietary format for their schematic and PCB files. You’re right in thinking that my script only goes from EAGLE schematics to PADS.

    You might look for a Gerber to PADS translator. EAGLE will output Gerber files, and you’d lose a lot of information, but you might get something usable.

    There’s also a tool called something like EAGLE-3D that creates ray-traced graphical visualizations of what boards designed in EAGLE will look like when they’re produced in the real world. I haven’t used it myself, but I’m assuming it must use an EAGLE ULP to output component information — which you might then be able to parse and translate into PADS format.

    Good luck; and if you’re willing, I’d be interested in having you post here information about whatever you find out.

  11. VinnyD says:

    Thanks … I will let you know how I make out … I suspect that my only course of action will be to take the Gerber files and go through something like CAM350 into PADS ….

    VinnyD

  12. VinnyD says:

    Keith … quick question for you … Can you produce an IPC netlist out of Eagle?

    VinnyD

  13. Keith Neufeld says:

    Vinny, I’m not familiar with IPC and I don’t know whether EAGLE can do it.

  14. VinnyD says:

    Thanks Keith … IPC netlist may also be known in the industry as IPC-D-356 … but thanks anyway.

    VinnyD

  15. John-Philip says:

    Dear Keith,

    I’m more of a C programmer, so I can read the Perl, but don’t know how to change it.

    You can change the package attribute ($epackage) to pass the value and the footprint. The format is “Value@Footprint”. Example “AD9910@TQFP100″

    Might be useful to pass the resistance value to FreePCB for those of us that prefer to print the value rather than the reference on the silk-screen.

    Regards,
    JP

  16. Keith Neufeld says:

    JP, you should be able to play around with this and try it out, and then revert your copy back if it doesn’t work the way you want.

    Try this:

        printf NET "%-7s%s@%s\n", $part, $value,
    	    exists $$fpackage{$epackage}
    	    ? $$fpackage{$epackage}
    	    : $epackage;
    

    Note that you could inline $value into the printf() format, because Perl is flexible that way; but since $part is an argument because it takes a special formatting string for left-alignment, and the package is an argument because of the ternary operation, it looks cleaner to me to make $value an argument as well.

  17. Alex says:

    Hi Keith,

    I am trying to use your script file but fail many times. The problem is how
    to associate the plx file with the ActivePerl. And I can’t use DOS to run this
    file, too. Pls advise.

    Thanks
    Alex

  18. Hi,
    I read through the posts and am not entirely clear…

    I use Mentor graphics PADS for schematic capture (and layout) My customer just sent me an Eagle schematic.

    If I send him your translator, will he be able to then export the schematic in Mentor Graphics PADS???

    Thanks,
    Patrick

  19. Keith Neufeld says:

    Patrick, sorry, but I don’t actually know of a way to export an EAGLE schematic and import it into something else. My script allows you to export a netlist and partlist in order to import into a separate board layout package, not export the schematic.

    I think you’re best off reentering the schematic into Mentor. EAGLE licenses start at $500 for schematic + layout (without autorouter) for commercial use and limited to boards up to about 4″x6″, plus of course you’d have to learn a new package. Likely not worth it for just the one customer.

  20. Dandan says:

    Hi Keith,

    Script worked fine in WINXP with ActivePerl 5.10.
    But how can I be sure that all the nets translated to PCB netlist?

    There is a company that claims to have such translator:
    http://www.eaglecentral.ca/purchase/eet_pads.php?product=1&d=1

    Thanks a lot,
    Dandan

  21. Keith Neufeld says:

    Alex (or anyone), I think you right-click on the .plx file and choose “Open with …”, then find your ActivePerl installation and pick it, and check the box to always open with this application.

    Dandan just got this working and may be able to answer this.

  22. Keith Neufeld says:

    Dandan, I think the best way to make sure everything translated is to bring up the board in your PADS editor or viewer. If you see everything there, then it worked. I don’t mean that as a glib answer — you yourself are ultimately the best test.

    However, at a technical level, I can tell you this: This version of eagle2pads doesn’t work with dynamic EAGLE field widths, so you probably had to adapt the unpack line to the characteristics of your file. Once you’ve done that, the script will print out every single part, whether it was able to translate it or not; so at worst, you’ll get parts that your PADS editor doesn’t recognize. And it always prints out every net, formatted appropriately, so you shouldn’t lose anything there.

    I’ve written an updated version that deals much better with variable field widths and I need to get it posted for download.

  23. Angel says:

    Hi Keith,

    I would like to build up a Netlist to implement a DC electrical network on PSpice, starting from components and nodes’ data in an Excel sheet. Is there any way to do it?

    Thanks in advance
    Angel

  24. Keith Neufeld says:

    Angel, if you have the format specification for PSpice input files, then yes, I expect it would be possible to do.

Leave a Reply