Product Documentation
Virtuoso Layout Suite XL: Connectivity Driven Editing User Guide
Product Version IC23.1, November 2023

permuteRule Property

permuteRule string t_permuteRule

Description

Makes the instance pins or terminals of a device permutable.

Alternatively, you can use the following syntax to same effect:

p (E1 E2) 
f (E1 E2) 

The permuteRule property can be defined on the layout or symbol master, in the CDF, or on the schematic or layout instance. Depending on where the permuteRule property is defined in a design, the rule that is used is based on the following precedence:

  1. Look for the autoPermutePins property on the layout instance. If the property is set to false, do not permute.
  2. Look for the permute rule in CDF to get the instance CDF for the layout instance. Search for the permuteRule CDF parameter. If the parameter is present and not an empty string, return the value. Else, search in simInfo and auLvs. If the parameter is present and not an empty string, return the value.
  3. Find the schematic instance this layout instance is bound to and search for the permuteRule property on the schematic instance. If the parameter is present and not an empty string, return the value. Else, search for the permuteRule property on the master of the schematic instance. If the parameter is present and not an empty string, return that value. Else, search for the permuteRule property on the supermaster of the schematic instance. If the parameter is present and not an empty string, return the value.

Search for the permuteRule property on the layout instance. If the parameter is present and not an empty string, return the value. Else, search for the permuteRule property on the master of the layout instance. If the parameter is present and not an empty string, return that value. Else, search for the permuteRule property on the supermaster of the layout instance. If the parameter is present and not an empty string, return the value.

All pins that are not listed in the permuteRule property for a device are considered fixed. If you define the permuteRule property on a schematic symbol, that setting overrides any other rule defined in the layout for that instance.

You define the permuteRule in the Edit Component CDF form in either the Component Parameters section or the Simulation Information section. If it is defined in both sections, Layout XL uses the definition in the Component Parameters section.

After you add the permuteRule in the Edit Component CDF form, make sure that you run either of the following commands, for the permuteRule to take effect:

Alternatively, you can set the Update Connectivity Reference to None and then again set to the schematic for the property to take effect.

If you want Layout XL to permute pins automatically, switch on the Permute pins option in the Generation of the Connectivity form. If this option is switched off, you can only permute pins manually. Use the Disable Permutation constraint to prevent permutation for a selected instance. See Disabling Permutation for an Instance.

Symbol master Add Property form

Name

permuteRule

Type

string

Value

t_permuteRule

Add CDF Parameter form

Add After Parameter

As First Parameter

paramType

string

name

permuteRule

defValue

t_permuteRule

Examples

Here is a sample block of code to look for permuteRule for a given layout instance. If the value returned is an empty string, it implies no permute.

string findPermuteRule(dbInstId layInst)  {
   
      if (layInst->hasBoolProp("autoPermutePins", &pValue)) {
   if (pValue == false) {
  return "";
    } 
     }
     cdf = getInstCDF(layInst);
     
     if (param = cdf->findParam(layInst, "permuteRule") {
  if (param->valueNotEmptyString()) {
       return param->value();
  }
  return ""
     } else if (param = cdf->findParam(layInst,
"simInfo/auLvs/permuteRule")) {
   // look for permuteRule property in CFD simInfo, under auLvs
   if (param->valueNotEmptyString()) {
        return param->value();
     }
   
     schInst = binder->findSchInst(layInst);    // find schematic instance 
this layout instance is bound to
    
    if (schInst->hasStringProp("permuteRule", &pValue)) {
   if (pValue->valeNotEmptyString()) {
        return pValue;
   }
    }
    schMaster = schInst->master;
    if (schMaster->hasStringProp("permuteRule"), &pValue)) {
  if(pValue->valueNotEmptyString()) {
       return pValue;
  }
     }
     schSuperMaster = schMaster->superMaster;
     if (schSuperMaster->hasStringProp("permuteRule"), &pValue)) {
  if(pValue->valueNotEmptyString()) {
     return pValue;
  }
     }
      if (layInst->hasStringProp("permuteRule", &pValue)) {
   if (pValue->valeNotEmptyString()) {
        return pValue;
   }
    }
    layMaster = layInst->master;
    if (layMaster->hasStringProp("permuteRule"), &pValue)) {
  if(pValue->valueNotEmptyString()) {
       return pValue;
  }
     }
     laySuperMaster = layMaster->superMaster;
     if (laySuperMaster->hasStringProp("permuteRule"), &pValue)) {
  if(pValue->valueNotEmptyString()) {
     return pValue;
  }
     }
     
    return "";
}

Macros

To avoid entering long lists of permutable pins for the permuteRule property, use the following macro notations.

Related Topics

Pin Permutation

Disabling Permutation for an Instance

Setting Layout XL Properties

Layout XL Properties


Return to top
 ⠀
X