Product Documentation
Virtuoso Unified Custom Constraints SKILL Reference
Product Version IC23.1, November 2023

3


Design Intent Functions

This chapter covers details about the SKILL functions available to create and edit Design Intent.

Related Topics

Virtuoso Design Intent User Guide

ciAPRDIDeviceGroupIterator

ciAPRDIDeviceGroupIterator(
d_cellViewId
t_matchExpression
)
=> l_schematicInstances / nil

Description

Runs an iterator to identify advanced place and route Design Intent structures in the specified design.

Arguments

d_cellViewId

Database ID of the cellview on which iterator is to be run.

t_matchExpression

Expression to be applied by the iterator to find the required structures in the given cellview.

Value Returned

l_schematicInstances

A list of schematic instances that match the specified expression.

nil

There are no matching structures in the specified cellview.

Examples

Runs the iterator to identify schematic instances that have Design Intent structures.

cvId = geGetEditCellView()
instances = ciAPRDIDeviceGroupIterator(cvId "t")
("/M1" "/M2")

ciAPRDINetIterator

ciAPRDINetIterator(
d_cellViewId
t_APRDIProfile
)
=> l_dbIDs / nil

Description

Iterates through all nets that are associated with an APR Net Design Intent in the cellview. The iterator expression is the APR Net DI profile name, for example, APR Net Shielding.

Arguments

d_cellViewId

Database ID of the cellview on which iterator is to be run.

t_APRDIProfile

APR Net DI profile name or t for all DI APR Net profiles.

Value Returned

l_dbIDs

A list of database IDs and hierarchical paths of all net groups and the Design Intent templates they are contained within.

nil

There are no matching structures in the specified cellview.

Examples

Groups all nets that are part of an APR Net DI with profile "APR Net Symmetry".

aprProfileExpr = "APR Net Symmetry"
symmetricNetGroups = ciAPRDINetIterator(cv aprProfileExpr) firstSymmGrp = car(symmetricNetGroups) netInfo = setof(res firstSymmGrp res->dbId->objType == "net")
foreach(mapcar netRes netInfo netRes->dbId->name)
("net48" "net40")

ciCheckDINetHierConsistency

ciCheckDINetHierConsistency(
t_profileName
[ ?profileProps l_profilePropsAndValues ]
[ ?cv g_cellview ]

)
=> t / nil

Description

Checks that the propagated design intent is consistent with the reference design intent for the selected nets. If no nets are selected, consistency is checked for all nets in the current cellview. Warns about mismatches in profile property values for Design Intent on the same net through the hierarchy or if the Design Intent is missing on a net at a particular level in the hierarchy. The basis for the comparison can be one of the following:

Arguments

t_profileName

The profile name used as the basis for checking successful Design Intent propagation.

?profileProps l_profilePropsAndValues

The names and optional values of the profile properties against which Design Intent propagation is to be checked.

?cv g_cellview

The cellview from which to start the check. Defaults to the current cellview.

Value Returned

t

The check was run successfully.

nil

The check failed to run.

Examples

ciCheckDINetHierConsistency("Net Voltage")

This example uses the Net Voltage profile as the basis of the propagation check.

