Xic supports the protocol for stretch handles defined by Ciranova. This provides support for stretch handles defined in PyCells, but also allows use of stretch handles in native pcells.
A stretch handle is a graphical item that can be moved with the mouse pointer, where the motion causes a change in a parameter value. Usually, the object is associated with a parameterized cell instantiation, and motion causes remastering of the instance to a new sub-master created with the new parameter. For example, stretch handles might be used to graphically change the gate length and width of a MOSFET pcell instance, if the corresponding pcell supports the protocol.
Stretch handles are visible and activated only when the containing instance is shown large enough on-screen, to avoid false-triggering. The size threshold can be set from the PCell Control panel from the Edit Menu, or equivalently with the PCellGripInstSize variable.
In Xic, when editing a sub-master containing stretch handles, the handles are visible as well, and can be moved. This will change the parameterization of the sub-master, and all of its instances. This is equivalent to modifying the pc_params property with the Cell Property Editor from the Edit Menu.
If the Hide and disable stretch handles check box in the PCell Control panel from the Edit Menu is checked, or equivalently if the PCellHideGrips variable is set, all stretch handles will be invisible and disabled.
Adding stretch handles to a pcell amounts to adding box objects with the grip property applied. The grip property provides the setup information.
There are example capacitor pcells that use stretch handles that can be found in the examples directory of the Xic program distribution area. These demonstrate use of stretch handles and illustrate the property syntax.
name:val; stretchType:val, direction:val, parameter:val, minVal:val, maxVal:val, location:val, userScale:val, userSnap:val, key:val
The terms have precisely the same names and interpretation as the pycStretch property described in the Ciranova PyCell EDA Tool Integration Guidelines document provided with the Ciranova PyCell Studio package (now available from Synopsys). However, there are some differences.
The terms have the following significance.
``Location.CENTER_LEFT'',which specify the left, bottom, right, and top sides. All Ciranova codes are handled, those listed above display a line stretch handle, others will show a glyph.
In Xic, stretch handles are available only in physical mode. They are visible in selected, expanded instances only. A stretch handle is represented as a double-line highlighting of one of the four edges of the rectangle to which the rip property is applied.
The user can drag the highlighted edge in a direction normal to the edge over a range set in the property. The edge is ghost-drawn and attached to the mouse pointer during the move. Unlike some other move operations in Xic, only dragging is allowed, clicking on a grip will do nothing special. If the associated parameter has a constraint string defined, the highlighting will be visible only for allowed values of the parameter.