What is ODB++?
ODB++ is a file format that encapsulates all the necessary information required for PCB fabrication, including:
- Layer stackup information
- Material properties
- Copper features
- Drill data
- Netlist
- Component placement
- Testpoints
- Fiducials
By providing a complete and structured set of data, ODB++ eliminates the need for multiple file formats and reduces the risk of errors and inconsistencies during the data transfer process.
Benefits of using ODB++
The adoption of ODB++ offers several benefits to both PCB designers and manufacturers:
-
Standardization: ODB++ provides a standardized format for data exchange, ensuring consistency and compatibility across different CAD and CAM systems.
-
Efficiency: By consolidating all the necessary information into a single file format, ODB++ streamlines the data transfer process and reduces the time and effort required for data preparation and handling.
-
Accuracy: ODB++ maintains the integrity of the design data, minimizing the risk of errors and discrepancies that may occur when using multiple file formats.
-
Collaboration: The standardized nature of ODB++ facilitates collaboration between PCB designers and manufacturers, as both parties can work with the same data format.
-
Flexibility: ODB++ supports a wide range of PCB fabrication processes and technologies, making it suitable for various applications and industries.
ODB++ File Structure
The ODB++ file structure is organized hierarchically, with each piece of information stored in separate files within a directory tree. The main directory, typically named jobname.tgz
, contains several subdirectories and files that hold specific types of data.
Here’s an overview of the ODB++ file hierarchy:
jobname.tgz/
├── steps/
│ ├── pcb/
│ │ ├── layers/
│ │ ├── components/
│ │ ├── netlists/
│ │ ├── eda/
│ │ └── data/
│ └── misc/
├── layers/
├── stackup/
├── matrix/
├── xml/
└── miscellaneous/
Let’s explore each directory and its contents in more detail:
steps/
The steps/
directory contains the main design data for the PCB. It is further divided into two subdirectories:
pcb/
The pcb/
directory holds the specific design data for the PCB.
-
layers/
: This directory contains individual files for each layer of the PCB, such as copper layers, solder mask, silkscreen, and more. These files are typically in Gerber or ODB++ Format. -
components/
: This directory stores information about the components used in the PCB, including their placement, orientation, and properties. -
netlists/
: Thenetlists/
directory contains the netlist data, which describes the interconnections between components on the PCB. -
eda/
: This directory holds any additional data specific to the electronic design automation (EDA) software used to create the PCB design. -
data/
: Thedata/
directory contains miscellaneous data related to the PCB design, such as drill files, test point information, and more.
misc/
The misc/
directory is used for any additional data that doesn’t fit into the other categories, such as assembly drawings or fabrication notes.
layers/
The layers/
directory contains the individual layer files for the PCB, similar to the steps/pcb/layers/
directory. This directory is used when the layer data is not associated with a specific step in the fabrication process.
stackup/
The stackup/
directory holds information about the layer stackup of the PCB, including the material properties, layer thicknesses, and dielectric constants.
matrix/
The matrix/
directory contains the bill of materials (BOM) and component attribute data in a matrix format, making it easy to import into spreadsheet software for analysis and management.
xml/
The xml/
directory stores any additional data in XML format, such as design rules, constraints, or custom attributes.
miscellaneous/
The miscellaneous/
directory is used for any supplementary files or information that doesn’t fit into the other directories, such as documentation or user-defined data.

