API reference - Class LayoutVsSchematic

Notation used in Ruby API documentation

Module: db

Description: A generic framework for doing LVS (layout vs. schematic)

Class hierarchy: LayoutVsSchematic » LayoutToNetlist

This class extends the concept of the netlist extraction from a layout to LVS verification. It does so by adding these concepts to the LayoutToNetlist class:

The LVS object can be persisted to and from a file in a specific format, so it is sometimes referred to as the "LVS database".

LVS objects can be attached to layout views with LayoutView#add_lvsdb so they become available in the netlist database browser.

This class has been introduced in version 0.26.

Public constructors

new LayoutVsSchematic ptrnew(const RecursiveShapeIterator iter)Creates a new LVS object with the extractor connected to an original layout
new LayoutVsSchematic ptrnewCreates a new LVS object
new LayoutVsSchematic ptrnew(DeepShapeStore ptr dss)Creates a new LVS object with the extractor object reusing an existing DeepShapeStore object
new LayoutVsSchematic ptrnew(DeepShapeStore ptr dss,
unsigned int layout_index)
Creates a new LVS object with the extractor object reusing an existing DeepShapeStore object
new LayoutVsSchematic ptrnew(string topcell_name,
double dbu)
Creates a new LVS object with the extractor object taking a flat DSS

Public methods

void_createEnsures the C++ object is created
void_destroyExplicitly destroys the object
[const]bool_destroyed?Returns a value indicating whether the object was already destroyed
[const]bool_is_const_object?Returns a value indicating whether the reference is a const reference
void_manageMarks the object as managed by the script side.
void_unmanageMarks the object as no longer owned by the script side.
boolcompare(NetlistComparer ptr comparer)Compare the layout-extracted netlist against the reference netlist using the given netlist comparer.
voidread(string path)Reads the LVS object from the file.
voidread_l2n(string path)Reads the LayoutToNetlist part of the object from a file.
Netlist ptrreferenceGets the reference netlist.
voidreference=(Netlist ptr reference_netlist)Sets the reference netlist.
voidwrite(string path,
bool short_format = false)
Writes the LVS object to a file.
voidwrite_l2n(string path,
bool short_format = false)
Writes the LayoutToNetlist part of the object to a file.
NetlistCrossReference ptrxrefGets the cross-reference object

Detailed description

_create

Signature: void _create

Description: Ensures the C++ object is created

Use this method to ensure the C++ object is created, for example to ensure that resources are allocated. Usually C++ objects are created on demand and not necessarily when the script object is created.

_destroy

Signature: void _destroy

Description: Explicitly destroys the object

Explicitly destroys the object on C++ side if it was owned by the script interpreter. Subsequent access to this object will throw an exception. If the object is not owned by the script, this method will do nothing.

_destroyed?

Signature: [const] bool _destroyed?

Description: Returns a value indicating whether the object was already destroyed

This method returns true, if the object was destroyed, either explicitly or by the C++ side. The latter may happen, if the object is owned by a C++ object which got destroyed itself.

_is_const_object?

Signature: [const] bool _is_const_object?

Description: Returns a value indicating whether the reference is a const reference

This method returns true, if self is a const reference. In that case, only const methods may be called on self.

_manage

Signature: void _manage

Description: Marks the object as managed by the script side.

After calling this method on an object, the script side will be responsible for the management of the object. This method may be called if an object is returned from a C++ function and the object is known not to be owned by any C++ instance. If necessary, the script side may delete the object if the script's reference is no longer required.

Usually it's not required to call this method. It has been introduced in version 0.24.

_unmanage

Signature: void _unmanage

Description: Marks the object as no longer owned by the script side.

Calling this method will make this object no longer owned by the script's memory management. Instead, the object must be managed in some other way. Usually this method may be called if it is known that some C++ object holds and manages this object. Technically speaking, this method will turn the script's reference into a weak reference. After the script engine decides to delete the reference, the object itself will still exist. If the object is not managed otherwise, memory leaks will occur.

Usually it's not required to call this method. It has been introduced in version 0.24.

compare

Signature: bool compare (NetlistComparer ptr comparer)

Description: Compare the layout-extracted netlist against the reference netlist using the given netlist comparer.

new

(1) Signature: [static] new LayoutVsSchematic ptr new (const RecursiveShapeIterator iter)

Description: Creates a new LVS object with the extractor connected to an original layout

This constructor will attach the extractor of the LVS object to an original layout through the shape iterator.

Python specific notes:
This method is the default initializer of the object

(2) Signature: [static] new LayoutVsSchematic ptr new

Description: Creates a new LVS object

The main objective for this constructor is to create an object suitable for reading and writing LVS database files.

Python specific notes:
This method is the default initializer of the object

(3) Signature: [static] new LayoutVsSchematic ptr new (DeepShapeStore ptr dss)

Description: Creates a new LVS object with the extractor object reusing an existing DeepShapeStore object

See the corresponding constructor of the LayoutToNetlist object for more details.

Python specific notes:
This method is the default initializer of the object

(4) Signature: [static] new LayoutVsSchematic ptr new (DeepShapeStore ptr dss, unsigned int layout_index)

Description: Creates a new LVS object with the extractor object reusing an existing DeepShapeStore object

See the corresponding constructor of the LayoutToNetlist object for more details.

Python specific notes:
This method is the default initializer of the object

(5) Signature: [static] new LayoutVsSchematic ptr new (string topcell_name, double dbu)

Description: Creates a new LVS object with the extractor object taking a flat DSS

See the corresponding constructor of the LayoutToNetlist object for more details.

Python specific notes:
This method is the default initializer of the object

read

Signature: void read (string path)

Description: Reads the LVS object from the file.

This method employs the native format of KLayout.

read_l2n

Signature: void read_l2n (string path)

Description: Reads the LayoutToNetlist part of the object from a file.

This method employs the native format of KLayout.

reference

Signature: Netlist ptr reference

Description: Gets the reference netlist.

Python specific notes:
The object exposes a readable attribute 'reference'. This is the getter.

reference=

Signature: void reference= (Netlist ptr reference_netlist)

Description: Sets the reference netlist.

This will set the reference netlist used inside compare as the second netlist to compare against the layout-extracted netlist.

The LVS object will take ownership over the netlist - i.e. if it goes out of scope, the reference netlist is deleted.

Python specific notes:
The object exposes a writable attribute 'reference'. This is the setter.

write

Signature: void write (string path, bool short_format = false)

Description: Writes the LVS object to a file.

This method employs the native format of KLayout.

write_l2n

Signature: void write_l2n (string path, bool short_format = false)

Description: Writes the LayoutToNetlist part of the object to a file.

This method employs the native format of KLayout.

xref

Signature: NetlistCrossReference ptr xref

Description: Gets the cross-reference object

The cross-reference object is created while comparing the layout-extracted netlist against the reference netlist - i.e. during compare. Before compare is called, this object is nil. It holds the results of the comparison - a cross-reference between the nets and other objects in the match case and a listing of non-matching nets and other objects for the non-matching cases. See NetlistCrossReference for more details.