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.
Related Topics
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:
-
rodCheckMPPs: Checks if the given list of MultiPart Paths contains corrupt internal data. If MPPs containing defective internal data are found, it fixes and/or creates markers to highlight them. -
rodCheckAllMPPsInCellView: Finds and opens the design specified and checks if any MPP in that design contains corrupt internal data. If MPPs containing defective internal data are found,rodCheckAllMPPsInCellViewfixes them and creates markers on them.
-
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.
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 namedinstance_nameforced unname of RODshape_typeto 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