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.
Functions¶
|
Run a design rule check (DRC) on a layout. |
|
Run a layout-versus-schematic (LVS) comparison. |
|
Read the results database of an earlier design rule check. |
|
Read the results database of an earlier layout-versus-schematic comparison. |
DRC Results¶
Coordinates are in micrometers. DRCResults is also available as
photonforge.DRCResults.
|
Results of a DRC run, from any engine. |
|
The markers of one rule (category). |
|
A cell of the results. |
|
An example placement of a cell in another cell; |
|
Magnification, then mirroring about x, then counter-clockwise rotation, then displacement. |
|
Marker of one violation, with the cell it was found in. |
|
One edge, for rules that report edges. |
|
Two edges; |
|
A polygon with optional holes; boxes and paths are reported as polygons. |
|
A text output and its position. |
|
Any other marker value, as the engine prints it (KLayout only). |
Layout Pins¶
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.
|
Pre-export function that draws pins over |
LVS Results¶
LVSResults is also available as photonforge.LVSResults.
|
Results of a KLayout LVS run. |
|
The comparison of a layout circuit with a schematic circuit. |
|
Two objects KLayout paired; either side is |
|
A comparison or extraction message. |
|
A polygon attached to a message. |
|
The layout or the schematic netlist; |
|
A circuit of a netlist, with lookups by id or index that raise |
|
A net of a circuit, with its connections and, for the layout, its geometry per layer. |
|
What a net connects to: a circuit pin, a subcircuit pin, or a device terminal. |
|
A text label KLayout attached to a layout net. |
|
A circuit pin and the net it connects to. |
|
An extracted or schematic device; |
|
One of the extracted devices combined into a device. |
|
A device class; |
|
A parameter of a device class; |
|
The geometry of an extracted device, per terminal and layer. |
|
An instance of another circuit; |
|
A layer of the extraction and the layers and global nets it connects to. |