next up previous contents index
Next: Synopsys (Ciranova) PyCell Studio Up: Parameterized Cells and Vias Previous: PCell Stretch Handles   Contents   Index


PCell Abutment

Auto-abutment is most commonly used in MOS transistor pcells. If one overlays two compatible transistor instances, the two instances reconfigure themselves into a dual-gate configuration, eliminating redundant geometry.

At this time, the only available example pcell that implements auto-abutment is the Nmos2 pcell in the IPL_cni130 library supplied with the Synopsys (Ciranova) PyCell Studio download. This is an OpenAccess Python portable pcell which is part if the IPL (IPLnow.com) library of open-source portable pcells.

The following procedure illustrates auto-abutment.

  1. Download and install the Synopsys PyCell Studio package. This is free from Synopsys, but requires registration and a password mailback. Versions are available for Linux and Windows, though the Windows version is not currently supported in Xic.

  2. Start Xic in an environment that will load the OpenAccess libraries and Python from the PyStudio. Use ``-Tcni'' to reference the appropriate technology file. Edit an empty cell.

  3. Select the OpenAccess Libs button in the File Menu, which will bring up the libraries list.

  4. Select the IPL_cni130 library by clicking on the name. Then press the Contents button. A new listing window will appear.

  5. Scroll down in the new window and click on the Nmos2 entry.

  6. Then click the Place button in the bottom-right corner of the same window. The Cell Placement Control panel will appear. Press the Place button in this panel.

  7. The Parameters panel will appear, and the cell placement icon will be attached to the mouse pointer. Click twice in a drawing window to place two instances of the cell, far enough apart that they don't overlap. Press Esc to exit placement mode.

  8. Use the Expand feature from the View Menu to set the display depth so that the instance content will be shown.

  9. Now for the fun part. Pop down any pop-up windows or otherwise move them out of the way. Select one of the cell instances, and move it over the other, so that the right contact area of one touches the left contact area of the other. Both instances will reconfigure themselves, and the overlapped contact will be gone! The structure represents a dual-gate transistor.

  10. Move one of the instances well away from the other. Note that they revert to their original form.

  11. Click the PCell Control button in the Edit Menu. In the panel that appears, select Mode 2 (with contact) for Auto-abutment mode.

  12. As before, move one of the instances so that the contacts overlap. In this case, note that one of the instances retains the contact. This mode inplements trasistors with a shared contact.

The abutment protocol adheres as closely as possible to the description from the eda_tool_integration.pdf document supplied with the PyCell Studio. There is one very significant difference, in that Synopsys incorporates the logic into a separate non-visual pcell, which is created transiently to handle abutment events. In Xic, the logic is built into the program. Thus, auto-abutment can be used in native language and Tcl pcells in Xic, as well as Python pcells. In Xic, the internal logic handles abutment events, the separate pcell is not used.

Auto-abutment is enabled in a cell through application of a number of object properties that define aspects of the abutment. These are applied to objects created in the sub-master (or inherited from the super-master). The Xic properties as described below correspond to the properties described for abutment in PyCells, with generally identical syntax.

ab_class
This is equivalent to the Ciranova pycAbutClass property. It is applied to pin shapes to specify that two pin shapes from different cells can be abutted. Only pins with the same ab_class property string can trigger auto-abutment.

ab_rules
This is equivalent to the Ciranova pycAbutRules property. The property is applied to each pin shape that can be abutted, and the string specifies how the pcell parameters are modified for different abutment modes.

ab_directs
This is equivalent to the Ciranova pycAbutDirects property. The property is applied to each pin shape that can be abutted, and the string contains a comma-separated list of one or more of the string tokens left, bottom, right, and top. These specify the valid abutment directions.

ab_shapename
This is equivalent to the Ciranova pycAbutShapeName property. This property is assigned by the pcell developer to each pin shape which can be abutted. It assigns a unique name to the shape.

ab_pinsize
This is equivalent to the Ciranova pycAbutPinSize The property is applied to each pin shape which can be abutted, and supplies an orientation-independent width parameter.

ab_inst
This property is applied to instances of abutable cells, and contains an instance name. Xic normally does not generate or use instance names.

ab_prior
This property of a pcell instance indicates that the instance is abutted, and this property contains pre-abutment parameter values for use in reverting abutment.

ab_copy
This property is applied to instances with ab_prior properties that have just been copied. This will allow parameter reversion of the copy without touching the partner of the original.


next up previous contents index
Next: Synopsys (Ciranova) PyCell Studio Up: Parameterized Cells and Vias Previous: PCell Stretch Handles   Contents   Index
Stephen R. Whiteley 2022-05-28