EE’s Dilemma – Design Parts or Boards

Most engineers would rather design PCBs than libraries. But how can you trust a library with other contributors?

Whenever I talk to electronics designers about what they dislike the most when it comes to creating electronics the answer is almost always the same. Part creation. It doesn’t matter if I’m talking to an experienced designer who’s been doing it for years or to a beginner whose been at it for 3 months, people don’t like “wasting” their time creating their components. Why is that?

There seems to be three basic reasons as to why people don’t like create their own components:

  1. Footprint, Symbol, 3D model Styles
  2. Trust
  3. Time

What if there was a way to solve all these issues and create a centralized database that we can all trust, agree on styling, AND not spend time creating? It may sound like a dream but I don’t think so, I think this is something completely within our grasp. Come with me and I will take you to the promised land.

Footprint & Symbol Styles

The first thing we need to do is to figure out how to solve the problem of style. We all have our preferred way of doing things, a way we like to view our schematics and boards. I propose we do the same thing that schools and the military do, uniforms. We take away the personalization of part creation and create a standard.

Now this isn’t a new radical idea, in fact its an old stale one but somehow it seems to be forgotten.  Way back in 1975 IEEE created the standard IEEE 315. This standard was made to fix this exact issue of how schematic symbols should look. I’m not sure exactly what happened but somewhere along the way people went their separate ways. It could be a new generation of designers or maybe people just didn’t want to change, either way that’s not the point. This standard was made for a reason and it should be followed.

The IEEE 315 standard is extremely comprehensive, so much so it includes schematic symbol elements allowing you to symbolize parts that haven’t even been invented yet. Let me explain. IEEE 315 gives a standard to construct any symbol, every line, dot, and feature has a meaning. With these tools available, one is able to construct any symbol for any possible component that does or does not exist.

IGBT Symbol Meaning

The next thing that we as designers need to come together on is the footprints / land patterns / decals for components. Just like with schematic symbols we don’t have a standard that we all are using despite there being a standard out there available to us. That standard is IPC-7351. IPC-7351 provides information on land pattern geometries used for the surface attachment of electronic components. This includes things like sizing and tolerance to insure there is sufficient area for all the appropriate solder fillets.

Caliper and CPU

So far we’ve taken a look schematic symbol and PCB footprint standards but there’s still one thing missing and that’s a standard for creating the 3D STEP model. And yes there is a standard for that as well, isn’t that great!? The standard for that is the JEDEC Publication No. 95. JEDEC 95 describes the dimensional and geometrical characteristics of “standard” component packages.

JEDEC_MO-012

Trust

Okay, so we’ve talked about how to standardize on schematic symbols, PCB footprints, and also 3D models. But what about the trust and time issue. We solve the trust issue by applying these standards. Once everyone or most people apply these standards to part creation as they should, we can all have a higher confidence that we’ve all done things correctly.

Of course nothing a person does is without error all the time. This is why we need an online database with everyone uploading their component models. And to be sure all components are up to standard we can crawl and verify each component as they’re uploaded. In addition to software verification, having users review and use components will give everyone a solid indication of which part is good and which is not.

Time

As you probably have guessed having this online database where users and professionals can upload their component symbols and models will save time, for everyone. It may surprise you but this isn’t a fantasy, well not completely. EE Concierge is a service that will create a complete component for you including schematic symbol, PCB footprint, and also a 3D model. The EE Concierge component making process follows the above industry standards so you know what you’re getting is correct and transferable to anyone. As for an online database filled with components, that’s where Octopart comes in. Octopart is a search engine for electronic components and industrial products. It includes things like a BOM scrubber, pricing and a bunch  more. It’s definitely worth checking out.

 

Schematic Style Guide

schematic-style-guide

After the block diagram, the schematic drawing is the very first stage in fleshing out your idea into a working design. It’s when you figure out your project’s electrical flow, and it serves as a crucial reference during the layout stage. For these reasons, it’s incredibly important to build your schematic in a way that is clear, comprehensive, and organized for both you and your teammates. A clean schematic will minimize your chances of making translational errors down the road, making reviews and debugs a breeze.

Here’s a style guide to help you keep your schematics legible and consistent (you can download a printable checklist of the Style Guide here!).

Organization

  • Strive to maintain a left-to-right flow.
    Have inputs on the left of symbols, outputs on the right – of course it’s not always possible but it’s a good rule-of-thumb. In general, don’t place pins on the tops of symbols (particularly true for rectangular symbols representing ICs, but there are exceptions, like an opamp symbol). Power symbols/flags should be pointed up and GND symbols pointed down.
  • Use flags/indirect connections rather than directly drawn nets.
    Only make direct net connections if they are short. This prevents the dreaded “spaghetti” effect and keeps the schematic readable.
  • Make all your pins visible. Avoid invisible pins, even if your CAD tool supports it.
    It’s better to keep everything visible to make it more likely that errors are caught.
  • If a pin is purposely left unconnected, mark it and avoid ambiguity.
    You can do this using your CAD tool’s no-connect symbol (typically an “X”). This signals to reviewers that the no-connect is intentional.
  • Avoid using 4-way connections.
    They make it unclear whether the connection is deliberate or a mistake. Use two 3-way connections to make it clear that it was intentional. This way, all 4-way connections default to being a mistake.
  • Place large groups of decoupling caps (ex. for large BGAs) in a separate dedicated section.
    It’s OK to place decoupling caps right beside the IC if there are fewer than 5. This keeps things clean.
  • Be consistent with the placement of your text.
    Things like reference designators, values, part numbers, etc. should be placed in the same manner for all components.
  • Organize your schematic by creating sections for major functions.
    These may be:

    • FPGA
    • Processor
    • Memory
    • Power – switching regulators
    • Power – linear regulators
    • Clock Generation
    • PCIe
    • Audio
    • Video
    • Board inputs
    • Board outputs
    • Decoupling

