Skip to content

Layout Verification

Design rule checks and layout-versus-schematic comparisons run through an external engine selected by the engine argument: KLayout (DRC and LVS) or Calibre (DRC). KLayout 0.29.12 or newer is required; each check stops with an error naming an older version.

With engine="calibre", the rules file is an SVRF rule deck. Calibre runs a copy of it whose LAYOUT PATH, LAYOUT SYSTEM, LAYOUT PRIMARY (when the source is a component), DRC RESULTS DATABASE and DRC SUMMARY REPORT (when the deck declares one) name the files of the check; the deck itself is never edited. args holds Calibre’s command-line arguments, such as ("-hier", "-turbo", "4"). The Calibre engine requires a Photonic Canvas (PhotonForge Enterprise) license. Both engines return the same verification.DRCResults.

The LVS schematic can come from the component itself: with schematic unset or set to a Component, lvs_check writes a SPICE schematic from Component.get_netlist. Routes built by the parametric routing functions are written as wires and virtual connections as nets, so a routed component is its own design intent, and so is its unrouted version. pre_export_function adds the port markers and labels the rules file extracts pins from.

Coordinates are in micrometers. DRCResults is also available as photonforge.DRCResults.

A photonic runset tells the ports of a passive cell apart only by layout labels, which the layout export does not write. layout_pins returns a pre_export_function for lvs_check that draws them on the layers the runset reads: devices get their core shapes as an outline, a box at each port and the port name; circuits get the names; routes nothing.

LVSResults is also available as photonforge.LVSResults.