EDA Solutions logo


Published by Henry Frankland – Latest update: 04/10/2022

Relevant product(s): L-Edit, CalibreOne, Calibre nmDRC
Operating systems: L-Edit (Windows or Linux RHEL), Calibre (Linux RHEL only)
Versions affected: v2016.1 Update 0 and above
Relevant area(s): Verification, Tanner Tools
ID: TN047


Calibre provides XOR through the DRC verification option to compare two layout cells in Tanner tools. There are two layout comparison flows through the Calibre DRC integration, FastXOR and XOR. This technote will go over the Layout vs Layout techniques when running not using FASTXOR.



FastXOR automatically builds the verification deck based on the input layout cells, while XOR does not build the XOR rules and requires an LVL rule deck to be provided by the foundry or constructed by the user.

The choice of FASTXOR or XOR flow depends on your licensing. The full commercial Calibre licenses or Tanner Calibre One licenses:

  • Tanner Calibre One DRC/LVS –> XOR
  • Calibre nmDRC –> FASTXOR, XOR, DBdiff

The key steps for XOR rule file generation for a technology comprise of two steps:

  1. Obtain a layer map
  2. Obtaining a GDS with all GDS exported layers
  3. Run DBdiff on the GDS file to generate a rule deck

If only TannerCalibre One licenses are only available, to run the DBdiff command step you will need to contact your software vendor to support you in doing this.


< — DBdiff — >

  • A Linux command line Calibre tool used to compare the hierarchy of top-level cells from two GDS/LEFDEF/OASIS database files. Intended as a quick utility tool to see if there are any differences between the two files, not a replacement for the XOR.
  • Licenses: nmDRC & nmDRC-H

< — XOR — >

  • A command line or interactive Calibre tool that requires the user to have a LVL deck from the foundry or create one. it is recommended to have a layermap for naming the layers, otherwise, format L<x>_D<y> is used to denote XOR result layers. This tool can be used within the Tanner Calibre integration.
  • Licenses: Tanner CalibreOne OR nmDRC

1.0. Obtaining layer structure from L-edit

1.1. Layermap

Layermaps are human-readable text files that map between layer names and the GDS layer numbers, as shown in Figure 1. They are typically provided as standard by the foundry within the PDK, or made available on request.

Figure 1: layer.map file with an example structure/syntax

In some rare cases a layermap may not be readily available, these files can be quickly adapted from L-edit using the “Layer summery” tool and a script:

  1. Open L-edit with a project that has the PDK attached and any layout cell open
  2. goto “File > Layer summery
  3. In the “Layer Summery” wizard select menu select “List only layers with GDSII numbers” then add “include layer’s GDSII number” and “Include layer’s data type” and execute, as shown in Figure 2.
Figure 3: Layer summery menu

Note: The generated file is not directly in the structure needed for a layer map file, producing a column structure GDS, DataType, Layer-name; needs reordering, and layer name to be split into layer name and purpose. The correct column order is shown in Figure 1.

  1. Run the attached python script “layerSumToLayerMap.py” to reorder the file

1.2. Obtaining Technology layers

To build a generic rule deck in the ‘2.0 creating rule deck‘ a GDS is required containing all the drawn layers. To do this run the attached script “xor_gen_gds.cpp” in a new cell and export the resulting GDS then contact Support to assist with step ‘2.0 creating a rule deck‘.

1.2.1. Prepping the script file

before the “xor_gen_gds.cpp” script can be executed, line 40 needs to be adjusted to point to your layermap file. The layer map file is used to determine which layers to draw in the open active cell.

  1. Open the “xor_gen_gds.cpp” in a notepad of a programming IDE of your choice
  2. Change line 40 to reflect the location of the layermap obtained from the foundry, or built using methods described in ‘1.1 layermap
Figure 4: code snippet from xor_gen_gds.cpp

1.2.2. Generating GDS file

  1. Open a project or new library that attaches the foundry PDK
  2. create a new cell “Cell > new view…” (or hotkey ‘N‘) and call it “__XOR__
Figure 5: creating a new cell
  1. With the new cell open, open the UPI script loading window by going “Tools > macro…
  2. select “Load…” and then use the presented windows explorer window to select the “xor_gen_gds.cpp
  3. in the macro window, in the Macros section select Macro1 and select Run, as shown in Figure 6.
Figure 6: executing a C/C++ UPI macro in L-edit
  1. Next export the “__XOR__” cell to a gds by going “File > export Mask Data > GDSII…”
  2. decide on the export location select the “__XOR__
  3. select the cell for export
  4. select ‘export‘, as shown in Figure 7.
Figure 7: exporting the GDS result from XOR deck

2.0. Creating the rule deck


  1. nmDRC-H license
  2. Calibre installed

The rule deck creation stage is handled by the DBdiff tool on the Linux environment. If using Tanner CalibreOne licensing, contact support for further assistance.

  1. Move the layermap and GDS file to the Linux machine where the DBdiff command will be executed.
  2. execute the dbdiff command “dbdiff -system GDS -design __XOR__.gds out_cell -refdesign __XOR__.gds out_cell -write_xor_rules rules.xor xor -layermap layers.map
  3. Store the resulting ‘rules.xor‘ LVL rule deck file in an appropriate place

Using rule deck

To use the rule deck in a DRC run:

  1. From L-edit execute a DRC verification run
  2. From Calibre interactive select the rules as the ‘XOR.rule‘, as shown in Figure 8
Figure 8: nmDRC calibre interactive
  1. then under the inputs section go to “RUN” and change the drop-down field to “Fast XOR“, as shown in Figure 9
  2. setup both input fields to reference the two cells/GDS to be compared under “Layout paths“, as shown in Figure 9
Figure 9: Calibre input section, enabling LVL through XOR
  1. Open the “FAST XOR” item in the menu and ensure the option “Create XOR file” is unchecked as shown in Figure 10.
Figure 10: adjusting Fast XOR to use the rule file instead of building a new one
  1. Execute the layout comparison with the “Run DRC” button


More information about dbdiff

More information about FastXOR


Map layer summary file to layer.map

Obtain GDS of layer stack