Naming Conventions

  • Give all nets clear, descriptive names.
    You should be able to tell what a net’s function is by its name alone. For example, use MEM_FLASH_A15 instead of just A15. This way, you know it’s address bit-15 of the flash memory.
  • Same things with Power
    • Always start with “VCC”. Makes all power nets easy to identify.
    • Include the voltage in the name to make debugging easier (ie. VCC_5V, VCC_3V3, VCC_0V9).
    • Special analog power nets can be designated with AVCC…
  • Ground: GND
    If you have separate ground islands, name them AGND, AGND_AUDIO.
  • Name all active low pins with a lowercase ‘n’ instead of an overline.
    (ie. RESETn, INTn,)
  • Indicate the positive and negative legs of differential pairs using lowercase ‘n’ and ‘p’. (ie. CLK_DDRp, CLK_DDRn)
  • Begin clock net names with “CLK”.
    Special attention is often paid to clock routing during layout so this naming convention is a worthwhile practice.
  • Use uppercases for all other pin names and net names.
    That is, except for the n/p suffixes mentioned above. Consistency is important to readability.
  • Use reference designators for all components and follow standard conventions.
    • BT – battery
    • R – resistors
    • RN – resistor networks
    • C – general capacitors
    • XC – decoupling capacitors (designs with hundreds of decoupling caps, like for large BGAs, may quickly run up the count if you only use “C”, so it’s good practice to keep a separate ref des for decoupling caps)
    • L – inductors and ferrites (alternative FB for ferrite bead)
    • FC – fiducial
    • T – transformers
    • D – diodes (this often includes LEDs)
    • Y – crystals
    • Q – transistors
    • P – multi-pin connectors
    • J – simple connectors (video connectors, audio connectors, etc.)
    • U – ICs
    • RG – power regulators (like LDOs)
    • SW – switches
    • TP – test points
    • H – holes/vias (sometimes it makes sense to include specific components on the schematic to designate corresponding holes on the layout, like in DDR routing)
  • Be specific with I/O pins.
    Parts with programmable I/O or I/O that can take on multiple functions should use pin names that reflect the function(s) selected for the particular design, rather than listing all the possible functions or using the generic pin names (like IO_B7_255). For busses, indicate the signal direction (input into the device, output from the device, or bi-directional) using lowercase i,o, and io prefixes to the signal names.

    • This is particularly useful for FPGAs (where almost all I/O are programmable). It’s very good practice to define your FPGA’s top pin-assignment in your FPGA software, compile to make sure it’s valid, export the pin-assignment, and use this as the basis for creating the symbol.
  • If your CAD software doesn’t have good features to indicate a net’s controlled impedance, include it in the net name.
    For example: VIDEO_IN_CVBS_Z75 (Z=Impedance, 75=ohms), PCIE_TX_ZD85 (ZD=differential impedance, 85=ohms)

Symbols

  • Order pins on the symbols by function, not by number.
    Place power pins near the top and ground pins near the bottom.
  • For IC packages with a thermal pad, create an additional pin on the symbol to connect it to the ground plane.
    The clearest way to do this is to name it GND_PAD with a pin number one greater than the total number of pins.
  • Create symbols by copying/pasting the pinout table from the datasheet into a spreadsheet.
    Then import this spreadsheet into your CAD tool. This is opposed to typing in the pin names/numbers manually. Copying and pasting minimizes the chances of data entry errors.
  • Use multi-part symbols for large devices to keep things organized.
    Break up the sub-symbols by major function. Have a separate symbol for power and ground. Using multipart symbols applies not only to large ICs but also to components like resistor networks (ie. a 16-pin package containing 8 resistors). Resistor networks are often used for series termination on large busses. It’s often cleaner to create a multi-part symbol where each part is a single resistor. This way, you can order the resistors on your schematic without nets crossing over when directly connecting them.

General

  • Include non-electrical components on the schematic to make sure they get included in the BOM and that the layout engineer knows about them.
    Things like fiducials, tooling/mounting holes, fans/heat sinks, breakaway tabs, etc.
  • Create a test-point symbol and connect it to pins for which you specifically want a test-point via to probe during debug.
  • Include lots of notes!
    Use brief text notes to explain why you connected certain things in a certain way. If a part has some pin-based config settings (using pull-ups/downs), use notes to indicate which settings you’ve specified for the design – you’d be surprised how often such pins are hooked up incorrectly compared to the note. Include notes to specify the I2C/SMBus addresses of various devices so you don’t have to look these up in the datasheets during debug. Use notes to convey layout guidelines. It’s always better to have more information than too little.