Trace All Nets

Hi Matthias,

I'm looking into the "Trace All Nets" feature and it is really great. I'm using your "inv.gds" example, which I instantiated inside some measure pads (See attached file "module.gds").

When I run "Tools > Trace All Nets > Flat" on the top cell "MODULE" (hierarchical), none of the nets retrieve the label names which are inside the "INVERTER" cell.

When I run "Tools > Trace All Nets > Flat" on the top cell "MODULE_FLATTENED" ("MODULE" cell flattened), the nets retrieve the label names (IN, OUT, VDD and VSS).

I would expect the labels to be retrieved in both cases in "Flat" mode, or are labels inside sub cells not taken into account?

The layer stack is the same as for your example.




  • edited October 2021

    Hi Thomas,

    thank you for the testcase. That is always very helpful.

    The "All net" extraction operates hierarchically at first will always use the net names from the highest level the net is found on. In your case, all nets are connected on top level, so net names are not available.

    "Flat" mode does not change this - this will only flatten the resulting nets, not propagate net names.

    The reasoning is that propagating net names usually becomes very confusing. Assume you have a digital net with a driver and many gates connected to it - you would eventually get a lot of different net names which will not tell the functionality of the net.


  • Hi Matthias,

    Thank you for the explanation. I'm probably trying to use the "All net" extraction for something it is not supposed to be used for: check open nets and shorted nets between the probe pads and the devices under test, where the labels "acts" like some kind of "pins", and secondly, also check if the right bond pads are connected to the right device pins. It works well for the flattened layout: the net names of shorted pins are the pin names separated by comma's and unconnected pins with the same name lead to multiple nets with the same name. I will now try to write a script to copy labels from the child cells to the top cell to avoid flattening the full layout...



  • Okay, I can help with this:

    cell = ly = cell.layout() for ld in [ (7, 1), (9, 1) ]: text_layer = ly.layer(*ld) texts = pya.Texts(cell.begin_shapes_rec(text_layer)) texts.flatten() ly.clear_layer(text_layer) cell.shapes(text_layer).insert(texts)


Sign In or Register to comment.