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
||Contains all the information of a netlist (terms, instances and nets).|
The netlist view contains the following data:
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
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.
||Netlist extraction from a layout view.|
||Extract the terms from a layout view (electrical + optical).|