Geometry
Geometry constructors take positional arguments first, then keyword arguments. The coordinates they expose are solver variables, not plain numbers, so you can constrain them after the fact.
Rectangles
let metal = rect("met1", x0=0., y0=0., w=200., h=100.);
let bounds = crect(x0=0., y0=0., x1=400., y1=300.);
rect draws a rectangle on a layer. crect makes a construction rectangle, which isn't exported and needs no layer.
Both have x0, y0, x1, y1, w, and h; see Rect for how they relate.
Polygons
polygon takes a layer and a vertex count. Set or constrain each coordinate individually:
let outline = polygon(
"met1", 3,
x0=0., y0=0.,
x1=100., y1=0.,
x2=50., y2=80.,
);
outline.x2 and outline.points[2].x are the same coordinate.
Paths
A path is a centerline with a width, and optional extensions past each end:
let route = path(
"met2", 3,
width=20.,
x0=0., y0=0.,
x1=100., y1=0.,
x2=100., y2=100.,
);
See Path and the path constructor.
Text
text("VDD", "text.label", 40., 80.);
text places a label on a text layer.