element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Autodesk EAGLE
  • Products
  • More
Autodesk EAGLE
EAGLE User Support (English) Create library device to use board as component?
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Autodesk EAGLE to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 10 replies
  • Subscribers 180 subscribers
  • Views 1945 views
  • Users 0 members are here
  • package
  • library
Related

Create library device to use board as component?

gwideman
gwideman over 10 years ago

What's the best way to create a device from an existing Eagle schematic/board design?

 

That is, you have an existing board, for which you have the Eagle project, and you now want to make a library component so you can use that board as a component on another board.

 

Example, picked at random:

https://www.adafruit.com/products/269

https://github.com/adafruit/Adafruit-MAX31855-breakout-board

 

... and you want to use that board as a component on a new board.

 

Obviously the existing Eagle board project contains a lot of data that could be used in the library component, but I am not seeing a straightforward path to making that happen.

 

I've tried two approaches, neither of which worked well. (Using the example board.)

 

1. I tried copying salient layers from the Board editor to the Library package editor: Layers Pads, Dimension, tPlace, tOrigins, bOrigins, Drills, Holes

 

  • During the group Copy process (Board editor viewing the source board) I got error message: "Can't backannotate this operation. Please do this in the schematic!". This seems bogus, since Copy shouldn't change anything in the source data. Nonetheless, something did appear to get copied to the clipboard ...
  • During the Paste operation (into the destination library component Package), the initial movable visualization showed the entire board data seemingly about to be pasted (not just the layers I'd selected), but then when I went to actually paste, I got message "Skipped unsuitable objects", and the only things that actually pasted were items on the Dimension and tPlace layers. So, no pads or holes.

 

2. An alternate approach I tried was to use an image of the board as an underlay in the Package editor, over which to stick all new pads, holes, text and so on.

 

  • I made an image of the board's package, either using Eagle layout editor Export > Image, or just a screen shot of the layout
  • I used import-bmp.ulp, to get this background into the Package editor.  This "works", though it converts the bitmap into a huge mess of rectangles and/or lines, on separate layers per color. It's good that they are on separate layers, but to use this background of course it must be visible, in which this proliferation of shapes makes it difficult to pick and move the actual useful new pads, text and so on.
  • This seems very manual and crude, failing as it does to take advantage of the exact pad positioning, outline, holes, pad and pin names and so on that's already in the existing board project.

 

Is there a better way to go about this?

 

-- Graham

  • Sign in to reply
  • Cancel
  • gwideman
    0 gwideman over 10 years ago

    Additional note:

     

    If creating the new component mostly manual, one time-saver is to find the library components that the original board used (for example, its headers), and copy that component's package into the new library component.  For this purpose, it can be useful to open the original board file and export its library using exp-lbrs.ulp.

     

    Still laborious, but saves having to recreate individual pads and their silkscreens.

     

    -- Graham

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Morosh
    0 Morosh over 10 years ago

    Try "http://www.cadsoftusa.com/downloads/file/hierarchical_v1.1.zip"

     

    HTH

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gwideman
    0 gwideman over 10 years ago in reply to Morosh

    Hi Morosh, thanks for the suggestion.

     

    I see how this collection of scripts and ULPs address hierarchical design (presumably less needed with Eagle 7?), but I don't see how it relate to my problem.

     

    Bear in mind, I'm not trying to do hierarchical design where I am revising the smaller module so its schematic can become part of a larger schematic, from which to make a single integrated board.

     

    I actually want to use the already existing physical product as a plug-in (or solder-on) component on a new board.

     

    I don't need to include the existing board's schematic in my own hierarchical schematic, nor do I want the existing board's circuitry to be "reprinted" onto my new board. I just want to use the existing board, as is, as a component. Hence I need a library part for that existing board.

     

    I hope I didn't misunderstand your scripts and ulps -- but I think they don't help for my task (except perhaps as sample code if I need to write this from scratch).

     

    -- Graham

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Morosh
    0 Morosh over 10 years ago in reply to gwideman

    these collection of scripts and ulps serve two goals: hierarchical designs and transforming a couple schematic/board to a device in a library so it can be used as a normal component, simply don't use ulps for hierarchical designs

    HTH

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gwideman
    0 gwideman over 10 years ago in reply to Morosh

    Hi Morosh -- I messed around with this for an hour in hopes of understanding what it does but got stuck.

     

    First, my guess was to do this:

     

    • Open the source project (in this case https://github.com/adafruit/Adafruit-MAX31855-breakout-board, v2). Open both the schematic and the board.
    • Run your script make_device.scr, which in turn calls several ulps.

     

    I ran into several problems, and finally got to one I don't know how to solve, so I stopped.

     

    1. The generated toto.scr file includes lines to rem existing dev and sym. This causes error dialogs to appear. I modified code to avoid those dialogs, but later discovered that was unnecessary, it's possible to just OK the error dialogs and continue.

     

    2. I ran into further errors attributable to there being a space in the file name of the schematic and board which the code didn't handle. I fixed that by renaming the board and schematic.

     

    3. Now the code hits an error at:

     

    create_package.ulp   "Reference to uninitialized object variable"

     

          E.package.contacts(c) {

              dia = c.pad.diameter[1]/GRID_DIV;   <---- error

              xx1= c.pad.x/GRID_DIV;

     

    It looks like c should be initialized by contacts(), so I'm not sure what's going on, and I'm not familiar with what debugging strategies are available for eagle ulps.

     

    -- Graham

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Morosh
    0 Morosh over 10 years ago in reply to gwideman

    Actually, those ulps and scripts don't support SMDs. I'll try to update them ASAP.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gwideman
    0 gwideman over 10 years ago in reply to Morosh

    Morosh:  Thanks for the reply. I infer from your comment that the error occurs because some pads don't have holes?

     

    Anyhow, I'll be very interested to see what your tool does, once it's working. I'm puzzling whether it will know which pads are for connectors that correspond to the "device pins", and also whether it will copy the mounting holes to the new device.  I guess if it copies too much, those elements can always be deleted.

     

    Thanks for looking at this.

     

    -- Graham

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • autodeskguest
    0 autodeskguest over 10 years ago in reply to gwideman

    On 8/7/2015 7:47 PM, Graham Wideman wrote:

    Additional note:

     

    If creating the new component mostly manual, one time-saver is to find

    the library components that the original board used (for example, its

    headers), and copy that component's package into the new library

    component.  For this purpose, it can be useful to open the original

    board file and export its library using exp-lbrs.ulp.

     

    Still laborious, but saves having to recreate individual pads and their

    silkscreens.

     

     

    Hi Graham,

     

    I think the best way to handle this is to use the EXTERNAL attribute

    to to create a symbol representing that board.

     

    Check out the libraries that Newark distributes for Arduino, BeagleBone,

    and Raspberry Pi.

     

    They use this method to indicate on the schematic that an external board

    needs to be plugged into.

     

    I think this is what you need from reading the rest of the posts.

     

    Let me know if there's anything else I can do for you.

     

    Best Regards,

    Jorge Garcia

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gwideman
    0 gwideman over 10 years ago in reply to autodeskguest

    Hi Jorge: Thanks for the reply.

     

    I am pretty sure you misunderstood this question.  In a separate thread I asked how to represent an off-board component, for which you suggested using the [underscore]EXTERNAL[underscore] attribute, and that was great (-ish... still requires separate library part -- sniff).

     

    Here I'm asking how to start with schematic/board "A", (one that probably has headers on it that can plug into another board), and use that existing project "A" to create a device/package/symbol ("A-As-Component") that can be used on schematics/boards ("B"..."Z") that can receive A-As-Component.

     

    I don't see how EXTERNAL helps at all with that.

     

    > Check out the libraries that Newark distributes for Arduino, BeagleBone, and Raspberry Pi.

    > They use this method to indicate on the schematic that an external board needs to be plugged into.

     

    Actually, I just used the Arduino library in another project. It doesn't involved indicating EXTERNAL anywhere. It provides an Arduino symbol/package/device which gets *included* on the new PCB -- that's kind of the point.

     

    But since you bring it up, the process I'm asking about is the process for producing such a library component (like Arduino) when you already have the schematic and footprint of the Arduino.

     

    -- Graham

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • dar303
    0 dar303 over 6 years ago in reply to gwideman

    I am looking to do the exact same thing! Did you ever solve this?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube