Support Forum

Positive versus negative mask image

John

Thursday 18th July 2024
Hi. I'm intending to use layout editor for making patterns for direct write e-beam litho. I'd like to draw features that instead of being masked areas, are written areas. I don't want to have to draw the negative view of shapes, but the positive view. For example, if I draw a square, I want the square to be exposed to the e-beam, and not everything around the square to be exposed. What is the correct way to perform this? Thanks.
Jürgen
LayoutEditorFull
Thursday 18th July 2024
If on the final result the drawn shapes are transparent or reflective is always a question of the maskwriting setup. But on most system I know the exposed areas are drawn. In any case with the LayoutEditor you can invert a layer/design. The feature is named BoolOnLayer. With you example you can draw a rectangle and the LayoutEditor created with it a bigger rectangle with a rectangular hole in it. So you don't need to worry which ways your mask-writer needs the layer, you can always make it correct with the LayoutEditor.
Николай

Friday 16th August 2024
In C++ scripts, the ВoolOnLayer macro function works several times faster than other Boolean functions (multithreading), but does not delete the original objects. So, you should not place the result of layer inversion in the same layer. You have to subtract layer B (positive view) from layer A (box) with placing the result in layer C (yours negative view), then delete layer B, and only then transfer the inverted image back from layer C to layer B. May be I mistake? example (A and C layers must be empty): layout->drawing->activeLayer=A; layout->drawing->point(x1,y1); // point one layout->drawing->point(x2,y2); // point two layout->drawing->box(); layout->boolean->boolOnLayer(A,B,C,"A-B",1); layout->drawing->currentCell->deleteLayer(B); layout->drawing->activeLayer=C; layout->drawing->selectActiveLayer(); layout->drawing->currentCell->moveToLayerSelect(B); layout->drawing->currentCell->deleteLayer(A); // or layerTranslator functions, if work on full GDS. /* layout->drawing->activeLayer=A; layout->drawing->point(x1,y1); // point one layout->drawing->point(x2,y2); // point two layout->drawing->box(); layout->boolean->boolOnLayer(A,B,C,"A-B",1); layerTranslator t; t.mapLayer(B,C); t.mapLayer(C,B); layout->drawing->mapLayer(&t); layout->drawing->deleteLayer(A); layout->drawing->deleteLayer(B); */