Drawing and editing
Canvas shortcuts work while the canvas has focus and no text field is active.
Rectangles, polygons, paths, and instances that the GUI adds at the top level of a cell are bound with pub let, so a parent cell can read them through an instance. Inside a loop, branch, or block they're bound with a plain let.
The GUI writes each call with its full std::layout path, such as std::layout::rect(...) or std::layout::inst(...), so the source needs no use line for it.
Select
Press S. You can select shapes, instances, edges, and dimension labels; what's selected determines which edits are available. Press Q to edit a selected dimension.
Rectangle
Pick a layer, press R, and click two opposite corners. Backspace discards the first corner. The std::layout::rect call the GUI writes uses initial values (x0i and so on), so you can drag the rectangle around until constraints pin it down.
Polygon
Pick a layer, press P, and click the vertices in order. Enter closes the polygon and writes it to the source; Backspace removes the last vertex, and Esc discards them all.
Each vertex is constrained independently. A vertex with one constrained axis can still be dragged along the other.
Path
Choose Path from the Tools menu or the tool strip, pick a layer, and click the centerline points. Backspace removes the last point. A path's points, width, and end extensions are all editable.
Dimension
Press D, click two compatible edges, then click where the label should go. Backspace deselects the last edge. Type a float such as 50. or a cell parameter such as width.
An edge of a shape inside a child instance can be picked only if the child cell declares that shape with pub let, since the dimension reads it through the instance.
Dimensions also work on rectangles imported from GDS. If the technology file configures pin layers, imported pin labels become fields you can refer to.
Instance
Select the target scope in the hierarchy sidebar, press I, and type a cell invocation. Move the preview and click to place it. Placement stays active so you can drop more copies; press Esc to stop.
In the schematic view, I places a schematic instance with std::schematic::inst instead, and M places a device. The schematic view's tools add ports, net labels, and wires.
Reading the canvas
- Solid edges are fixed by constraints.
- Dashed edges have at least one coordinate that is still free.
- Dragging a free coordinate updates its
*iargument in the source. - If a hand-written constructor has no
*iarguments, the first drag adds them.