Blackbox Layout Extraction

edited March 2021 in Verification

I am a bit stuck with Layout Extraction. Let's say I have a GDS with a cell that I know is verified. Now I want to build an extractor to recognize the cell (I would assume this would be built on top of GenericDeviceExtractor). But if I would implement it in extract_devices, I will get regions that are not comparable to the original cell. Is there another easier way than using the extraction on the reference cell and then compare it? I could image doing it by manually injecting the netlist of the cell, but how would I know where to inject the net?

I hope it is clear what I want to do ^^


  • edited March 2021

    Hi @sebastian,

    I don't think you want to treat a whole cell as a single device. Devices and subcircuits are not the same thing.

    I'm not sure I understand what's your goal: to verify the cell's integrity or to simplify extraction?

    If it's about cell integrity (e.g. nothing is shorted), maybe the solution is easier than thought: if the cell itself is the same, the only way it can be messed up is by attaching something from the outside in the wrong way. Every such outside connection leads to a pin however. Even shorts will become shorted outside the cell. That's guaranteed by the bottom-up nature of the netlist extractor: the cell itself will be extracted without seeing anything from the embedding layout, but connections made from the outside will be pulled out by forming pins.

    So basically it should be fair to say that your cell's integrity is verified if you only see the pins the cell is supposed to have.


  • edited March 2021

    Hi @Matthias,

    How can I ensure that the cell is the same? That is essentially what I want to ensure with my black box extractor, as in ensure that geometries in the cell and the reference cell are the same (and of course not overlayed with other geometries on the same layers). This would assume that the cell is not in the same GDS file.

  • Verifying layout integrity is the domain of XOR, not of net extraction.

    You can verify the cell in you assembled top level layout by doing an XOR of your subcell only against the reference.


  • Thanks Matthias,

    That makes sense. I will take a look at doing it with XOR. Is there an option to do the same thing as the GUI XOR in the API, i.e. either the layout directly or for multiple layers? I have to say, I didn't use the drc engine much yet, so it is very well possible I oversaw that possibitility.

  • edited April 2021

    I meant XOR as a general concept. How to integrate that into your flow is a different topic. I don't know your proposed flow, so I can't give more advice.

    To compare two files for identity there are two separate tools called "strmcmp" (does a compare based on object identity) and "strmxor" (does a geometrical compare). I think you could use these tools and use the macro in question as the top cell to verify the identity against a reference GDS file.

    Otherwise the XOR can be coded separately, but that's a matter of understanding the API.

    And the API


Sign In or Register to comment.