ciCheckDINetHierConsistency("Net Voltage" '(("Min Voltage")("Max Voltage")))

This example uses the Min Voltage and Max Voltage properties of the Net Voltage profile as the basis of the propagation check.

ciCheckDINetHierConsistency("Net Voltage" '(("Min Voltage" 0.0)("Max Voltage" 3.3)))

This example additionally uses the supplied property values as the reference values for consistency checking across the hierarchy.

ciDevGroupBoxIterator

ciDevGroupBoxIterator(
d_cellview
t_finderExpr
)
=> l_dbId / nil

Description

Iterates all device groups within a cellview that are enclosed by a text box.

Arguments

d_cellview

The cellview containing the design instances to be iterated.

t_finderExpr

The matched expression string to be used in the iteration.

Value Returned

l_dbId

A list of lists, where each sublist contains the devices within each group.

nil

No text boxes were identified.

Example

ciDevGroupBoxIterator(geGetEditCellView() "ciIsDevice(inst \“fet\”) && !ciIgnoreDevice(inst)")~>name
(("M12" "M5" "M4") 
    ("PM7") 
    ("M2" "M3")
)

Three text boxes were identified, each containing a list of instances as shown.

ciDIGetRegisteredIgnoredTerminals

ciDIGetRegisteredIgnoredTerminals(
)
=> nil / l_ignoredTerms

Description

Returns the list of terminals that have been registered to be ignored when creating a design intent.

Arguments

None

Value Returned

nil

No terminals have been registered to be ignored.

l_ignoredTerms

Returns a list of the registered terminals as a list of the form (("t_termA" ... "t_termX") ("t_libName" "t_cellName" "t_viewName") ...) where:

  • "t_termA" ... "t_termX" is the list of terminal names that should be ignored for the master
  • "t_libName" "t_cellName" "t_viewName" is a three-part list of the instance master which has the terminals that need to be ignored

Example

Lists the terminals that are registered to be ignored:

(ciDIGetRegisteredIgnoredTerminals)
((("G") ("gpdk045" "nmos2v" "symbol"))(("G") ("gpdk045" "pmos2v" "symbol")))

Related topics

ciDIRegisterIgnoredTerminals

ciDIHierConsistencyCheck

ciDIHierConsistencyCheck(
d_cv
)
=> t / nil

Description

Runs the design intent consistency checks in the selected cellview.

Arguments

d_cv

The cellview in which the consistency checks need to be run.

Value Returned

t

Consistency checks run successfully in designated cell.

nil

Consistency checks were not run successfully.

Example

Run consistency checks in the cellview currently being edited:

ciDIHierConsistencyCheck
(geGetEditCellView())

ciDIHierPushDown

ciDIHierPushDown(
d_cv
{ 'replace | 'update }
)
=> t / nil

Description

Pushes the selected net or HighCurrent design intent down the hierarchy. You can choose whether to replace or update any existing design intent at the lower level.

Arguments

d_cv

Specifies the cellview in which the operation is to be performed.

'replace

Deletes the design intent on the lower level and creates a new one.

'update

If a design intent with the same profile exists, updates properties, parameters, and current of the existing design intent. Otherwise, it creates a new design intent.

Value Returned

t

Design intent was successfully replaced or updated.

nil

Failed to replace or update design intent.

Example

Replaces the specified design intent at the lower level:

cv = geGetEditCellView()
        hsmSelect(?cellview cv ?type 'template ?name "NetDI") 
        ciDIHierPushDown(cv 'replace)

Related topics

ciDIHierPushDownDIWithPaths

ciDIHierPushUp

ciDIHierPushDownDIWithPaths

ciDIHierPushDownDIWithPaths(
d_cv
{ 'replace | 'update }
l_diPathList
)
=> t / nil

Description

Pushes the selected nets or HighCurrent design intents down the hierarchy. You can use the hierarchy path to specify multiple nets or design intents. You can choose whether to replace or update any existing design intents at the lower level.

Arguments

d_cv

Specifies the cellview in which the operation is to be performed.

'replace

Deletes the design intent on the lower level and creates a new one.

'update

If a design intent with the same profile exists, updates properties, parameters, and current of the existing design intent. Otherwise, it creates a new design intent.

l_diPathList

List of hierarchy paths where the operation is to be performed.

Value Returned

t

Design intents were successfully replaced or updated.

nil

Failed to replace or update design intents.

Example

Replaces the specified design intents at the lower level:

diPathList=list(list(list("P1" "HighCurrent1") "HCDI_HIER.top:schematic)/I6(HCDI_HIER.subDI_1:schematic)") list(list("P2" "HighCurrent1") "(HCDI_HIER.top:schematic)/I7(HCDI_HIER.subDI_2:schematic)"))
 
ciDIHierPushDownDIWithPaths(geGetEditCellView() 'update diPathList)

Related topics

ciDIHierPushDown

ciDIHierPushUp

ciDIHierPushUp(
d_cv
{ 'replace | 'update }
)
=> t / nil

Description

Pushes the selected net or HighCurrent design intent to the top of the hierarchy. You need to descend edit into the design and select a design intent to push from that level to the top of the hierarchy.

Arguments

d_cv

Specifies the cellview in which the operation is to be performed.

'replace

Deletes the design intent on the upper level and creates a new one.

'update

If a design intent with the same profile exists, updates properties, parameters, and current of the existing design intent. Otherwise, it creates a new design intent.

Value Returned

t

Design intent was successfully replaced or updated.

nil

Failed to replace or update design intent.

Example

Replaces the specified design intent at the upper level:

cv = geGetEditCellView()
        hsmSelect(?cellview cv ?type 'template ?name "NetDI") 
        ciDIHierPushUp(cv 'replace)

Related topics

ciDIHierPushUpDIWithPaths

ciDIHierPushDown

ciDIHierPushUpDIWithPaths

ciDIHierPushUpDIWithPaths(
d_cv
{ 'replace | 'update }
l_diPathList
)
=> t / nil

Description

Pushes the selected nets or HighCurrent design intents to the top of the hierarchy. You need to descend edit into the design and select a design intent to push from that level to the top of the hierarchy. You can also use the hierarchy path to specify multiple nets or design intents.

Arguments

d_cv

Specifies the cellview in which the operation is to be performed.

'replace

Deletes the design intent on the upper level and creates a new one.

'update

If a design intent with the same profile exists, updates properties, parameters, and current of the existing design intent. Otherwise, it creates a new design intent.

l_diPathList

List of hierarchy paths where the operation is to be performed.

Value Returned

t

Design intents were successfully replaced or updated.

nil

Failed to replace or update design intents.

Example

Replaces the specified design intents at the upper level:

diPathList=list(list(list("P1" "HighCurrent1") "HCDI_HIER.top:schematic)/I6(HCDI_HIER.subDI_1:schematic)") list(list("P2" "HighCurrent1") "(HCDI_HIER.top:schematic)/I7(HCDI_HIER.subDI_2:schematic)"))
 
ciDIHierPushUpDIWithPaths(geGetEditCellView() 'update diPathList) 
 
ciDIHierPushDownDIWithPaths(geGetEditCellView() 'update diPathList)

Related topics

ciDIHierPushUp

ciDiMinMaxVPropertyCallback

ciDiMinMaxVPropertyCallback(
g_field
f_form
)
=> t / nil

Description

Runs a callback to check that customized property definitions using minimum and maximum voltage property values are set correctly so that Min Voltage is less than or equal to Max Voltage. When these properties are set incorrectly in the Create Design Intent form or Edit Design Intent form, the properties are highlighted and the form is prevented from closing until the values are corrected.

Arguments

g_field

The design intent field associated with the minimum and maximum voltage properties. For example, Max Voltage and Min Voltage on the Net Voltage profile.

f_form

The Create Design Intent form or the Edit Design Intent form.

Value Returned

t

The minimum and maximum values are set correctly.

nil

The minimum and maximum values are incorrectly set. The properties are highlighted in the Create Design Intent form or Edit Design Intent form for the values to be adjusted.

Example

The callback checks whether the values are set correctly for the Min Voltage and Max Voltage properties and highlights any errors:

    list(nil 'name "Net Voltage" 'category "Nets" 'toolTip "Net Min/Max Voltage"
'properties list
            list(nil 'name "Min Voltage" 'type 'float 'defValue 0.0 'range '(0.0                                    9999999.9) 'callback 'ciDiMinMaxVPropertyCallback)
list(nil 'name "Max Voltage" 'type 'float 'defValue 0.0 'range '(0.0      9999999.9) 'callback 'ciDiMinMaxVPropertyCallback)
)
)

Related topics

Create Design Intent

Defining Property Profiles

ciDiPostTransferHighCurrent

ciDiPostTransferHighCurrent(
g_template
)
=> t / nil

Description

Runs a callback to enslure that when a customized HighCurrent design intent is transferred from Schematics XL to Layout XL, the current is split evenly between the mfactored members in Layout XL. This function is specified using the postTransferCallback for the HighCurrent design intent properties.

Arguments

g_template

The design intent template.

Value Returned

t

The design intent properties were set using the specified design intent template.

nil

The design intent properties were not set.

Example

Runs ciDiPostTransferHighCurrent for the I property on the Current profile:

list(nil 'name "Current" 'category  "HighCurrent" 'toolTip "High Current Pins/    Terminals"
'properties list(list(nil 'name "I" 'type 'current) )
'postTransferCallback 'ciDiPostTransferHighCurrent
)

Related topics

Creating a HighCurrent Design Intent

Defining Property Profiles

ciDiPostTransferMinMaxVoltage

ciDiPostTransferMinMaxVoltage(
g_template
)
=> t / nil

Description

Runs a callback to propagate the design intent properties Min Voltage, Max Voltage, Signal Type, Power Sensitivity, and Ground Sensitivity on the associated design intent objects after transfer from schematic to layout.

For more details, see Defining Property Profiles.

Arguments

g_template

The transferred design intent template.

Value Returned

t

The design intent properties were set on the associated design intent objects.

nil

The design intent properties were not set.

Example

Propagates the design intent properties Min Voltage and Max Voltage on to the associated pins design intent after transfer from schematic to layout.

ciDiReplaceOrAddPropertyGroupDef(
list(nil 'name "Pin Voltages" 'category "Pins" 'toolTip "Pin voltage rules" 'properties list(
list(nil 'name "Min Voltage" 'type 'float 'defValue 0.0 'range '(0.09999999.9) 'callback 'ciDiMinMaxVPropertyCallback)
list(nil 'name "Max Voltage" 'type 'float 'defValue 0.0 'range '(0.09999999.9) 'callback 'ciDiMinMaxVPropertyCallback
)
'postTransferCallback 'ciDiPostTransferMinMaxVoltage
'okApplyCallback 'ciUpdateObjPropsFromDI
)
)

Related topics

Creating a MaxVoltageDrop Design Intent

Defining Property Profiles

ciDIRegisterIgnoredTerminals

ciDIRegisterIgnoredTerminals(
l_ignoredTerms
)
=> t

Description

Registers a list of terminals per master cellview that should be ignored when creating a design intent. Bulk terminals are always ignored regardless of the registration status of the terminals. Ignoring terminals when creating design intent is useful when some terminals exist in the schematic but not in the layout.

Arguments

l_ignoredTerms

A list of the terminals that should be ignored for the master as a list of the form (("t_termA" ... "t_termX") ("t_libName" "t_cellName" "t_viewName") ...) where:

  • "t_termA" ... "t_termX" is the list of terminal names that should be ignored for the master. If set to nil, the terminals are unregistered for the given master.
  • "t_libName" "t_cellName" "t_viewName" is a three-part list of the instance master which has the terminals that need to be ignored

Value Returned

t

The specified terminals were registered to be ignored.

Example

The terminal named G is registered to be ignored for the instance with the master library name gpdk045, cell name nmos2v or pmos2v, and view name symbol:

(ciDIRegisterIgnoredTerminals '((("G") ("gpdk045" "nmos2v" "symbol"))
             (("G") ("gpdk045" "pmos2v" "symbol"))))

Any terminals of an instance with the master library name gpk045, cell name nmos2v, and view name symbol are no longer ignored when creating a design intent:

(ciDIRegisterIgnoredTerminals '((nil ("gpdk045" "pmos2v" "symbol"))))

Related topics

ciDIGetRegisteredIgnoredTerminals

ciDiReplaceOrAddPropertyGroupDef

ciDiReplaceOrAddPropertyGroupDef(
l_propGroupDefs
)
=> t / nil

Description

Adds or replaces customized design intent property group definitions.

For more details, see Defining Property Profiles.

Arguments

l_propGroupDefs

The design intent property group definition to be added or replaced.

Value Returned

t

The new or amended property group definition was successfully added or replaced.

nil

The property group definition was not added.

Example

Adds a new property group definition, Pin Voltages, to the design intent category, Pins:

ciDiReplaceOrAddPropertyGroupDef(
    list(nil 'name "Pin Voltages" 'category "Pins" 'toolTip "Pin voltage rules"
     'properties list(
list(nil 'name "Min Voltage" 'type 'float 'defValue 0.0 'range '(0.0 9999999.9) 'callback 'ciDiMinMaxVPropertyCallback)
list(nil 'name "Max Voltage" 'type 'float 'defValue 0.0 'range '(0.0 9999999.9) 'callback 'ciDiMinMaxVPropertyCallback)
)
)
)

ciDiReportGenReport

ciDiReportGenReport(
[ ?cv d_cellviewID ]
[ ?depth x_depth ]
[ ?title t_reportName ]
[ ?path t_path ]
[ ?launch { t | nil } ]
[ ?date t_reportDate ]
)
=> t / nil

Description

Generates a report summarizing the design intent in the current design based on the specified criteria and optionally opens the report in the browser.

Arguments

?cv d_cellviewID

Database ID of the cellview for which the report is to be generated.

The default is the cellview currently being edited.

?depth x_depth

Number of hierarchy levels to be included in the report.

The default is -1, which means that the report is generated for the full design hierarchy. Specify 0 to generate a report only for the specified cellview.

?title t_reportName

Title of the report.

If you do not specify a name, the system generates one automatically.

?path t_path

Path to the directory in which the report is saved.

If you do not specify a path, the report is saved in the current working directory.

?launch { t | nil }

Automatically opens the report in the browser after it is generated.

?date t_reportDate

Date to be appended to the report.

If you do not specify a date, the date and time the report was generated are used.

Value Returned

t

The report was generated and saved to disk.

nil

The report was not generated.

Example

Generates a report for the top-level cellview currently being edited. The title of the report is Design Intent Report, it is to be saved to a reports directory inside the current working directory, and it will be opened automatically in the browser after it is generated.

(ciDiReportGenReport ?cv (geGetEditCellView) ?depth 0 ?title "Design Intent Report" ?path "./reports" ?launch t)

ciDIUpdateArrowDirections

ciDIUpdateArrowDirections(
[ ?cv d_cellviewID ]
)
=> l_highCurrentIds

Description

Updates the direction of high current design intent arrows that do not follow the conventional current flow direction.

Arguments

?cv d_cellviewID

Database ID of the cellview to update the arrow directions in.

The default is the cellview currently being edited.

Value Returned

l_highCurrentIds

A list of the high current design intents in the cellview.

Examples

highCs = ciDIUpdateArrowDirections()
=>(ci:0x3d8052c0)

ciResetDIImplementation

ciResetDIImplementation(
g_cache
)
=> g_constraintTemplateId / nil

Description

Resets the implementation status, implementation notes, and signed off status of all design intents in the constraints cache so that the cellview can be reused.

Arguments

g_cache

The constraints cache.

Value Returned

g_constraintTemplateId

List of design intent constraint template IDs that have been reset.

nil

The constraint template IDs were not reset.

Example

Resets the implementation status, implementation notes, and signed off status of all design intents in the constraints:

ciResetDIImplementation(ciGetCellView()) 

ciSetDIPropertyGroupDefs

ciSetDIPropertyGroupDefs(
l_propGroupDefs
)
=> t / nil

Description

Sets the design intent property group definitions to the specified definitions. All existing property group definitions are deleted.

For more details, see Defining Property Profiles.

Arguments

l_propGroupDefs

A list of design intent property group definitions.

Value Returned

t

The property group definitions were replaced.

nil

The property group definitions were not set.

Example

All existing property group definitions are replaced with the design intent property group definitions Net Voltages and Pin Voltages. The callback ciDiMinMaxVPropertyCallback is run to check the values for the minimum and maximum voltage properties for minVProp and maxVProp:

let(((minVProp list(nil 'name "Min Voltage" 'type 'float 'defValue 0.0 'range '(0.0 9999999.9) 'callback 'ciDiMinMaxVPropertyCallback))
(maxVProp list(nil 'name "Max Voltage" 'type 'float 'defValue 0.0 'range '(0.0 9999999.9) 'callback 'ciDiMinMaxVPropertyCallback)))
   ciSetDIPropertyGroupDefs(
list(
list(nil 'name "Net Voltages" 'category "Nets" 'toolTip "Net voltage rules" 'properties list(minVProp maxVProp))
list(nil 'name "Pin Voltages" 'category "Pins" 'toolTip "Pin voltage rules" 'properties list(minVProp maxVProp))
)
   )
)

ciTemplateChangeDIProfile

ciTemplateChangeDIProfile(
u_templateId
t_profileName
)
=> t / nil

Description

Replaces the property profile currently selected for a design intent template.

Arguments

u_templateId

The design intent template ID.

t_profileName

The new profile name.

Value Returned

t

The property profile was replaced successfully.

nil

The property profile was not replaced.

Example

firstDeviceDI = car(setof(plate ciGetCellView()->templates plate->type == "diDevices")) 
ciTemplateDIProfileName(firstDeviceDI)
"Match - default"
ciTemplateListDIProps(firstDeviceDI)
(("FoldDevice" string "Even")
("ShareDiffusion" boolean nil)
("Surround" string "Dummy")
("PlacementStyle" string "Symmetry")
)
ciTemplateChangeDIProfile(
firstDeviceDI "Match - DiffPair"
)
ciTemplateDIProfileName(firstDeviceDI)
"Match - DiffPair"
ciTemplateListDIProps(firstDeviceDI)
(("MatchNetPair" string "")
    ("WPERange" float 0.1)
    ("FoldDevice" string "Even")
    ("Surround" string "Dummy")
    ("ShareDiffusion" boolean nil)
    ("PlacementStyle" string "Symmetry")
)

For a design intent template of type diDevices, this example uses the function ciTemplateDIProfileName to return the profile currently selected for the design intent template, Match - default. The function ciTemplateListDIProps is then used to return the property names, types, and values associated with it.

Using the ciTemplateChangeDIProfile function, the profile currently selected for the template is then changed to Match - DiffPair. The ciTemplateListDIProps function is used again to return the property names, types, and values associated with the new profile.

ciTemplateCreateDI

ciTemplateCreateDI(
g_cache
t_templateType { diDevices | diNets | diPins | diMaxVoltageDrop |     diHighCurrent | diCell }
t_name
l_memberNamesTypes
[ ?profile t_profileName ]
[ ?params l_paramNameAndValue ]
[ ?propNameValue l_propNameValue ]
)
=> u_templateId / nil

Description

Creates a design intent template for the specified template type.

Arguments

g_cache

The constraints cache.

t_templateType

The design intent template type enclosed in straight quotes. The types available are diDevices, diNets, diPins, diMaxVoltageDrop, diHighCurrent, and diCell.

t_name

The name of the created template.

l_memberNamesTypes

The member names and types available to the template created.

?profile t_profileName

The profile name to be associated with the new template. Each profile must be enclosed in quotation marks.

?params l_paramNameAndValue

A list of the parameter names and values.

Valid parameter names are:

Design Notes; string; user-specified text

Color; string; user-specified text

AnnotationStyle; string; valid values depend on object type

Devices; enum; { none | CirclesOnly | BoundingBoxes | BoundingBox }

Nets; enum; { none | EachNetSeg | AllNetSegs | FullNet }

Pins; enum; { none | CirclesOnly | BoundingBoxes | BoundingBox }

highC; enum; { Arrow }

maxVD; enum; { Lightning }

Cell; enum; { Design Notes Legend }

Font Height; float; the size of the font to be used for the name text label of the DI glyph

Font Style; string; one of the available label font styles

Signed Off; boolean; indicates whether the implementation of the DI conforms to the standards of the circuit designer

?propNameValue l_propNameValue

The individual property types to be included in the new template. Each property type must be enclosed in quotation marks.

Value Returned

u_templateId

The ID of the template created.

nil

A template was not created.

Example

cache = ciGetCellView()
diDevices = ciTemplateCreateDI(cache "diDevices" "DiffPair" '(("M2" inst)("M3" inst)) ?profile "Match - DiffPair" ?params '(("Design Notes" "AABB/BBAA")))
ciTemplateUpdateParams(
    diDevices '(("Design Notes" 
    "ABBA/BAAB")
    ("AnnotationStyle" "BoundingBoxes")
    ("Color" "halo4"))) ;; halo packets used for color
diNets = ciTemplateCreateDI(cache "diNets" "Match Nets" '(("INN" net)("INP" net)) ?profile "Match Net")
diPins = ciTemplateCreateDI(cache "diPins" "Diff Pair Pins" '(("INN:3" pin)("INP:4" pin)) ?profile "Placement")
diMVD = ciTemplateCreateDI(
    cache 
    "diMaxVoltageDrop" 
     "Max Voltage Drop (Power)" 
    '(
    ("VDD:2" pin      (("ref" 1)("enableV" 1)))
    ("PM0:S" instTerm (("ref" 0)("enableV" 1)("Voltage" 0.11)))
    ("PM7:S" instTerm (("ref" 0)("enableV" 1)("Voltage" 0.22)))
    ) 
    ?profile "Voltage") ;;; Must be this profile name
mvdCon= car(diMVD~>constraints)
ciConUpdateParams(mvdCon '(("maxVoltageDrop" 2.0)))
diHighC = ciTemplateCreateDI(
    cache 
    "diHighCurrent" 
    "High Current Paths" 
    '(
    ("VSS:1" pin      (("enableI" 1)("Current" 0.75)("sourceSink" 1)))
    ("NM7:S" instTerm (("enableI" 1)("Current" 0.11)))
    ("NM8:S" instTerm (("enableI" 1)("Current" 0.22)))
    ("NM9:S" instTerm (("enableI" 1)("Current" 0.33)))
    ) 
    ?profile "Current") ;;; Must be this profile name
diCell = ciTemplateCreateDI(cache "diCell" "Cell Level DI" '(("ether_adc45n/adc_sample_hold/schematic" master)))

This example creates the following design intents for a cellview:

  1. DiffPair based on the template type diDevices is created with the property profile Match - DiffPair for the instances M2 and M3. The annotation style and notes parameters are also specified for the design intent.
  2. Match Nets is created based on the template type diNets with the property profile Match Net for the nets INN and INP.
  3. Diff Pair Pins based on the template type diPins is created with the property profile Placement for the pins INN:3 and INP:4.
  4. Max Voltage Drop (Power), based on the template type diMaxVoltageDrop, it is created with the property profile Voltage for the pin VDD:2 and instance terminals PMO:S and PM7:S. The profile property parameters are specified for this design intent.
  5. High Current Paths, based on the template type diHighCurrent, it is created with the property profile Current for the pin VDD:1 and instance terminals NM7:S, NM8:S, and NM9:S. The profile property parameters are specified for this design intent.
  6. Cell Level DI, based on the template type diCell which is a design intent that applies to the entire cellview.

ciTemplateDIProfileName

ciTemplateDIProfileName(
u_templateId
)
=> t_profileName / nil

Description

Returns the name of the profile associated with the specified design intent template.

Arguments

u_templateId

The template ID where the property profiles are located.

Value Returned

t_profileName

The profile name associated with the specified template.

nil

No property profiles were located.

Example

foreach(mapcar plate ciGetCellView()->templates list(plate->type ciTemplateDIProfileName(plate))) 
   (("diDevices" "Match - CurrentMirror") 
    ("match" nil) 
    ("diNets" "Match Net") 
    ("commonCentroid" nil)
) 

Lists all the templates in the cellview and for those that are design intent templates, returns the profile name.

ciTemplateDIPropDef

ciTemplateDIPropDef(
u_templateId
t_propertyName
)
=> l_propNameTypeDefVal / nil

Description

For the specified design intent template, returns the definition of the named property in the form of a DPL.

Arguments

u_templateId

The template ID where the named property is located.

t_propertyName

Specifies the name of the property for which the definition is to be returned.

Value Returned

l_propNameTypeDefVal

The property definition in DPL form.

nil

No matching property definition was found.

Example

foreach(mapcar plate ciGetCellView()->templates list(plate->type ciTemplateDIPropDef(plate "PlacementStyle"))) 
(("diDevices" 
    (nil name "PlacementStyle" type enum
    defValue "Symmetry" items 
    ("Symmetry" "CommonCentroid" "Interdigitate")
    )
    ) 
("match" nil) 
("diNets" nil) 
("commonCentroid" nil)
) 

Lists all the templates in the cellview and for those that are design intent templates, returns the definition of the property PlacementStyle.

ciTemplateDIPropGroupDef

ciTemplateDIPropGroupDef(
u_templateId
)
=> l_propNameTypeDefVal / nil

Description

For the specified design intent template, returns the definition of all the properties in the form of a DPL.

Arguments

u_templateId

The ID of the template where the properties are located.

Value Returned:

l_propNameTypeDefVal

The property definition in DPL form.

nil

No properties were located.

Example

foreach(mapcar plate ciGetCellView()->templates list(plate->type ciTemplateDIPropGroupDef(plate)))
(("diDevices" 
    (nil name "Match - CurrentMirror" category "Devices"
    toolTip "How CurrentMirror devices are to match" properties 
    ((nil name "PlacementStyle" type enum
        defValue "Symmetry" items 
        ("Symmetry" "CommonCentroid" "Interdigitate")
        ) 
        (nil name "MatchProperty" type enum
        defValue "Parameter" items 
        ("Parameter" "Orientation")
        ) 
        (nil name "Surround" type enum
        defValue "Dummy" items 
        ("Dummy" "FGR" "Both" "asNeeded")
        ) 
        (nil name "ShareDiffusion" type bool
        defValue nil
        )
    ) 
    ) 
    ("match" nil) 
    ("diNets" nil) 
    ("commonCentroid" nil)
)

Lists all the templates in the cellview and for those that are design intent templates, returns the definition of each property.

ciTemplateDIPropValue

ciTemplateDIPropValue(
u_templateId
t_propertyName
)
=> g_propValue / nil

Description

For the specified design intent template, returns the value of a named property.

Arguments

u_templateId

The template ID where the named property is lcoated.

t_propertyName

The name of the property from which the value is to be returned.

Value Returned

g_propValue

The property value.

nil

No matching property was located.

Example

firstDeviceDI = car(setof(plate ciGetCellView()->templates plate->type == "diDevices")) 
ciTemplateDIPropValue(firstDeviceDI "PlacementStyle") "CommonCentroid"

Finds the first design intent template on the cellview and returns the value for the named property PlacementStyle.

ciTemplateIsKindOfDI

ciTemplateIsKindOfDI(
d_templateId
)
=> t / nil 

Description

Confirms if the specified constraint template is a design intent template. The available design intent templates are: diDevices, diNets, diPins, diMaxVoltageDrop, diHighCurrent, and diCell.

Arguments

d_templateId

The template ID to be checked.

Value Returned

t

The template ID is a design intent template.

nil

The template ID is not a design intent template

Example

ciTemplateIsKindOfDI

cache = ciGetCellView()
foreach(mapcar plate cache->templates list(plate->type ciTemplateIsKindOfDI(plate)))
(("diDevices" t) 
    ("match" nil) 
    ("diNets" t) 
    ("commonCentroid" nil)
)

Lists all the template IDs in the cellview and for the templates that are design intent templates, returns t.

ciTemplateListDIProps

ciTemplateListDIProps(
u_templateId
)
=> l_propNameTypeValueList / nil

Description

For the specified design intent template, returns a list of the property names, types, and values.

If a scope is defined for the design intent, this function automatically includes within the list returned, an additional syntax string 'name "DI_CURRENT_SCOPE". This lists the currently selected scope for the design intent as the 'defValue. For more details, see Defining Scopes for Profile Properties.

Arguments

u_templateId

The template ID where the property names, types, and values are located.

Value Returned

l_propNameTypeValueList

Lists the property names, types, and values.

nil

No properties were located.

Example

foreach(mapcar plate ciGetCellView()->templates list(plate->type ciTemplateListDIProps(plate)))
(("diDevices" 
    (("ShareDiffusion" boolean nil) 
        ("Surround" string "FGR") 
        ("MatchProperty" string "Parameter") 
        ("PlacementStyle" string "CommonCentroid")
    )
    ) 
    ("match" nil) 
    ("diNets" 
    (("Keep Away" string "") 
        ("Shield" string "Parallel") 
        ("Signal Type" string "Symmetry") 
        ("Match Pair" string "")
    )
    ) 
    ("commonCentroid" nil)
)

Lists all the templates in the cellview and for those that are design intent templates, returns the name, type, and value of each property.

ciTemplateUpdateDIProps

ciTemplateUpdateDIProps(
u_templateId
l_propNameValue
)
=> t / nil

Description

For the specified design intent template, updates the value of the named property.

Arguments

u_templateId

The template ID where the named property is located.

l_propNameValue

The property name value to be updated.

Value Returned

t

The specified property value was updated.

nil

The specified property name was not found.

Example

firstDeviceDI = car(setof(plate ciGetCellView()->templates plate->type == "diDevices"))
ciTemplateDIPropValue(firstDeviceDI "PlacementStyle")
"CommonCentroid"
ciTemplateDIPropValue(firstDeviceDI "Surround")
"FGR"
ciTemplateUpdateDIProps(firstDeviceDI '(("PlacementStyle" "Interdigitate")("Surround" "Dummy")))
ciTemplateDIPropValue(firstDeviceDI "PlacementStyle")
"Interdigitate"
ciTemplateDIPropValue(firstDeviceDI "Surround")
"Dummy" 

Finds the first design intent template on the cellview and returns the values for the properties PlacementStyle and Surround. For PlacementStyle, the value CommonCentroid is replaced with Interdigitate, and for Surround, FGR is replaced with Dummy.

ciUpdateObjPropsFromDI

ciUpdateObjPropsFromDI(
g_form
g_template
)
=> t / nil

Description

Runs a callback to propagate design intent properties to the associated design intent objects. The function can be called when the Create Design Intent form or Edit Design Intent form are submitted.

For more details, see Defining Property Profiles.

Arguments

g_form

The Create Design Intent form or Edit Design Intent form.

g_template

The design intent constraint template.

Value Returned

t

The design intent properties were updated for all objects associated with the design intent.

nil

The design intent properties were not updated.

Example

Propagates the design intent properties Min Voltage and Max Voltage to the associated design net and Signal Type to pins.

list(nil 'name "Net Voltage" 'category "Nets" 'toolTip "Net Min/Max Voltage"
      'properties list(
list(nil 'name "Min Voltage" 'type 'float 'defValue 0.0 'range '(0.0 9999999.9) 'callback 'ciDiMinMaxVPropertyCallback)
list(nil 'name "Max Voltage" 'type 'float 'defValue 0.0 'range '(0.0 9999999.9) 'callback 'ciDiMinMaxVPropertyCallback)
)
'okApplyCallback 'ciUpdateObjPropsFromDI
)
list(nil 'name "Signal Type" 'category "Pins" 'toolTip "Signal Type"
      'properties list(
list(nil 'name "Signal Type" 'type 'enum 'defValue "signal" 'items '("signal" "ground" "power" "clock" "analog" "tieOff" "tieHi" "tieL" "scan" "reset"))
)
'okApplyCallback 'ciUpdateObjPropsFromDI
)


Return to top
 ⠀
X