Electronic Design Automation

DB Format

/dee-bee for-mat/
Synopsys tools store cell libraries as a compiled binary file with a .db extension, which is the machine-readable equivalent of an ASCII Liberty (.lib) source. The binary encodes every timing arc, power table, pin capacitance, and noise model for the cells in a corner, letting synthesis and static timing engines load characterization data in seconds rather than parsing megabytes of text. Library teams typically derive the .db by characterizing transistor-level SPICE models for a given PDK corner, then compiling the resulting Liberty file. The binary is version-locked to the tool family that wrote it, so the ASCII source remains the archival master.
Category: Electronic Design Automation
File extension: .db
Source format: Liberty .lib

How the .db Binary Encodes a Cell Library

The .db format emerged from the Synopsys synthesis flow as a way to avoid re-parsing the same Liberty text on every tool invocation. A Liberty (.lib) file is a human-readable, deeply nested ASCII description: it declares operating conditions, wire-load models, and one cell group per standard cell, with each cell holding pin groups, timing groups, and lookup tables for delay and power. For a single signoff corner that text can span hundreds of megabytes once nonlinear delay model (NLDM) or composite current source (CCS) tables are present. Reading and validating that structure is computationally expensive, so Synopsys defines a binary serialization of the in-memory representation and writes it out with a .db extension.

When a tool such as Design Compiler, Fusion Compiler, or PrimeTime links a .db, it deserializes the data structure directly into memory and skips lexing, syntax validation, and semantic checks entirely. The data content is identical to the Liberty source; only the encoding differs. Because the layout of that internal structure can change between major tool releases, a .db produced by one version family is not guaranteed to load in another, and it cannot be opened by Cadence or Siemens EDA tools, which read Liberty natively. This is why a disciplined library team treats the ASCII .lib as the golden source of record and regenerates the .db per tool version as part of its build flow.

Compiling and Reading a .db

The round trip is symmetric. Library Compiler reads a .lib, builds the model, and writes a .db; the same tool can read a .db back and write a .lib for inspection or diffing. The example below shows the canonical Synopsys command sequence and the rough load-speed relationship that motivates using the binary at all.

Compile Liberty to binary (Library Compiler / DC):
read_lib sc9_tt_1p0v_25c.lib
write_lib sc9_tt_1p0v_25c -format db -output sc9_tt_1p0v_25c.db

Link the binary in a timing run (PrimeTime):
set link_library "* sc9_tt_1p0v_25c.db"

Approximate load-time benefit:
tdb ≈ tlib / k,  where k ≈ 5 to 20×

The .db skips ASCII lexing and semantic validation, so deserialization is roughly 5 to 20× faster than parsing the equivalent Liberty text and uses lower peak memory. Exact k depends on table density (NLDM vs CCS) and corner count.

Library Format Comparison

FormatEncodingHuman-readablePrimary toolsPortabilityTypical role
.dbBinary (Synopsys)NoDC, Fusion, PrimeTimeVersion-locked, vendor-lockedFast runtime link
.lib (Liberty)ASCII textYesAll major EDAOpen, interoperableGolden source of record
Cadence cacheBinary (internal)NoGenus, TempusCadence-onlyRuntime cache of Liberty
.lefASCII textYesPlace and routeOpenPhysical abstract (not timing)
.lib (CCS variant)ASCII textYesAll major EDAOpen, interoperableCurrent-source timing/noise data
Common Questions

Frequently Asked Questions

How do I convert a Liberty .lib file into a .db file?

Compile it in a Synopsys tool: read_lib my_lib.lib then write_lib my_lib -format db -output my_lib.db. The reader parses and validates the Liberty syntax, builds the in-memory model, and serializes it to the binary .db. PrimeTime and Fusion Compiler consume the .db directly via read_db or set link_library. The reverse, write_lib -format lib, regenerates ASCII Liberty from a loaded .db for inspection or diffing.

Why do tools prefer .db over reading the .lib directly every time?

A single-corner Liberty file can run from tens of megabytes to several gigabytes with NLDM or CCS tables, and parsing that ASCII is slow. The .db is a pre-parsed, pre-validated binary snapshot, so loading is roughly 5 to 20× faster and uses less peak memory because lexing and semantic checks are skipped. Across a multi-corner signoff with dozens of linked libraries, the saved parse time adds up. The cost: a .db is tied to a tool version and is not human-readable.

Is a .db file portable between tool versions and vendors?

No. The .db is a proprietary Synopsys serialization and only loads reliably in the version family that wrote it; major releases can change the internal schema and force a recompile from the .lib. It is not readable by Cadence or Siemens EDA tools, which use Liberty or their own binary caches. Keep the ASCII Liberty .lib as the source of record and regenerate .db per tool version rather than treating the binary as the master.

EDA & Characterization Support

Bridging Design Data and Hardware

RF Essentials delivers millimeter-wave components backed by characterized models and measured S-parameters that drop cleanly into your EDA flow. Talk to our engineers about model and data deliverables.

Get in Touch