Product Documentation
Virtuoso Design Intent User Guide
Product Version IC23.1, November 2023

Profile Properties Syntax

list(
;; Property Group DPL
list(nil 'name "GroupName"
'category [ "Cell" | "Devices" | "Nets" | "Pins" | "MaxVoltageDrop" |
"HighCurrent" ]
'aprGroup [ 't | 'nil ]
['toolTip "toolTip"]
['properties
list(
list(nil 'name "PropertyName"
'type ['bool|'string|'int|'float|'enum|'current|
'voltage|'aprPattern]
                           ['widget    'multiLineTextEdit]
['defValue value]
['range '(low high)] ;; int/float range
                           ['items    '("item1" ... "itemN") ] ;; enum choices
['callback S_callback]
)
)
]
)
)

Description

Sample syntax required to create and define custom profiles to capture frequently used property configurations for design intents. Each profile comprises a group of frequently used disembodied property list (DPL) properties, for example, add shield, add guard ring, and so on. The profiles can be created by your system administrator.

Arguments

'name "GroupName"

A unique name for the profile.

'category

The object type that the profile applies to. Choose one of 'Cell, 'Devices, 'Nets, 'Pins, 'MaxVoltageDrop, or 'HighCurrent.

'aprGroup

Specify that the device group should be treated as an APR group by the Auto Device P&R assistant. The options are 't and 'nil.

'toolTip

A short description is displayed on the GUI as a tooltip when you hover the mouse over the profile name on the Create or Edit Design Intent forms.

There is a separate row for each property to be listed in the profile. Each property must have a name, type, and defValue.

'name

The profile name to be displayed on the Create or Edit Design Intent forms. It is replaced with the value for 'guiName, if specified.

'scopes

A list of scopes associated with the property. This attribute is required only if the property is to be associated with a scope. The value can be a string, a string list, or nil. If the value is nil or if the 'scopes attribute is not listed for the property, the property is visible to all scopes.

'type

Specify the default type for the property. The options are 'bool, 'string, 'int, 'float, 'enum, 'current, 'voltage or 'aprPattern.

'widget

Use multi-line text fields for properties instead of the default single-line text field. The only option is'multiLineTextEdit.

'guiName

Specify the property name as it is to be displayed in the Create Design Intent and Edit Design Intent forms. This is required only if the definition of a property differs between scopes. In such cases, different property definitions are created for each scope with a different 'name value, but the same 'guiName value.

'defValue

Specify the default value for the property. For example, if creating a property type of 'enum, enter one of the items listed in items to display as the default.

The dpl format for specifying default values for the aprGroup is:

;(list nil Pattern "None"|"Preset"|"Template" PatternPreset "Clustered"|"Interdigitate"|"Compact"|"Custom"... PatternString t_string_patter DeviceGroup "Generic Group"|... TemplateFile fileName)

'items

List the values for the property. This is required for properties of type 'enum only.

'range

Specify minimum and maximum values for properties with a variable type of integer or float (where required).

The values must be enclosed in parentheses, 'range   '(1 5).

'callback

Set a callback function symbol on the callback attribute of a property. The callback is triggered when the specified value in the dialog changes.

Example of a Property Profile

The Match default profile comprises the properties PlacementStyle, Surround, ShareDiffusion, FoldDevice, and MatchNetPair.

In the property group definitions file, this profile is listed as follows:

list(
    ;;; ==================== Devices
    list(nil 'name "None" 'category "Devices" 'toolTip "Simple Note") ;;; No properties just a simple note
    list(nil 'name "Match - default" 'category "Devices" 'toolTip "How devices are to match"
'properties list(
list(nil 'name "PlacementStyle" 'type 'enum 'defValue "Symmetry" 'items '("Symmetry" "CommonCentroid" "Interdigitate"))
list(nil 'name "Surround" 'type 'enum 'defValue "Dummy" 'items '("Dummy" "FGR" "Both" "asNeeded") 'toolTip "GuardRing style")
list(nil 'name "ShareDiffusion" 'type 'bool 'defValue nil )
list(nil 'name "FoldDevice" 'type 'enum 'defValue "Even" 'items '("Even" "Odd" "Avoid"))
list(nil 'name "MatchNetPair" 'type 'string 'defValue "")

Each property in the profile is defined. The property PlacementStyle is a list (enum) and a default value (Symmetry) has been specified:

list(nil 'name "PlacementStyle" 'type 'enum 'defValue "Symmetry"  'items '("Symmetry" "CommonCentroid" "Interdigitate"))

On the Create Design Intent form this profile is displayed as follows:

The following example illustrates how to add callback function on a profile property:

(defvar myProfilesWithCB
'((nil name "Profile With CB"
category "Devices"
tooltip "DI with callback available in the dialog"
properties ((nil name "Prop bool"
type bool defValue t
callback S_callback)
(nil name "Prop int"
type int
defValue 0
callback S_callback)
(nil name "Prop float"
type float
defValue 0.0
callback S_callback)
(nil name "Prop enum"
type enum
defValue "value1"
items ("value1" "value2" "value3")
callback S_callback)
(nil name "Prop string"
type string
defValue ""
callback S_callback)
(nil name "Prop ML string"
type string
defValue ""
widget multiLineTextEdit
callback S_callback))))))

You can evaluate a custom procedure when a profile property is used.

Example of an APR Group Profile

The APR Group profile comprises the properties Pattern.

In the property group definitions file, this profile is listed as follows:

list(
    ;;; ==================== Devices
    list(nil 'name "APR Group" 'category "Devices" 'toolTip "How devices are to be grouped" 'aprGroup t 'properties list(
                       list(nil 'name "Apr" 'type 'aprPattern 
         )
  )

You can specify an pattern set as shown in the following figure.

You can also specify the APR finder for device group. This can be applied when used in layout with APR flow. In addition, there is a provision to include an existing template file to reuse the configuration.

Setting Default Value for APR Group Design Intent

You can customize to specify the state and values of a field when opened as a default setting in the Profile - APR Group.

list(nil 'name "APR Group" 'category "Devices" 'toolTip "How devices are to be grouped" 'aprGroup t
             'properties list(
               list(nil 'name "Apr" 'type 'aprPattern 'defValue '(nil Pattern "Preset" PatternPreset "Custom"))
              )
       )

To extend the APR group with additional custom properties, you can either update the diPropGroupDefs.il or update on the fly in the current Virtuoso session using the following.

ciDiReplaceOrAddPropertyGroupDef(
list(nil 'name "ProfileB" 'category "Devices" 'toolTip "***" 'aprGroup t
'properties list(
                list(nil 'name "PropertyB1" 'type 'bool 'defValue nil)        
                list(nil 'name "PropertyB2" 'type 'bool 'defValue t)
                list(nil 'name "PropertyB3" 'type 'bool 'defValue nil)
                list(nil 'name "PropertyB4" 'type 'bool 'defValue nil)
                list(nil 'name "PropertyB5" 'type 'enum 'defValue "xx" 'items '("xx" "yy" "zz"))
                list(nil 'name "Apr" 'type 'aprPattern 'defValue '(nil Pattern "Preset" PatternPreset "Custom"))    
)))

On the Create Design Intent form this profile is displayed as follows:

Additionaly, there are more DI profiles available by default. For example:

The automatic placement and routing flow in layout can search for the design intents with APR profile defined on them to create right set of constraints.

Related topics

Property Profiles

Modifying Sample Profiles and Property Definitions

Profile Property Scopes


Return to top
 ⠀
X