ODB++: CAD to CAM Data Exchange File Hierarchy Format for PCB Fabrication

Posted by

What is ODB++?

ODB++, which stands for Open Database ++, is a comprehensive and standardized CAD to CAM data exchange format used in the PCB (Printed Circuit Board) fabrication industry. Developed by Mentor Graphics (now part of Siemens), ODB++ has become the de facto standard for transferring PCB design data from CAD (Computer-Aided Design) to CAM (Computer-Aided Manufacturing) systems.

ODB++ provides a single, unified data structure that contains all the necessary information for PCB fabrication, including:

  • Layer stackup and materials
  • Copper artwork for each layer
  • Drill data and hole sizes
  • Solder mask and silkscreen data
  • Netlist and component placement
  • Dimensional data and board outline

By consolidating all this data into one intelligent, hierarchical file format, ODB++ streamlines the handoff between PCB design and manufacturing, reducing errors, inefficiencies, and the need for multiple disparate files.

Advantages of ODB++ over Gerber Files

Traditionally, PCB fabrication data was transferred using Gerber files – a simple vector image format that represents copper layers, solder mask, drill data etc. as separate files. While Gerber has been widely used for decades, it has several limitations compared to more modern formats like ODB++:

Feature Gerber ODB++
Intelligent data
Unified file structure
Dimensional data
Netlist information
Standardized format

Some key advantages of ODB++ over Gerber include:

Intelligent Data Structure

ODB++ files contain not just graphical data, but also include intelligent information about nets, components, pins, vias etc. This allows for more robust verification and enables intelligent CAM editing.

Unified File Format

Instead of dealing with multiple Gerber files, drill files, netlist files etc., ODB++ unifies all fabrication data into a single hierarchical file structure. This greatly simplifies data management.

Inclusion of Netlist and Component Data

ODB++ files include a full netlist describing component-to-component connections, as well as component placement information. Gerber files lack this data, requiring separate files to convey it.

Standardized Format

While Gerber files can differ between CAD vendors and Releases, ODB++ provides a standardized, well-documented format. This makes it easier for PCB manufacturers to develop robust CAM workflows around ODB++ data.

ODB++ File Structure and Contents

An ODB++ database is composed of a hierarchy of folders and files that together fully describe a PCB design. The top-level folder is named matrix, and contains the primary sub-folders and content files:

📁 matrix
 ┣ 📁 layers
 ┣ 📁 components 
 ┣ 📁 packagedefs
 ┣ 📁 stepedefs 
 ┣ 📁 sym  
 ┣ 📄 features
 ┣ 📄 matrix
 ┗ 📄 misc

Let’s break down the key contents of each folder/file:

layers folder

The layers folder contains sub-folders for each physical/logical layer in the PCB stackup. These layer folders then contain the vector data (in ODB++ format) that defines copper artwork, solder mask, paste, silkscreen etc. on that layer.

Common layer folder names include:

  • top – top copper layer
  • bottom – bottom copper layer
  • soldermask_top – top solder mask layer
  • silkscreen_top – top silkscreen layer
  • drill – drill and hole data
  • vpt – via plating data

components folder

The components folder contains a file for each component placed on the board. These files define the component’s reference designator, placement location, rotation, side of board etc. They reference the logical symbol for the component from the sym folder.

packagedefs folder

This folder contains mechanical models (in ODB++ format) for each unique component package used on the board. These define the physical pad/pin geometry and dimensions of the package footprints.

stepedefs folder

This folder optionally contains 3D STEP models for each component, allowing the PCB assembly to be viewed in 3D CAD tools.

sym folder

The sym folder contains the logical symbol definitions referenced by the component files. These define the schematic symbol of the component, with named pins that map to the physical pads defined in the packagedefs.

features file

The features file is a key part of ODB++, defining all copper features on the board (traces, pads, copper pours etc). Features are defined as closed contours, with referenced to their associated net, component, and pin.

matrix file

The matrix file contains the layer stackup definition, specifying layer order, layer types, materials, dielectric constants and thicknesses.

misc file

The misc file contains miscellaneous setup information for the ODB++ database.

Automated DFM Checking with ODB++

One of the key benefits of the intelligent data in ODB++ is the ability to perform automated Design-For-Manufacturability (DFM) checks. By analyzing the features, netlist, layer stackup etc., CAM software can quickly identify potential manufacturing issues like:

  • Spacing violations (traces too close together)
  • Annular ring violations on vias and pads
  • Copper slivers and acid traps
  • Missing solder mask between pads
  • Drill to copper clearance issues

Identifying these problems before manufacturing can save significant time and cost. The structured, intelligent data in ODB++ makes these automated DFM checks possible in a way that traditional Gerber data did not.

Working with ODB++ in PCB CAD Software

Most major PCB CAD tools now support exporting ODB++ manufacturing data. The specifics vary by tool, but generally involve the following steps:

  1. Complete your board layout, routing, and stackup definition.
  2. Run a Design Rule Check (DRC) to verify the design is error-free.
  3. Generate manufacturing outputs, selecting ODB++ as the format.
  4. Specify the output folder and any options (layer subset, drill format etc.)
  5. Review the generated ODB++ data in a viewer to confirm completeness.

Some PCB CAD tools with ODB++ export capability include:

  • Altium Designer
  • Cadence Allegro
  • Mentor PADS
  • KiCad (via external plugins)
  • Zuken CR-8000

It’s important to work with your PCB manufacturer to understand their specific ODB++ requirements, as there can be some variances in required file structure, naming conventions etc.

ODB++ Viewer Software

To review ODB++ manufacturing data, you need a specialized ODB++ viewer software. Some PCB manufacturers provide their own proprietary viewers, but there are also several 3rd party commercial and open-source options available:

Viewer Vendor Type
FAB 3000 Siemens EDA Commercial
GerbTool Ucamco Commercial
GC-Prevue GraphiCode Commercial
ODBviewer++ MacroFab Open-Source

These viewers allow you to interactively explore the ODB++ database, viewing copper layers, solder mask, drill data etc. They also typically include measurement tools, and the ability to run automated DFM checks on the loaded data.

FAQ

Q: Is ODB++ an open standard?

A: While ODB++ was originally developed by Mentor Graphics (now Siemens), the full specification has been published, and it has become a de facto open standard in the industry. Multiple CAD and CAM vendors now support ODB++.

Q: Can I still use Gerber files, or do I have to use ODB++?

A: Most PCB manufacturers still accept Gerber files, so using ODB++ is not necessarily a requirement. However, as ODB++ has significant advantages and is widely supported, it is often recommended to use it when possible.

Q: What file extension is used for ODB++ files?

A: ODB++ is actually a folder structure containing multiple files, so there isn’t a single file extension. The top level folder is conventionally named matrix, but this is not a strict requirement.

Q: Does ODB++ support rigid-flex and HDI designs?

A: Yes, ODB++ has full support for complex rigid-flex layer stackups and High-Density Interconnect (HDI) features like microvias and buried vias. The matrix file defines the layer structure and materials to fully specify the stackup.

Q: How can I learn more about working with ODB++?

A: Siemens EDA (formerly Mentor Graphics) provides a wealth of information on their website, including tutorials, white papers, and videos about ODB++. PCB design forums and user groups are also a great resource for learning from the experiences of other engineers.

Leave a Reply

Your email address will not be published. Required fields are marked *