Product Documentation
Virtuoso Studio Known Problems and Solutions
Product Version IC23.1, November 2023

Known Problems and Solutions in Virtuoso Relative Object Design

This document describes the known issues with Virtuoso® Relative Object Design (ROD) and suggests the workarounds for these issues. Each issue is identified by a Cadence Change Request (CCR) number.

Unless otherwise stated, the issues described in this document were identified in IC23.1 or an earlier release. For a list of the issues that were fixed in this release, check the README file at downloads.cadence.com.

Related Topics

Relative Object Design Concepts

Virtuoso Relative Object Design SKILL Functions

CCR 916633: IC615 crashes when modifying MPPs (stretch, move origin, etc)

Description: Virtuoso closes abruptly when trying to edit multipart paths (MPPs) containing corrupt internal data.

Solution: Use the following SKILL APIs to check and/or repair faulty MPPs:

For more information on rodCheckAllMPPsInCellView and rodCheckMPPs see the Virtuoso Relative Object Design SKILL Reference.

CCR 24535: Undo after moving aligned objects from one window to another, breaks ROD alignment

Description: Undo of edits involving ROD-aligned objects may alter the alignments.

Solution: Users should avoid using Undo on aligned ROD objects. The workaround is to realign the objects.

CCR 20965: Chopped MPP being regenerated w/ stretch

Description: This occurs during the stretch of a multipart path (MPP) if a segment that is part of a chop hole is partially selected. When a horizontal segment along the chop hole is selected and stretched downward and two horizontal segments of the chop hole line up, the chop hole refills.

Solution: You can avoid this problem by stretching before you chop. If you stretch after chopping and the chop hole is lost, you can fix it by repeating the chop either interactively with the Chop command or by using the rodAddMPPChopHole function.

CCR 18896: ROD alignments broken upon move and rotate to different cellview

Description: If a ROD object aligned to another ROD object is rotated, the aligned object should be rotated as well. Also, if the handles used in the alignments change their locations on the object due to the rotation (for example, upperRight becomes upperLeft after a 90 degree rotation), the handles stored in the alignment should be updated.

Solution: Avoid using the Rotate or Move commands to rotate ROD objects that have alignments. If objects need to be aligned and rotated, rotate them first and then align them.

CCR 18690: rodCreatePath flipping endpoints

Description: When creating a bus using rodCreatePath and offset subpaths, if a vertex is moved along the main path after at least one bend in next segment of the path, the endpoints on the subpaths flip upside down. This can be observed in a multipart path as well.

Solution: Specify the middle path as master path instead of the right or left subpath.

Multipart path (MPP) templates are stored in the binary form of your technology library. If you want the MPP templates that you create with the Create ROD Multipart Path form to persist in your technology library, you must not load new technology data that includes the lxRules class using the Replace mode. Loading a new lxRules class into your current technology library using Replace causes the MPP template data to be lost.

CCR 7929: Stretchable Pcells do not evaluate CDF callbacks

Problem: Stretching a Pcell does not execute CDFs associated with the Pcell parameters.

Solution: Specify user-defined functions to perform the tasks formerly performed by CDFs. For information about user-defined functions, see the description of the rodAssignHandleToParameter function in the Virtuoso Relative Object Design User Guide.

CCR 7195: Create MPP doesn’t allow IO type of existing term to change

Description: When you try to create a multipart path and specify a subpart as a terminal, and there is already a terminal in the cellview with the same terminal name but with a different terminal type (for example, Input/Output), the system does not create the subpart. The system displays messages in the CIW similar to these:

w *WARNING* rodCreatePath: rodiCreateConnectivity "output": not allowed because terminal "A" already exists with I/O Type of "input" \w *WARNING* rodCreatePath: unable to put object on terminal and net - "" \w *WARNING* rodCreatePath: rodiCreateMPP: ROD internal warning. Unable to create MPP sub part

What should happen is that the system should change the type of the existing terminal to match the MPP terminal type and display a warning message saying that the type of the existing terminal has been changed.

Solution: Before creating a multipart path (MPP) with a subpart that is specified as a terminal, change the type for any existing terminals that have the same name so they match the terminal type you want to specify for the MPP subpart terminal.

CCR 6189: Crash after dbCreateInst followed by a hiUndo

Description: If you create an instance using the dbCreateInst function in the CIW and a ROD shape already exists with the same name in the same cellview as the instance you are creating, the system displays the following Warning in the CIW:

WARNING* rodiFigTriggerFunc: Creating instance named instance_name forced unname of ROD shape_type to avoid name conflict. 
*WARNING* You might want to use Undo now.

If you do not do an Undo, the system unnames the ROD object, turning it into an ordinary shape.

Also, if after doing an Undo, you select the object that was unnamed and query its properties, the system might crash.

Solution: Before doing the Undo, de-select the object that was unnamed.

CCR 4839: MPP text edits not retained when the MPP gets regenerated

Description: A text display object that is part of a ROD multipart path (MPP) can be individually selected and its properties can be changed with the property editor (for example, layer, font, size, etc.). However, when the MPP is regenerated for any reason, the text display object is recreated with its original properties. A stretch, move, or chop of an MPP causes the subparts of the MPP to be regenerated as does an undo of any of those operations.

Solution: After an MPP is regenerated, you can update the properties of MPP text display objects using the Edit Properties form.

CCR 3565: Offset subpath does not turn small inside jog correctly

Description: If the jog on a path or subpath is short, the path or subpath might turn in the wrong direction.

Solution: There is no workaround available.


Return to top
 ⠀
X