next up previous contents index
Next: PCell Abutment Up: Parameterized Cells and Vias Previous: Parameters Panel: Set PCell   Contents   Index


PCell Stretch Handles

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.

grip property, number 7195
This property is very similar to the Ciranova pycStretch property, used to implement stretch handles. The property has meaning when applied to physical-mode boxes only. The property string has the following format:

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.

  1. Ciranova does not allow white space within the string. In Xic, white space can appear between the terms as shown above.

  2. The semicolon following the name and the commas are optional, the terms can be white-space separated.

  3. In both cases a property string can contain multiple grip specifications. Ciranova separates the specifications by white space. In Xic, a new specification is started whenever a keyword is repeated.

  4. Ciranova requires that all keywords be provided in each specification, except for the name, which can be omitted for names with varying key strings. In Xic, when parsing multiple specifications, previous values of the various parameters are retained, so only changed values need be given.

  5. Xic keyword matching is case-insensitive.

The terms have the following significance.

name
A name for the stretch handle, which should be a unique string token within the pcell.

stretchType
Set to one of the keywords `relative'' or ``absolute''. Per Ciranova, if relative, the increment is measured relative to the center of the rectangle, while absolute is the increment measured according to the absolute X and Y directions. This parameter is ignored in Xic, since the explanation does not seem to make sense.

direction
Set to one of the keywords ``NORTH_SOUTH'' or ``EAST_WEST'', specifying the translation direction of the stretch handle.

parameter
The name of the pcell parameter that is modified by the stretch handle.

minVal
A numerical value giving the minimum value of the parameter being modified. SPICE-style scaling suffix values and units, e.g., 1K, 100nM, are acceptable, units are ignored.

maxVal
A numerical value giving the maximum value of the parameter being modified.

location
This specifies the location point for the graphical stretch handle on the layout rectangle. The value must be one of
``Location.CENTER_LEFT'',
``Location.LOWER_CENTER'',
``Location.CENTER_RIGHT'',
``Location.UPPER_CENTER'',
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.

userScale
This is a real number scale factor used to multiply the change in parameter value.

userSnap
The real number resolution value which should be used for snapping the parameter value, i.e., the reported parameter value will be an integer multiple of the userSnap.

key
The name used as a key to specify values for multi-valued parameters, and should be ``None'' for ordinary parameters. Multi-valued parameters are not supported in Xic.

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.


next up previous contents index
Next: PCell Abutment Up: Parameterized Cells and Vias Previous: Parameters Panel: Set PCell   Contents   Index
Stephen R. Whiteley 2024-09-29