Texts, patterns, masks

Texts, patterns, masks

Texts are anchors plus a string, not ordinary shapes. texts and expand_text run. Pattern matching and multi-patterning are also Available.

← Language overview

texts

Available · yields texts

layer t = texts(68, 20)
layer t = texts(68, 20, "VDD*")

Text anchors on layer/datatype, optionally a name glob. Complement: texts(l,d) - texts(l,d,"VDD"). Interaction with polygons: interacting(m1, t)*.

Input Result VDD n1 VDD n1

An empty string / only whitespace is still a text if the layout stores it. Rotation/mirror in an instance: the anchor is transformed.

expand_text

Available · yields polygons

layer box = expand_text(t, 0.05 um)

A mini-box around the text anchor (bounding-box centre ± d; d ≤ 0 becomes 1 dbu). For AND with metal.

Input Result A

d = 0: a 2×2 dbu box. A very large expansion overlaps neighbour texts.

match

Available · yields polygons

layer hits = match(m1, file="patterns.gds", cell="VIA_CHAIN", tolerance=10 dbu)

DRC+ pattern over an axis-aligned bounding box (90° rotations). orient=r0 only unrotated. Hits = the matched shapes in the search layer. cell= from the same layout or file= plus a cell.

Input Result

tolerance in dbu/µm: bounding-box width/height and origin. No hit: empty layer; count(hits) > 0 as a check.

uncolorable / colored

Available · yields shapes / layer

check "DP" : uncolorable(m1, space=0.05 um, masks=2)
layer m1a = colored(m1, space=0.05 um, masks=2, mask=1)

Multi-patterning: conflict graph at distance < space, masks colours. uncolorable = not k-colourable. colored … mask=i one colour, then space on the same mask. masks=2 is exact bipartite, masks>2 uses exact backtracking k-colouring; components with more than 32 nodes are reported as not yet supported instead of guessed.

Input Result Two masks; the third is uncolorable (schematic)

An odd wheel / odd cycles at 2 masks: uncolorable. space=0: only overlap-touch as an edge.