qckbool logo

Step 3 - De-Embedding Routine

To create the desired polarity we need to:

  • unionize any boundaries that touch or overlap
  • sort the boundaries by embedding level
  • booleanize the parent polygon and its children
  • write a new GDSII file

Unionization is required since it is not possible to sort out whether one boundary contains another if they actually touch or overlap.

A boundary that is not surrounded by any other boundary has an embedding level = 0. A boundary that is surrounded by only one boundary has an embedding level of 1. The surrounding boundary is called the parent and the first level of surrounded boundaries are called the parent's children.

Running the De-Embedding engine

To actually perform the de-embedding process use the de-embedding engine (and it supporting DLL, gdsout.dll) with the following command line:

Deemb.exe box.gds box_new.gds = 0 0

The resulting output file, box_new.gds, produces the desired results.

Look carefully in the lower left corner and you can see the "cut line" that was produced when the outer boundary and its child were booleanized.


Fig 4: new_box.gds in outline mode.

After de-embedding, the new file produces the desired mask.


Fig 5: The mask after de-embedding.