Creating ODB++ Files
To create ODB++ files from a PCB design, you’ll need to use a CAD system that supports the ODB++ format. Most modern PCB design software, such as Altium Designer, Cadence Allegro, and Mentor Graphics PADS, can generate ODB++ files directly or through an export function.
When exporting your PCB design to ODB++, ensure that all the necessary layers and data are included in the output. Some CAD systems may require you to configure the export settings to include specific information, such as drill data or testpoint locations.
Once the ODB++ files are generated, they can be compressed into a single archive file (usually with a .tgz
extension) for easy transfer to the PCB manufacturer.
Importing ODB++ Files into CAM Systems
PCB manufacturers use CAM systems to process the design data and prepare it for fabrication. Most CAM systems, such as Genesis 2000, Ucamco UcamX, and Frontline InCAM, can directly import ODB++ files.
To import an ODB++ file into a CAM system, follow these general steps:
-
Decompress the ODB++ archive file (
.tgz
) to extract the directory structure and individual files. -
In your CAM software, look for an option to import ODB++ data. This may be located in the “File” menu or a dedicated “Import” section.
-
Select the main ODB++ directory (
jobname.tgz
) or the individual subdirectories and files you wish to import. -
Configure any import settings, such as layer mapping or units, as required by your CAM system.
-
Start the import process and verify that all the necessary data has been correctly transferred.
Once the ODB++ data is imported, you can use the CAM system’s tools and features to analyze the design, generate manufacturing files, and perform any necessary modifications or optimizations.
Best Practices for Working with ODB++
To ensure smooth data exchange and avoid issues during PCB fabrication, follow these best practices when working with ODB++ files:
-
Use a consistent naming convention: Establish a clear and consistent naming convention for your ODB++ files, including the job name, revision number, and any other relevant information.
-
Include all necessary data: Make sure that your ODB++ files contain all the required information for PCB fabrication, such as layer data, drill files, and component placement details.
-
Verify the data: Before sending the ODB++ files to your PCB manufacturer, review the data to ensure accuracy and completeness. Use your CAD system’s design rule checks (DRCs) and other verification tools to catch any errors or inconsistencies.
-
Communicate with your manufacturer: Maintain open communication with your PCB manufacturer to discuss any specific requirements, constraints, or preferences they may have regarding ODB++ data.
-
Keep your software up to date: Regularly update your CAD and CAM software to ensure compatibility with the latest ODB++ specifications and features.
Comparing ODB++ to Other PCB Data Formats
While ODB++ has become the most widely used data format for PCB fabrication, there are other formats that serve similar purposes. Let’s compare ODB++ to some of these alternatives:
ODB++ vs. Gerber
Gerber is another popular data format for PCB fabrication, and it has been in use for decades. However, Gerber files are less comprehensive than ODB++ and require multiple files to convey the same information. Gerber files are also more prone to interpretation errors and inconsistencies.
ODB++, on the other hand, provides a more complete and structured data package, reducing the risk of errors and simplifying the data transfer process.
ODB++ vs. IPC-2581
IPC-2581 is an open, neutral format for PCB design data exchange. Like ODB++, it aims to provide a comprehensive and standardized way to transfer PCB design information. However, IPC-2581 is not as widely adopted as ODB++ and may not be supported by all CAD and CAM systems.
ODB++ vs. DXF
DXF (Drawing Exchange Format) is a general-purpose CAD data format that can be used for PCB design data exchange. However, DXF is not specifically tailored for PCB fabrication and may not include all the necessary information, such as layer stackup or drill data.
Frequently Asked Questions (FAQ)
-
What software can I use to create ODB++ files?
Most popular PCB design software, such as Altium Designer, Cadence Allegro, and Mentor Graphics PADS, support the creation of ODB++ files. Check your software’s documentation or contact the vendor for specific instructions on generating ODB++ output. -
Can I view or edit ODB++ files without specialized software?
ODB++ files are binary and require specialized software to view or edit. However, some free viewer applications, such as ODB++ Viewer by Mentor Graphics, allow you to explore the contents of an ODB++ file without the need for a full-fledged CAD or CAM system. -
How do I ensure my ODB++ files are compatible with my PCB manufacturer’s requirements?
Communicate with your PCB manufacturer to understand their specific requirements and preferences for ODB++ data. They may provide guidelines or templates to help you prepare your files. Additionally, make sure to use the latest version of your CAD software and follow best practices for data preparation. -
What should I do if I encounter issues with my ODB++ files during fabrication?
If you experience problems with your ODB++ files during the fabrication process, contact your PCB manufacturer immediately. They may be able to help you identify and resolve any issues with the data. In some cases, you may need to regenerate the ODB++ files or provide additional information to address the problem. -
Is ODB++ an open standard?
While ODB++ was initially developed by Valor Computerized Systems (now part of Mentor Graphics), the format has been made available to the public and is widely supported by various CAD and CAM software vendors. However, it is not an official open standard like IPC-2581, which is maintained by the IPC (Association Connecting Electronics Industries).
Conclusion
ODB++ has revolutionized the way PCB design data is exchanged between CAD and CAM systems, providing a comprehensive, standardized, and efficient format for PCB fabrication. By adopting ODB++, PCB designers and manufacturers can streamline their workflows, reduce errors, and improve collaboration.
As the electronics industry continues to evolve, the importance of robust data exchange formats like ODB++ will only grow. By understanding the structure, benefits, and best practices associated with ODB++, you can ensure that your PCB designs are accurately and efficiently translated into physical boards, ultimately leading to faster time-to-market and higher-quality products.