ODB++
ODB++ is an open, hierarchical database format designed for the transfer of printed circuit board (PCB) design data from electronic design automation (EDA) tools to manufacturing systems, enabling a complete digital thread across the PCB lifecycle.[1][2] Originally developed by Valor Computerized Systems Ltd. in 1995 as a proprietary solution to streamline data exchange and improve manufacturing accuracy, ODB++ evolved into a neutral, industry-standard format that consolidates all essential PCB information—including layers, nets, drill data, apertures, and attributes—into a single directory structure, reducing errors associated with fragmented file sets like Gerbers.[3][4] Following Valor's acquisition by Mentor Graphics in 2010 and subsequent integration into Siemens in 2021, ODB++ has been extended into a family of formats, including ODB++Design for core PCB layout transfer, ODB++Process for assembly and test planning, and ODB++Manufacturing for production simulation and optimization.[5][1] Key advantages of ODB++ over legacy formats like Gerber RS-274X include its intelligent data organization, which preserves design intent, supports complex features such as embedded components and high-density interconnects, and facilitates automation in smart factories aligned with Industry 4.0 principles.[3][2] Its hierarchical file structure, using ASCII text files and XML for specific data like stackup and metadata, allows for parsing and validation, while tools like the free ODB++ Viewer enable stakeholders to inspect and simulate designs without proprietary software.[2][6] Widely adopted by major EDA providers such as Cadence, with support in tools from Synopsys, as well as SMT equipment vendors, ODB++ ensures interoperability and higher yield rates in electronics manufacturing by minimizing data loss and interpretation ambiguities. It is a de facto industry standard, with specifications available from Siemens.[1][7]Overview
Definition and Purpose
ODB++ is a proprietary CAD-to-CAM data exchange format developed by Valor Computer Systems, now part of Siemens, specifically designed for transferring complete printed circuit board (PCB) design data from electronic design automation (EDA) software to manufacturing equipment.[6] This format serves as an integrated product model that encapsulates all necessary information for PCB fabrication, assembly, and testing in a structured, hierarchical manner.[6] The primary purpose of ODB++ is to facilitate the exchange of comprehensive PCB manufacturing data, including board layouts, electrical netlists, drill specifications, and fabrication instructions, thereby streamlining the production process and minimizing errors associated with fragmented or incomplete data formats.[6] By providing a single, self-contained dataset, it enables accurate handoff from design to manufacturing, supporting efficient analysis, verification, and execution in downstream workflows.[6] In scope, ODB++ is primarily utilized in the design and manufacture of electronic devices, with a particular emphasis on high-density interconnect (HDI) structures and complex multilayer boards that require precise layer stackups and intricate connectivity.[6] It addresses the challenges of modern electronics by accommodating dense component placement and advanced routing demands typical in such applications.[8] Within the electronics manufacturing workflow, ODB++ acts as a critical bridge between EDA tools, such as Cadence Allegro and Mentor Graphics, and computer-aided manufacturing (CAM) systems used for fabrication and assembly.[6] This integration ensures that design intent—encompassing geometric, electrical, and process data—is preserved and directly interpretable by production equipment, promoting interoperability across vendor-specific tools.[6]Key Features
ODB++ employs a hierarchical database structure that organizes PCB design data in a tree-like format, utilizing directories and matrices to represent layers, steps, and attributes for efficient intelligent processing. This structure allows for nested steps via STEP-REPEAT records and supports multi-layer entities such as assembly panels and coupons, enabling streamlined data navigation and manipulation during manufacturing workflows.[6] The format embeds intelligent data directly, including design intent through netlist connectivity records that define electrical nets, stackup information with layer properties like dielectric constants and conductor thicknesses, and material specifications such as prepreg or core types. These elements facilitate automated verification by preserving the original design rules and enabling tools to interpret connectivity and physical constraints without additional files. For instance, netlists optimized for bare board testing ensure accurate electrical validation, while stackup definitions include impedance requirements for signal integrity analysis.[6] All essential PCB data—encompassing graphics, apertures, drills, text, and outlines—are consolidated into a single directory-based package, which can be compressed into one archive file using standard tar utilities to simplify file management and reduce transfer errors. This single-file approach contrasts with fragmented formats by providing a self-contained, portable ASCII-based representation that maintains data integrity across platforms.[6] ODB++ supports advanced manufacturing processes, including high-density interconnect (HDI) vias through specialized drill layer subtypes and via-in-pad attributes, embedded components via type definitions for resistors or capacitors, and 3D data for flex-rigid boards using flex area masks and layered profiles in the stackup. These capabilities handle complex structures like stacked vias and conductive paste layers, ensuring compatibility with modern fabrication techniques for high-performance electronics.[6] Built-in validation tools leverage embedded attributes for design rule checking (DRC) and manufacturability analysis, such as minimum copper spacing metrics and component height constraints, allowing real-time assessment during data transfer to identify potential production issues. Stackup status indicators (VALID or INVALID) further support automated optimization, integrating seamlessly with downstream software for enhanced quality control.[6]Technical Specifications
File Structure
ODB++ employs a directory-based file structure, organized as a hierarchical tree under a root directory named after the product model, which contains core files and subdirectories for matrices, layers, steps, and miscellaneous data. This ASCII-based format ensures readability and portability, with files that can be compressed using standard tools like ZIP to facilitate transfer. The structure is self-contained, allowing for efficient storage and access of PCB design data without external dependencies.[6] The core entry point is the job file, typically located in themisc subdirectory as info or job, which defines essential metadata including the board outline, reference points (such as "X_DATUM" and "Y_DATUM"), units (defaulting to imperial but configurable to millimeters via UNITS=MM|INCH), and attributes like board thickness. This file serves as the starting reference for parsing the entire dataset, linking to other components and providing an overview of the design hierarchy. Matrix files, stored as .mtx in the matrix subdirectory (e.g., matrix/matrix), organize geometric data in a tabular format where rows correspond to layers and columns to steps, supporting vector primitives like lines, arcs, and polygons, as well as raster images. An optional stackup.xml file in the same directory, introduced in version 8.1 Update 3, provides XML-based layer stackup information and is intended to eventually replace the traditional matrix file.[6]
Layers form the foundational hierarchy for representing physical aspects of the PCB, such as copper traces (e.g., SIGNAL or POWER_GROUND layers), solder masks, drills, routs, or silk screens, and are stored under steps/<step_name>/layers/<layer_name>. Each layer includes a features file containing the actual geometric and attribute data, with polarity settings like POSITIVE (where features denote copper) or NEGATIVE (features denoting laminate areas to be removed). Steps, organized in the steps subdirectory (e.g., steps/<step_name>), represent multi-layer entities such as panels or arrays, enabling hierarchical replication of designs; they include files like stephdr for headers and support attributes for transformations, including scaling (via .out_x_scale), rotation (e.g., rot for 90-degree adjustments), and step-and-repeat parameters ("DX", "DY", "NX", "NY" for offsets and counts). This layer-step organization allows for modular design handling, where steps can reference and transform underlying layers.[6]
Software parsing begins with the job file to establish the overall context and references, followed by navigation to the matrix for layer-step mappings and geometric organization. From there, the parser accesses specific layer features files under the relevant steps, interpreting vector data (lines, arcs, polygons) and raster elements while applying transformation attributes like scaling and rotation to reconstruct the full design. This sequential access ensures efficient loading of hierarchical data without redundant processing.[6]
File extensions distinguish data types within the structure: .t* suffixes denote text-based files (e.g., .tch for layer characteristics, .tstep for step data, or .mtx for matrices), promoting human readability; .b* indicates binary formats (e.g., .bdr for drills or .bmtx for compressed matrices), used for denser storage of complex data. Compressed archives, supported since version 8.0 and enhanced in later updates, apply standard UNIX compression (e.g., .Z extension on features files) to large datasets, reducing file size while maintaining compatibility across tools.[6]
Data Components
ODB++ files encapsulate a variety of data components essential for PCB fabrication and assembly, organized to support precise manufacturing workflows. These components include geometric representations, electrical connectivity details, fabrication specifications, supplementary elements, and embedded metadata, all stored in a structured ASCII-based format within the file's directories and XML schemas.[6] Geometric data in ODB++ primarily consists of vector-based primitives that define the physical layout of the board. Pads are represented using aperture definitions such asP <x> <y> <apt_def>, traces as line segments like LINE <xs> <ys> <xe> <ye> P R <width>, and vias through specific type declarations such as TYPE=VIA. The format supports standard shapes including circles via radius parameters (e.g., r<d>), rectangles with optional chamfers (e.g., rect<w>x<h>), and custom polygons or user-defined symbols for complex outlines. Each geometric element carries attributes, notably net names (e.g., net=X_X_ATB1TL), enabling direct linkage to electrical routing and polarity settings like POSITIVE for copper features or NEGATIVE for cutouts.[6]
The netlist component provides comprehensive electrical connectivity information, crucial for automated assembly and testing processes. It includes NET and SNT records in the eda/data directory, detailing connections via cadnet/netlist and refnet/netlist files, where nets are sequentially numbered (e.g., NET /D_CL_TX_CLK with net_num starting from 0). Pin and component associations are captured through HDI_NET_POINT records specifying gates and destination pins, while routing is defined by HDI_NET_BRIDGE for direct links (e.g., net=VCCEL_L) and supports critical nets marked with .critical_net or test points via .test_point. This structure ensures traceability from design components to physical placement, facilitating impedance-controlled routing and probe point optimization.[6]
Fabrication details are outlined to guide production, encompassing stackup configurations, drilling instructions, and panelization schemes. The stackup, defined in matrix/stackup.xml, specifies layer order, materials (e.g., CORE or PREPREG), and thicknesses (e.g., StackupThickness="85" in mils, with finished thickness adjustments). Drill tables appear in layer-specific tools files, listing tool sizes (e.g., DRILL_SIZE=13.5) and depths via LayerType DRILL with start and end layer references. Panelization supports multi-board arrays through matrix/matrix parameters like step-and-repeat (e.g., NX=6 NY=6 in stephdr) and rotation-aware arrays (e.g., .array_with_rotation), including rout layers for milling outer contours. These elements enable precise control over multilayer builds and high-volume replication.[6]
Additional elements enhance usability and alignment in manufacturing. Text annotations are rendered using T records (e.g., T <x> <y> <font>) with ECHAR commands for character placement, often including nomenclature via .nomenclature. Barcode data is embedded as B records (e.g., B <x> <y> UPC39) within feature layers or comments. Fiducials for alignment are defined as specialized features with netlist markers (e.g., f) or local lists (.fiducial_rdlist). Support for 3D models includes component heights (.comp_height) and board warpage simulation through zone definitions, allowing integration with assembly verification tools.[6]
Metadata provides contextual parameters for CAM processing, including units, tolerances, and design rules. Units are set globally via directives like UNITS=MM for metric (MM or MICRON) or INCH for imperial (default MIL), with UnitsType in schemas. Tolerances are specified through values such as PlusVal, MinusVal, TolPercent, or board-specific board_thickness_tol_plus, alongside minimum and maximum constraints (e.g., MIN_TOL, MAX_TOL). Design rules embed checks like impedance targets in impedance.xml (e.g., <RequiredImpedance ValOhms="50"/>), minimum copper spacing (min_copper_spacing_inner), and height limits (.drc_max_height), ensuring compliance during fabrication.[6]
History and Development
Origins
ODB++ was developed by Valor Computerized Systems Ltd., founded in 1992 in Yavne, Israel, as a proprietary database format to streamline printed circuit board (PCB) manufacturing data exchange.[9][10] The format originated in 1995, initially released as ODB (Open Data Base), specifically tailored for Valor's Genesis 2000 CAM software to address inefficiencies in the PCB industry during the 1990s personal computer boom. In 1997, enhancements including component descriptions transformed ODB into ODB++.[11][12] The primary motivations for creating ODB stemmed from the fragmentation and limitations of established formats like Gerber and Excellon, which often resulted in the loss of design intelligence during data translation between electronic design automation (EDA) tools and manufacturing processes.[11][12] Valor sought to establish a unified, intelligent format that preserved comprehensive design data, including layer stack-ups and material specifications, while enabling direct integration of computer-aided manufacturing (CAM) validation to minimize errors in high-volume electronics production amid rising PCB complexity.[13][14] This approach was driven by the need to reduce manufacturing ambiguities and support the era's demand for more reliable data transfer in an industry transitioning to denser, multi-layer boards.[12][14] Upon its initial release, ODB was quickly adopted by major EDA vendors, including support in tools like Mentor Graphics' Expedition, Mentor PADS, and Cadence Allegro, facilitating broader use in PCB design workflows.[12] However, its proprietary structure, controlled by Valor through exclusive translators, encountered resistance from advocates of open formats, who viewed it as a barrier to third-party interoperability and preferred the established, vendor-neutral Gerber standard.[11][12] Despite these challenges, Valor's dominance in verification software propelled early traction among fabricators seeking enhanced data integrity.[11][14]Versions and Evolution
The ODB++ format originated as a binary hierarchical database structure with its initial versions (V1 through V7) developed during the 1990s and 2000s by Valor Computerized Systems, focusing on efficient data exchange for PCB manufacturing processes.[4][11] These early versions emphasized a proprietary, job-description-oriented approach to consolidate design data, including layers, nets, and components, into a single directory-based format to streamline CAM workflows.[15] In 2000, Valor introduced the ODB++(X) variant as an XML-based alternative aimed at improving human readability and interoperability while maintaining the core hierarchical structure.[11] However, due to performance limitations in handling large datasets, ODB++(X) was discontinued in 2008, with its technology donated to IPC to inform the development of the open-standard IPC-2581; legacy support persists in some tools for backward compatibility.[11] Key enhancements in later versions addressed evolving PCB complexities. Version 7, released in 2007, added support for 3D data representation, particularly for flexible and rigid-flex boards, through specialized layer types like Signal Flex and Power Ground Flex to model bends and material properties accurately.[16] Version 8, introduced following Mentor's acquisition of Valor in 2010 with initial updates in the mid-2010s, incorporated enhanced XML elements for better compression and automation, reducing file sizes and enabling more efficient processing in DFM and CAM systems.[17][18] Version 8.1, released in 2015, further improved support for high-density interconnect (HDI) designs and cloud-based workflows, including virtual documentation to minimize manual interventions.[19] Minor updates from 2020 to 2025, such as v8.1 Update 4 in August 2024, focused on IPC standard alignments for tolerances and dimensions, alongside expansions like ODB++Process for manufacturing data flow.[19][20][21] Ownership transitions influenced ongoing development. In March 2010, Mentor Graphics acquired Valor, integrating ODB++ into its Xpedition Enterprise suite for seamless PCB design-to-manufacturing flows.[17][22] Siemens completed its acquisition of Mentor in March 2017, rebranding the division as Siemens EDA in January 2021, which enhanced ODB++'s role in digital twin ecosystems and ensured continued backward compatibility with prior versions.[23][24] As of 2025, ODB++ v8.1.2 remains the industry standard, offering tools for Gerber conversions and full backward compatibility to support legacy designs while prioritizing automation and data integrity.[21]Adoption in Industry
Advantages and Advocacy
ODB++ offers significant production benefits by providing a complete and intelligent dataset that minimizes data translation errors and misinterpretations common in fragmented formats like Gerber.[25] This structured approach enables direct design rule checking (DRC) and design for manufacturability (DFM) analysis within computer-aided manufacturing (CAM) systems, allowing for automated validation of PCB designs without additional file conversions.[26] Industry reports highlight how these features streamline fabrication processes, particularly for complex multilayer boards, by preserving design intent and reducing human intervention in data interpretation.[5] In terms of efficiency gains, ODB++ consolidates all necessary PCB data— including layers, nets, components, and assembly instructions—into a single package, cutting file handling and preparation time for manufacturers.[27] This unified format supports seamless automation in assembly lines, especially for high-mix, low-volume production scenarios where rapid setup changes are essential.[28] By facilitating direct machine-readable data exchange, it enhances throughput and adaptability in dynamic manufacturing environments.[29] Advocacy for ODB++ has been driven by its developers at Valor (now part of Siemens), who have formed partnerships with major electronic design automation (EDA) vendors such as Altium and Zuken to enable native ODB++ export capabilities in their tools.[30] These collaborations, including the ODB++ Solutions Alliance, promote widespread integration and position ODB++ as a de facto standard for intelligent data transfer.[31] Additionally, the format aligns with IPC standards for high-density interconnect (HDI) designs through its support for advanced data models, as referenced in IPC-2584's convergence with ODB++ for generic requirements.[32] Adoption of ODB++ in sectors like aerospace and automotive demonstrates its value for handling complex boards, with implementations showing reduced lead times in supply chains during the 2020s by enabling faster design-to-production handoffs.[33] For instance, its use in automotive assembly lines has supported automated processes that minimize downtime and improve yield for intricate electronic systems.[34] To further market adoption, Siemens released free ODB++ Viewer tools in the 2010s, allowing unrestricted access to PCB models across the design-to-manufacturing workflow and encouraging broader industry evaluation.[35] Complementary training programs from Siemens and partners emphasize ODB++'s superiority over legacy formats, focusing on its role in achieving a fully digital thread for Industry 4.0 compliance.[2]Criticisms and Challenges
One significant criticism of ODB++ stems from its proprietary nature, as it is owned and controlled by Siemens Industry Software Inc., which imposes licensing requirements for full implementation and support. This leads to substantial costs associated with acquiring the necessary tools, such as the Valor suite, often making it prohibitive for smaller operations or independent developers.[36][37][26] Additionally, the format's reliance on Siemens' ecosystem raises concerns about vendor lock-in, where users may become dependent on specific software and face barriers to switching providers without significant rework.[38] Open-source support has been limited historically, though recent integrations like KiCad's native ODB++ export capability, introduced in version 9.0, mark progress in broadening accessibility.[39][40] Compatibility issues further hinder ODB++'s adoption, particularly in free or open-source tools where support is inconsistent or absent. Many smaller PCB fabrication shops and hobbyist workflows rely on Gerber formats due to their universal availability, and converting between ODB++ and Gerber often results in data loss, layer misalignments, or incomplete netlist information, introducing errors that can compromise manufacturing accuracy.[41][42][43] The format's complexity presents another barrier, with a steep implementation learning curve for developers and engineers unfamiliar with its hierarchical structure and XML-based components. ODB++ files can also be considerably larger than equivalent Gerber sets in uncompressed form due to their comprehensive inclusion of design, fabrication, and assembly data, straining legacy systems or bandwidth-limited environments during transfer.[44][45] Industry groups, including those aligned with IPC standards, have voiced concerns over ODB++'s lack of transparency as a closed format, contrasting it with open alternatives and fueling debates in the 2020s about its long-term sustainability. CAD vendors have expressed worries that reliance on ODB++ could lead to capture by Siemens' evolving specifications, prompting a shift toward vendor-neutral standards like IPC-2581 to promote broader interoperability.[37][46][47] In 2025, challenges persist in emerging markets, where high licensing costs and infrastructure limitations slow ODB++ migration, favoring cost-free Gerber adoption among resource-constrained manufacturers. Moreover, the format's embedded metadata, which includes detailed design and process information, introduces potential security risks such as unauthorized access to intellectual property if files are mishandled during exchange.[37][44]Alternatives
Other Data Exchange Formats
The Gerber format, specifically RS-274X (also known as Extended Gerber), has been the de facto industry standard for printed circuit board (PCB) image data transfer since its introduction in the 1980s, evolving from the original RS-274 specification of 1980 to the extended version in 1998. It is a human-readable ASCII-based, vector-oriented format that describes PCB layers through commands defining apertures, coordinates, and flashes or draws for copper traces and other features. However, it primarily handles graphical data for individual layers and requires separate files, such as Excellon for drills or IPC-356 for netlists, to convey complete manufacturing information. IPC-2581, developed by the IPC organization, is an open XML-based standard for comprehensive PCB design data exchange, initially released in 2004 with subsequent revisions including version C in 2020.[48] It enables the transfer of a full digital product model in a single file, encompassing layer stackups, copper structures, drill data, netlists, bill of materials, and support for intelligent features like design for manufacturability (DFM) checks and 3D representations. As a vendor-neutral format, it promotes interoperability between design tools and manufacturing systems without licensing fees.[48] The Excellon format is a specialized, simple ASCII-based standard primarily used for specifying PCB drill and route operations, originating from Excellon Corporation's CNC machines in the late 1970s and formalized as a subset of RS-274D.[49] It lists hole coordinates, tool sizes, and commands for drilling sequences in a concise, machine-readable structure, making it suitable for direct input to CNC equipment.[49] Excellon files are typically generated alongside Gerber layers to provide the positional data for vias, through-holes, and routing paths.[49] EDIF (Electronic Design Interchange Format), introduced in the early 1980s and standardized by the EIA in 1987 as version 2.0.0, serves as a vendor-neutral representation for electronic netlists, schematics, and connectivity data in PCB design.[50] Based on LISP-like S-expressions, it captures hierarchical designs, component libraries, and electrical connections to facilitate data exchange between CAD tools.[51] Though influential as a precursor to modern connectivity formats, EDIF has become largely obsolete due to its complexity and limited adoption in contemporary workflows.[51] GenCAM, developed by IPC in the late 1990s and standardized as IPC-2511 in 2000, is an ASCII-based format focused on manufacturing and assembly data for PCBs, including component placement, solder paste, and test points.[52] It provides a neutral structure for transferring assembly instructions from design to fabrication and assembly processes, emphasizing domain-specific details like bill of materials integration and inspection requirements. While less prevalent for complete fabrication data compared to other formats, GenCAM remains relevant in assembly-centric applications.[52]Comparisons
ODB++ provides hierarchical data structures and integrated netlists, enabling more comprehensive representation of PCB designs compared to the Gerber format's simpler vector-based imagery, which prioritizes universality across tools but requires multiple separate files for layers, drills, and apertures.[53][54] This makes Gerber suitable for basic boards and prototyping due to its widespread support and ease of implementation, while ODB++ excels in complex designs by reducing manual data reconstruction and potential errors in manufacturing handoff.[55][5] In contrast to IPC-2581, another intelligent format, ODB++ offers robust integration with vendor-specific tooling from established ecosystems, though as a company-managed format it is freely available without licensing fees for the format itself and supports extensibility within its schema.[37][56] IPC-2581, as an open XML-based standard, promotes broader interoperability and cost-free adoption, making it preferable for extensible, collaborative projects without vendor lock-in.[57][58] Both formats support netlists and fabrication details, but ODB++'s maturity provides stronger support in legacy CAM systems, whereas IPC-2581's single-file structure enhances usability in modern, open-source workflows.[53][59] Regarding file size and processing, ODB++ typically results in larger archives due to its zipped inclusion of diverse data types like graphics, netlists, and attributes, but this enables more efficient automation in CAM environments by minimizing data fragmentation compared to Gerber's multiple lightweight files.[54][60] Formats like Excellon remain lighter and specialized for drill data only, avoiding the overhead of full design integration.[54] IPC-2581 balances size with a single XML file, often comparable to ODB++ but with advantages in parsing speed for extensible applications.[61] Overall, ODB++'s structure reduces processing steps for complex boards, potentially lowering data integrity issues by up to 25% in fabrication.[54]| Format | Ideal Use Case | Key Strengths in Workflow |
|---|---|---|
| ODB++ | Enterprise, high-density PCBs | Comprehensive data integration for automation-heavy production[37] |
| Gerber | Prototyping, basic boards | Simplicity and universal tool compatibility[55] |
| IPC-2581 | Collaborative, open projects | Extensibility and single-file efficiency without licensing[57] |