Netlist Reference

The Netlist of a PCell represents the logical structure of a PCell. It defines how a PCell consists of subcells and how they are interconnected.

Netlist view building blocks

All information of your netlist is captured in the i3.NetlistView.

NetlistView

Contains all the information of a netlist (terms, instances and nets).

The netlist view contains the following data:

Note

For more details and explanation about the Netlist view in IPKISS, please check out the netlist guide.

The following code snippet provides the skeleton of a typical Netlist.

import ipkiss3.all as i3

class MyCell(i3.PCell):
    child = i3.ChildCellProperty()

    class Netlist(i3.NetlistView):
        def _generate_netlist(self, nl):
            nl += i3.OpticalTerm(name='in')
            nl += i3.OpticalTerm(name='out')
            nl += i3.Instance(reference=self.child, name='child')

            nl.link('in', 'child:in', name='link_in')
            nl.link('out', 'child:out', name='link_out')
            return nl

Netlist extraction

If your component already has a layout, then the netlist can be extracted automatically from this layout. This is very useful in 2 use cases:

  • post-layout simulation: to directly run circuit simulations from layout, where all important layout parameters are preserved (i.e., waveguide lengths, …)

  • layout vs netlist: to compare your layout versus the netlist that’s provided by someone else.

NetlistFromLayout

Netlist extraction from a layout view.

extract_terms

Extract the terms from a layout view (electrical + optical).