B
Voltage Dependent Rules Functions
The list below lets you access information about syntax, descriptions, and examples for the Cadence® SKILL functions associated with the Virtuoso® voltage dependent rules flows. Only the functions listed here are supported for public use. Any other functions, and undocumented aspects of the functions described below, are private and subject to change or removal at any time.
VDR-related SKILL Functions
The functions listed below let you create and remove voltage labels for the nets in your design:
- vdrCheckVoltageLabels
- vdrCreateUserdvConstraintsFromFile
- vdrCreateVoltageLabel
- vdrCreateVoltageLabelEx
- vdrCreateVoltageLabelOnNets
- vdrCreateVoltageMarkers
- vdrCreateVoltageMarkersOnNets
- vdrCreateVSyncConstraintsFromFile
- vdrDebuggerGUI
- vdrDeleteGUI
- vdrDeleteLabels
- vdrDisplaySchematicGUI
- vdrGenerateLabelsGUI
- vdrGenerateUserdvShapes
- vdrGenerateVSyncShapes
- vdrGetValidLayers
- vdrResetNetVoltages
- vdrRunSanityChecker
- vdrRunUserdvSanityChecker
- vdrRunVoltageConflictChecker
- vdrRunVSyncSanityChecker
- vdrSanityCheckerGUI
- vdrSetNetVoltageRange
- vdrSetValidLayers
- vdrTransferVSyncConstraints
- vdrVsyncVisualizerGUI
VDR-related Database Access SKILL Functions
The functions listed below let you manipulate voltage values for nets directly in the design database.
- To set, get, and unset the minimum and maximum voltages for a net, use:
- To set, get, and unset the voltage source for a net, use:
- To set and get the default minimum and maximum voltages for nets in a cellview, use:
For detailed information, click any of the links above or see
vdrCheckVoltageLabels
vdrCheckVoltageLabels(d_cellviewID[t_reportFilename] [g_enablePopup] ) => t / nil
Description
Verifies that all top-level nets in the specified layout cellview are correctly labeled on the canvas.
Arguments
Value Returned
|
All the top-level nets in the design are correctly labeled on the canvas. |
|
|
Some of the top-level nets in the design do not have correct labels. Check the report file or CIW for details. |
Example
returnVal = true
when(window = hiGetCurrentWindow()
when(cellView = geGetEditCellView(window)
when(instHeaders = cellView~>instHeaders
if(vdrCheckVoltageLabels(instHeader~>master "vdrReport.log" nil) == nil)
returnVal = nil
)
)
)
)
Checks that all the top-level nets in the current design are correctly labeled on the canvas and appends information to a file called vdrReport.log in the current working directory.
Related Topics
Checking Voltage Labels in the Layout View
vdrCreateUserdvConstraintsFromFile
vdrCreateUserdvConstraintsFromFile(
t_libName
t_cellName
t_viewName
t_fileName
)
=> nil
Description
Creates User Delta Voltage (userdv) constraints in the specified source schematic cellview based on information from the given CSV file. The schematic view is opened in read-only mode.
Arguments
Value Returned
Example
Creates the userdv constraint specified in file Data.csv in cellview lib1/cell1/schematic and writes appropriate messages to the log file.
scv = dbOpenCellViewByType("lib1" "cell1" "schematic" "" "r")
srcCache = ciCacheGet(scv) ;gives constraint cache of cellview
listOfCons = nil
foreach(elm srcCache~>constraints
when(elm~>type == 'deltaVoltage listOfCons = cons(elm listOfCons)))
printf("LOG: Constraints in target layout: %L\n" listOfCons~>name)
output => LOG: Constraints in target layout: nil
vdrCreateUserdvConstraintsFromFile("lib1" "cell1" "schematic" "./Data.csv")
output =>
INFO (CMGR-5020): Created constraint of type 'deltaVoltage' in cache 'lib1 cell1 schematic' with name 'Constr_1'.
INFO (CMGR-5020): Created constraint of type 'deltaVoltage' in cache 'lib1 cell1 schematic' with name 'Constr_2'
srcCache = ciCacheGet(scv)
listOfCons = nil
foreach(elm srcCache~>constraints
when(elm~>type == 'deltaVoltage listOfCons = cons(elm listOfCons)))
printf("LOG: Constraints in target layout: %L\n" listOfCons~>name)
output=> LOG: Constraints in target layout: ("Constr_2" "Constr_1")
vdrCreateVoltageLabel
vdrCreateVoltageLabel(d_cellviewID lt_datasetName t_lowVPurposeName t_highVPurposeName[f_labelHeight] [g_externalNets] [g_internalNets] [g_update] [g_generateLabels] [g_overrideMode] [x_hierStopLevel] [u_customFunc] [u_postLabelCreationCB] [t_voltageInfoFile] [t_layerPurposeFile] [g_verbose] [t_logFile] [g_propagateNetVoltages] [lt_sourceName] [g_schematicCSV] ) => t / nil
Description
Creates labels on the nets in a layout design reflecting the minimum and maximum voltages from simulation data or a specified list of sources. Labels can also be generated for nets on which no geometry exists if the vdrZeroShapeNets environment variable is set to t.
Arguments
|
Database ID of the layout cellview for which labels are to be created. |
|
|
One or more strings representing the names of the simulation datasets that contain the minimum and maximum voltage data for the nets in the specified design.
To specify a single dataset name, use this format:
To specify more than one dataset name, use this format: |
|
|
Name of the layer purpose on which to draw minimum voltage labels. This argument is mandatory; the function does not consider the setting of the |
|
|
Name of the layer purpose on which to draw maximum voltage labels. This argument is mandatory; the function does not consider the setting of the |
|
|
The default is 0.0 microns, which means that the label is automatically sized to match the height of the shape with which it is associated. |
|
|
Creates labels for external nets, that is, nets that are connected to the terminals of the cellview to which they belong.
The default is |
|
|
Creates labels for internal nets.
The default is |
|
|
Runs label creation in Update mode.
The default is |
|
|
Specifies whether labels are to be created on the canvas or not. Use in conjunction with the propagateNetVoltages option to control whether only net properties, only labels, both properties and labels, or neither properties nor labels are updated. |
|
|
Specifies that any manually entered voltage values on nets are to be overridden by the values from the simulation datasets.
The default is |
|
|
Number of hierarchy levels the software searches to find the nets on which to create labels. For example: |
|
|
User-defined SKILL procedure that can be called to create or instantiate objects other than regular text labels.
The default is |
|
|
User-defined SKILL procedure that can be used to perform any required post-processing tasks on the created labels.
The default is For more information, see Post-Processing Voltage Labels and Markers. |
|
|
Specifies the name of a comma-separated value (CSV) file containing voltage information, which can be used as an input for the VDR flow instead of a simulation dataset. The CSV file specifies net names and corresponding minimum and maximum voltage values. The asterisk (*) is supported as a wildcard character. The default is For more information, see Generating Voltage Labels from a Voltage Information File. |
|
|
Special layer purpose file that lets you override the default t_highVPurposeName and t_lowVPurposeName arguments when a process requires it. See Specifying Layers and Purposes for Generic Voltage Labels for more information. |
|
|
Enables verbose mode when generating labels based on a voltage information file. The software prints one message per entry in the file confirming the action taken for that entry.
The default is The creation of voltage labels in non-verbose mode is faster than that in verbose mode. |
|
|
Name of a log file in which messages are saved when generating labels from a voltage information file in verbose mode. |
|
|
Specifies whether the voltage values are to be updated for the specified nets in the database. The default is Use in conjunction with the generateLabel argument to control whether only properties, only labels, both properties and labels, or neither properties nor labels are updated. |
|
|
Specifies a list of alternative sources from which voltages values are read and the order in which they are considered. Along with view names, the list may also reference a voltage information file specified by the voltageInfoFile argument. For example:
The list of sources is considered only if you have not specified datasets as the source of voltage values. If no dataset, data file, or source list is specified, the voltages in the layout view are used to create labels. |
|
|
Specifies whether net names in the CSV file are assumed to be in the schematic or layout name space.
The default is |
|
Value Returned
Example
vdrCreateVoltageLabel(geGetEditCellView() "voltages_0" "drawing" "drawing" 0.0 t nil nil t nil 0 nil '_myPostVdrCB)
Runs label creation in Replace mode for only the top-level nets in the current cellview. Voltage values are taken from a dataset called voltages_0, and labels are drawn on layer purpose drawing. The code then automatically executes a user-defined callback named _myPostVdrCB to perform some post-processing tasks.
vdrCreateVoltageLabel(geGetEditCellView() nil "drawing" "drawing" 0.0 t nil nil t nil 0 nil '_myPostVdrCB "./voltages.csv")
Performs the same operation as above but uses the information in the file called voltages.csv instead of datasets as input.
vdrCreateVoltageLabel(geGetEditCellView() nil "drawing" "drawing" 0.0 t nil nil t nil 0 nil '_myPostVdrCB "./voltages.csv")
INFO (VDR-2001): VDR annotation deleted 12 voltage labels.
INFO (VDR-2004): VDR annotation created 12 voltage labels.
INFO (VDR-2005): VDR annotation updated 0 voltage labels.
Related Topics
Generating Voltage Labels from Simulation Data for All Nets
Generating Voltage Labels from a Voltage Information File
vdrCreateVoltageLabelEx
vdrCreateVoltageLabelEx(d_cellviewID lt_datasetName t_lowVPurposeName t_highVPurposeName[ ?labelHeightf_labelHeight] [ ?externalNet { t | nil } ] [ ?internalNet { t | nil } ] [ ?update { t | nil } ] [ ?generateLabel { t | nil } ] [ ?overrideMode { t | nil } ] [ ?hierStopLevelx_hierStopLevel] [ ?customFuncu_customFunc] [ ?postLabelCreationCBu_postLabelCreationCB] [ ?dataFilet_voltageInfoFile] [ ?lppFilet_layerPurposeFile] [ ?verbose { t | nil } ] [ ?logFilet_logFile] [ ?propagateNetVoltages { t | nil } ][ ?sourcelt_sourceName] [?schematicCSV{ t | nil } ] ) => t / nil
Description
Creates labels on the nets in a layout design reflecting the minimum and maximum voltages from simulation data or a specified list of sources. Labels can also be generated for nets on which no geometry exists if the vdrZeroShapeNets environment variable is set to t.
Arguments
|
Database ID of the layout cellview for which labels are to be created. |
|
|
One or more strings representing the names of the simulation datasets that contain the minimum and maximum voltage data for the nets in the specified design.
To specify a single dataset name, use this format:
To specify more than one dataset name, use this format: |
|
|
Name of the layer purpose on which to draw minimum voltage labels. This argument is mandatory; the function does not consider the setting of the |
|
|
Name of the layer purpose on which to draw maximum voltage labels. This argument is mandatory; the function does not consider the setting of the |
|
|
The default is 0.0 microns, which means that the label is automatically sized to match the height of the shape with which it is associated. |
|
|
Creates labels for external nets, that is, nets that are connected to the terminals of the cellview to which they belong.
The default is |
|
|
Creates labels for internal nets.
The default is |
|
|
Runs label creation in Update mode.
The default is |
|
|
Specifies whether labels are to be created on the canvas or not.
Use in conjunction with the |
|
|
Specifies that any manually entered voltage values on nets are to be overridden by the values from the simulation datasets.
The default is |
|
|
Number of hierarchy levels the software searches to find the nets on which to create labels. For example: |
|
|
User-defined SKILL procedure that can be called to create or instantiate objects other than regular text labels.
The default is |
|
|
User-defined SKILL procedure used to perform any required post-processing tasks on the created labels. The default is |
|
|
Specifies the name of a comma-separated value (CSV) file containing voltage information, which can be used as an input for the VDR flow instead of a simulation dataset. The CSV file specifies net names and corresponding minimum and maximum voltage values. The asterisk (*) is supported as a wildcard character. For more information, see Generating Voltage Labels from a Voltage Information File. |
|
|
Special layer purpose file that lets you override the default t_highVPurposeName and t_lowVPurposeName arguments when your process requires it. See Specifying Layers and Purposes for Generic Voltage Labels for more information. |
|
|
Enables verbose mode when generating labels based on a voltage information file. The software prints one message per entry in the file confirming the action taken for that entry.
The default is |
|
|
Name of a log file in which messages are saved when generating labels from a voltage information file in verbose mode. |
|
|
Specifies whether the voltage values are to be updated for the specified nets in the database. The default is
Use in conjunction with the |
|
|
Specifies a list of alternative sources from which voltages values are read and the order in which they are considered. Along with view names, the list may also reference a voltage information file specified by the
The list of sources is considered only if you have not specified datasets as the source of voltage values. If no dataset, data file, or source list is specified, the voltages in the layout view are used to create labels. |
|
|
Specifies whether net names in the CSV file are assumed to be in the schematic or layout name space.
The default is |
|
Value Returned
Examples
cv = geGetEditCellView()
=> db:0x2675871a
vdrCreateVoltageLabelEx(cv "voltages_0" "drawing" "drawing" ?internalNet nil ?hierStopLevel 0)
=> t
Creates labels from the voltage values from dataset voltages_0 for the top-level external nets in Replace mode.
Related Topics
Generating Voltage Labels from Simulation Data for All Nets
Generating Voltage Labels from a Voltage Information File
vdrCreateVoltageLabelOnNets
vdrCreateVoltageLabelOnNets(d_cellviewID ld_netIDs t_lowVPurposeName t_highVPurposeName[f_labelHeight] [u_customFunc] [lt_ignoreZeroVoltNets] [u_postLabelCreationCB] [t_layerPurposeFile] ) => t / nil
Description
Creates labels from the voltage values entered manually in the Property Editor assistant for the specified top-level nets in the given cellview. The labels are created on the geometry of the net in question. Where there is no geometry, the labels are created on all the Pcell and instance terminals connected to the net. The command works only in Layout XL and higher tiers.
Arguments
|
Database ID of the layout cellview containing the nets for which labels are to be created. |
|
|
List of database IDs identifying the nets for which labels are to be created. |
|
|
Name of the layer purpose on which to draw minimum voltage labels. This argument is mandatory; the function does not consider the setting of the |
|
|
Name of the layer purpose on which to draw maximum voltage labels. This argument is mandatory; the function does not consider the setting of the |
|
|
The default is 0.0 microns, which means that the label is automatically sized to match the height of the shape with which it is associated. |
|
|
User-defined SKILL procedure that can be called to create or instantiate objects other than regular text labels.
The default is |
|
|
List of nets that have voltage values of (0,0) but for which labels should be created anyway. Names must each be enclosed in double quotes and separated by a space. The asterisk (*) is supported as a wildcard character. |
|
|
Special layer purpose file that lets you override the default t_highVPurposeName and t_lowVPurposeName arguments when your process requires it. See Specifying Layers and Purposes for Generic Voltage Labels for more information. |
|
Value Returned
Example
vdrCreateVoltageLabelOnNets(geGetEditCellView() netIDs "vlo" "vhi" 0.2)
t
Creates labels for the list of netIDs in the currently edited cellview. The labels are 0.2 microns high with the minimum voltage label drawn on layer purpose vlo and the maximum voltage label on purpose vhi.
Related Topics
Generating Voltage Labels for Manually Entered Voltages
vdrCreateVoltageMarkers
vdrCreateVoltageMarkers(d_cellviewID t_voltagePurposeFile[ ?datasett_datasetName][ ?update { t | nil } ] [ ?override_mode { t | nil } ] [ ?sizef_markerHeight][ ?externalNet{ t | nil }] [ ?internalNet{ t | nil }] [ ?hierStopLevelx_hierStopLevel][ ?postMarkerCreationCBu_postMarkerCreationCB][ ?csvFilet_voltageInfoFile] [ ?voltageRounding { roundOff | floor | ceiling } ] [ ?mode { maxVoltage | minVoltage | bothVoltage } ] ) => t / nil
Description
Creates markers for minimum and/or maximum voltages on the nets in the specified design. Voltage information can be taken from simulation datasets, from user-defined voltages on nets, or from a voltage information file. The voltage purpose file specifies on which layer-purpose pair a marker is created depending on the voltage value in question.
Arguments
|
Database ID of the layout cellview containing the nets for which markers are to be created. |
|
|
Lists the layer-purpose pairs on which markers for different voltage values are to be created. |
|
|
One or more strings representing the names of the simulation datasets containing minimum and maximum voltage data for the nets in the specified design.
For example, to specify a single dataset name, use this format: |
|
|
Runs marker creation in Update mode, which means that values are based on the last voltages set on net; that is
The default is |
|
|
Specifies that any manually entered voltage values on nets are to be overridden by the values from the simulation datasets.
The default is |
|
|
Height of the markers created. The default is 0.0 microns, which means that no marker is created. |
|
|
Creates markers for external nets; that is, nets that are connected to the terminals of the cellview to which they belong. |
|
|
Specifies how many hierarchy levels the software searches to find the nets on which to create markers. For example, 0 means that markers are created for top-level nets only; 1 means top-level nets and nets located one level below in the hierarchy; 2 means top-level nets and nets located one and two levels below in the hierarchy; and so on. The default is 32. |
|
|
Specifies a user-defined SKILL procedure that can be used to perform any required post-processing tasks on the created labels. For more information, see Post-Processing Voltage Labels and Markers. |
|
|
Specifies the name of a comma-separated value (CSV) file containing voltage information, which can be used instead of a simulation dataset as an input for the VDR flow. The CSV file specifies net names and corresponding minimum and maximum voltage values. Wildcard (*) is supported. For more information, see Generating Voltage Labels from a Voltage Information File. |
|
|
Specifies whether markers are to be created for maximum, minimum, or all voltage values. |
|
Value Returned
Example
when(cellView = geGetEditCellView(window)
voltageLPPFile = "volt_LPP.map"
dataset = "VDR_dataset_0"
vdrCreateVoltageMarkers(cellview voltageLPPFile ?dataset dataset
?update nil ?override_mode nil ?size 0.01 ?externalNet t
?internalNet nil ?hierStopLevel 3 ?postMarkerCreationCB nil
?csvFile nil ?voltageRounding "floor" ?mode "bothVoltage")
)
Creates markers for the minimum and maximum voltages on external nets in the specified dataset down to hierarchy level 3 of the specified cellview. The markers are 0.01 high. Voltage values are rounded down to the nearest 0.01.
Related Topics
Generating Voltage Markers from Simulation Data for All Nets
Specifying Layers and Purposes for Voltage Markers
vdrCreateVoltageMarkersOnNets
vdrCreateVoltageMarkersOnNets(d_cellviewID ld_netIDs t_voltagePurposeFile[ ?sizef_markerHeight] [ ?postMarkerCreationCBt_postMarkerCreationCB][ ?voltageRounding { roundOff | floor | ceiling } ] [ ?voltageMode { maxVoltage | minVoltage | bothVoltage } ] [ ?ignoreZeroVoltNetslt_netNames] ) => t / nil
Description
Creates markers from the voltage values entered manually in the Property Editor assistant for the specified top-level nets in the given cellview.
Arguments
|
Database ID of the layout cellview containing the nets for which markers are to be created. |
|
|
List of database IDs identifying the nets for which markers are to be created. |
|
|
Lists the layer-purpose pairs on which markers for different voltage values are to be created. |
|
|
Height of the markers created. The default is 0.0 microns, which means that no marker is created. |
|
|
Specifies the name of a user-defined SKILL procedure that can be used to perform any required post-processing tasks on the generated markers. For more information, see Post-Processing Voltage Labels and Markers. |
|
|
Specifies whether markers are to be created for maximum, minimum, or all voltage values. |
|
|
Lists the names of nets which have voltage values of (0,0) but for which markers should be created anyway. Names must each be enclosed in double quotes and separated by a space. The asterisk (*) is supported as a wildcard character. |
|
Value Returned
Example
cv = geGetEditCellView()
netIds = cv~>nets
callback = stringToSymbol("vdrMarkerCB")
vdrCreateVoltageMarkersOnNets(cv netIds "voltagePurpose.map"
?size 0.01 ?voltageRounding "floor" ?voltageMode "bothVoltage"
?ignoreZeroVoltNets list("AVSS" "AVDD") ?postMarkerCreationCB callback)
Creates markers for minimum and maximum voltage values for the list of netIDs in the currently edited cellview. The markers are 0.01 high and are generated for nets AVSS and AVDD even if their values are 0. Voltage values are rounded down to the nearest 0.01. The code automatically executes a user-defined callback named vdrMarkerCB to perform some post-processing tasks.
Related Topics
Generating Voltage Markers for Manually Entered Voltages
vdrCreateVSyncConstraintsFromFile
vdrCreateVSyncConstraintsFromFile(
t_libName
t_cellName
t_viewName
t_fileName
)
=> nil
Description
(ICADVM20.1 Only) Creates Voltage Synced Net (vsync) constraints in the specified source schematic cellview based on information from the given CSV file. The schematic view is opened in read-only mode.
Arguments
Value Returned
Example
scv = dbOpenCellViewByType("lib1" "cell1" "schematic" "" "r")
srcCache = ciCacheGet(scv);gives constraint cache of cellview
listOfCons = nil
foreach(elm srcCache~>constraints
when(elm~>type == 'voltageSyncedNets listOfCons = cons(elm listOfCons)))
printf("LOG: Constraints in target layout: %L\n" listOfCons~>name)
output => LOG: Constraints in target layout: nil
vdrCreateVSyncConstraintsFromFile("lib1" "cell1" "schematic" "./Data.csv")
output =>
INFO (CMGR-5020): Created constraint of type 'voltageSyncedNets' in cache 'lib1 cell1 schematic' with name 'Constr_1'.
INFO (CMGR-5020): Created constraint of type 'voltageSyncedNets' in cache 'lib1 cell1 schematic' with name 'Constr_2'
srcCache = ciCacheGet(scv)
listOfCons = nil
foreach(elm srcCache~>constraints
when(elm~>type == 'voltageSyncedNets listOfCons = cons(elm listOfCons)))
printf("LOG: Constraints in target layout: %L\n" listOfCons~>name)
output=> LOG: Constraints in target layout: ("Constr_2" "Constr_1")
Creates the vsync constraint specified in file Data.csv in cellview lib1/cell1/schematic and writes appropriate messages to the log file.
Related Topics
Defining and Checking Voltage Synced Nets
vdrDebuggerGUI
vdrDebuggerGUI(
)
=> t / nil
Description
Arguments
Value Returned
|
Failed to open the VDR Debugger form because an error occurred. |
Example
vdrDebuggerGUI()
t
Displays the VDR Debugger form.
Related Topics
vdrDeleteGUI
vdrDeleteGUI( ) =>t/nil
Description
Opens the Delete VDR Objects form, where you can select Labels/Markers, VSync Shapes, and Userdv Shapes check boxes to delete voltage labels and markers, VSync shapes, and Userdv shapes, respectively.
Arguments
Value Returned
|
Failed to open the Delete VDR Objects form because an error occurred. |
Example
vdrDeleteGUI()
=> t
Opens the Delete VDR Objects form.
Related Topics
vdrDeleteLabels
vdrDeleteLabels(
d_cellviewID
)
=> nil
Description
Deletes from the specified cellview all the labels and markers created using the VDR flows.
Arguments
|
Database ID of the top layout cellview from which labels and markers are to be deleted. |
Value Returned
|
All the VDR labels and markers in the cellview were deleted. |
Example
vdrDeleteLabels(topCvId)
Deletes all the VDR labels and markers in the cellview with the given database ID.
Related Topics
Deleting Voltage Labels and Markers
vdrDisplaySchematicGUI
vdrDisplaySchematicGUI( ) => t / nil
Description
Opens the Voltage Dependent Rules form, which you can use to transfer voltage data on schematic nets from the specified simulation voltage datasets. This function works only in Layout XL and higher tiers.
Arguments
Value Returned
|
The form cannot be opened, possibly because you are not suing Layout XL. |
Examples
The following example opens the Voltage Dependent Rules form.
vdrDisplaySchematicGUI()
=> t
Related Topics
Generating Voltage Labels from Simulation Data for All Nets
vdrGenerateLabelsGUI
vdrGenerateLabelsGUI( ) => t / nil
Description
Opens the Voltage Dependent Rules form, which you can use to create voltage labels or markers on nets. The command works only in Layout XL and higher tiers.
Arguments
Value Returned
|
The form could not be opened, possibly because you are not using Layout XL. |
Example
vdrGenerateLabelsGUI()
=> t
Opens the Voltage Dependent Rules form.
Related Topics
Generating Voltage Labels from Simulation Data for All Nets
Generating Voltage Markers from Simulation Data for All Nets
vdrGenerateUserdvShapes
vdrGenerateUserdvShapes(d_cellviewID[ ?verbose { t | nil } ] [ ?logFilet_logFile]) => t / nil
Description
(ICADVM20.1 EXL Only) Creates User Delta Voltage (Userdv) shapes between nets that are constrained by a User Delta Voltage constraint. The Userdv marker shape and associated text label that are created correspond to each User Delta Voltage constraint. You can optionally print messages relating to problems encountered during Userdv shape creation and save these messages to a specified log file if required.
Arguments
Value Returned
Examples
vdrGenerateUserdvShapes(cv)
Generates a Userdv marker shape and associated text label corresponding to each User Delta Voltage constraint in the given cellview.
vdrGenerateUserdvShapes(cv ?verbose t ?logFile "userdv.log")
Generates Userdv marker shapes and prints messages relating to problems encountered during the creation. Those messages are saved in a file called "userdv.log".
Related Topics
vdrGenerateVSyncShapes
vdrGenerateVSyncShapes(d_cellviewID[ ?verbose { t | nil } ] [ ?logFilet_logFile]) => t / nil
Description
(ICADVM20.1 EXL Only) Creates voltage sync (vsync) shapes between nets that are constrained by a common voltage sync constraint. You can optionally print messages relating to problems encountered during vsync shape creation and save these messages to a specified log file if required.
Arguments
Value Returned
Example
when(window = hiGetCurrentWindow()
when(cellview = geGetEditCellView(window)
vdrGenerateVSyncShapes(cellview ?verbose ?logFile "vsyncLog.txt")
)
)
Generates vsync shapes for the cellview being edited in the current session and creates a verbose report with name vsyncLog.txt.
Related Topics
Defining and Checking Voltage Synced Nets
vdrGetValidLayers
vdrGetValidLayers(
)
=> l_layers / nil
Description
Returns the list of valid layers on which labels or markers can be generated. The list was specified previously using the vdrSetValidLayers function.
Arguments
Value Returned
Example
cv = geGetEditCellView()
if(cv then
layers = list("Metal1" "Metal2" "Poly")
vdrSetValidLayers(cv layers)
)
vdrGetValidLayers() >("Metal1" "Metal2" "Poly")
Returns the list of layer names registered using the vdrSetValidLayers command.
Related Topics
Specifying Layers and Purposes for Generic Voltage Labels
vdrResetNetVoltages
vdrResetNetVoltages(d_cellviewID[ ?hierDepthx_hierDepth] ) => t / nil
Description
Resets the minimum and maximum voltage values and voltage range source for all nets to zero in the specified layout or schematic view.
Arguments
|
Specifies the hierarchy levels.
Default value is |
|
Value Returned
Examples
The following example resets the top-level net voltages in the specified layout cellview.
cvID=dbOpenCellViewByType("vdr_demo" "inverter_chain" "layout")
;Opens the specified layout cellview.
vdrResetNetVoltages(cvID)
;Resets the top-level net voltages in the currently open layout cellview.
=> db:0x2bb8e89a
=> t
The following example resets voltage values for the nets up to two levels down from the top level.
cvID=dbOpenCellViewByType("vdr_demo" "inverter_chain" "layout")
;Opens the specified layout cellview.
vdrResetNetVoltages(cvID ?hierDepth 2)
;Resets the voltage values for the top-level nets and nets located one and two levels below the hierarchy.
=> db:0x2bb8e89a
=> t
vdrRunSanityChecker
vdrRunSanityChecker(d_cellviewID[g_checkMarkers] [g_checkAgainstLayout] [f_tolerance] [g_isToleranceAbsolute] [t_logFile] [t_csvName] [l_datasets] [t_checkAgainstSource] [g_completeHierarchy] ) =>t/nil
Description
Checks constrained voltage labels in the layout against the voltage values stored in the schematic or layout net properties and reports any discrepancies between the values. You can optionally apply a threshold up to which mismatches are tolerated and not reported. You can also specify the location and name of a log file in which the report is captured.
Arguments
|
Database ID of the layout cellview in which labels and markers are to be checked. |
|
|
Specifies whether to check markers ( Environment variable: vdrSanityCheckerObjectType |
|
|
Specifies whether to check the voltage values in labels or markers against layout net properties ( Environment variable: vdrSanityCheckerCheckAgainst |
|
|
Threshold beyond which mismatches are to be reported. Environment variable: vdrSanityCheckerTolerance |
|
|
Specifies whether the tolerance value is considered an absolute value ( Environment variable: vdrSanityCheckerToleranceType |
|
|
Path and name of a log file in which the discrepancy report is to be captured. When you specify a log filename, only a summary message is printed in the CIW. If you do not specify a log filename, discrepancies are reported in a table printed in the CIW. Environment variable: vdrSanityCheckerLogFile |
|
|
Specifies the path and name of the CSV file containing voltage values against which labels are checked.
This argument is considered only when the argument t_checkAgainstSource is set to Environment Variable: vdrSanityCheckerCsvFileName |
|
|
Specifies a list of space-separated datasets against which labels are checked.
This argument is considered only when the argument t_checkAgainstSource is set to Environment Variable: vdrSanityCheckerDatasets |
|
|
Specifies whether voltage values in labels are checked against schematic net properties, layout net properties, a CSV file, or specified datasets.
Valid values are:
The default value is Environment Variable: vdrSanityCheckerCheckAgainst |
|
|
Specifies whether to perform sanity checks on the complete hierarchy. Environment Variable: vdrSanityCheckerCompleteHierarchy |
|
Value Returned
Example
The following example checks the voltage labels in the currently edited layout cellview against the values stored in the layout net properties and captures the report in a file called vdrReport.log. Only discrepancies of more than 0.04V are reported.
checkMarkers = nil
checkAgainstLayout = t
tolerance = 0.04
isToleranceAbsolute = t
logFile = "vdrReport.log"
csvName = nil
datasets = "VDR_dataset_0 VDR_dataset_1"
checkAgainstSource = "Datasets"
completeHierarchy = t
when(window = hiGetCurrentWindow()
when(cellView = geGetEditCellView(window)
vdrRunSanityChecker(cellView checkMarkers checkAgainstLayout tolerance
isToleranceAbsolute logFile csvName datasets checkAgainstSource completeHierarchy)
)
)
=> t
The following example checks the voltage labels in the currently edited layout cellview against the values stored in the myCSV.csv file and captures the report in a file vdrReportCSV.log. Only discrepancies of more than 0.3V are reported.
checkMarkers = nil
checkAgainstLayout = nil
tolerance = 0.3
isToleranceAbsolute = t
logFile = "vdrReportCSV.log"
csvName = "home/user/myCSV.csv"
datasets = ""
checkAgainstSource = "CSV"
completeHierarchy = nil
when(window = hiGetCurrentWindow()
when(cellView = geGetEditCellView(window)
vdrRunSanityChecker(cellView checkMarkers checkAgainstLayout tolerance
isToleranceAbsolute logFile csvName datasets checkAgainstSource completeHierarchy)
)
)
=> t
Related Topics
Sanity Checking Voltage Values in Constrained Labels
vdrRunUserdvSanityChecker
vdrRunUserdvSanityChecker(d_cellviewID[t_logFile] ) => t / nil
Description
(ICADVM20.1 EXL Only) Checks whether there are valid User Delta Voltage (Userdv) shapes on nets that are constrained by a common Userdv constraint. The checker reports any Userdv shapes that are wrongly created and any nets that have a Userdv constraint defined but no Userdv shape between them.
Arguments
|
Path and name of a log file in which the report is to be captured. When you specify a log filename, only a summary message is printed in the CIW. If you do not specify a log filename, discrepancies are reported in a table printed in the CIW. Environment variable: vdrSanityCheckerLogFile |
Value Returned
|
The sanity checks on the userdv shapes are run successfully. |
|
|
The sanity checks on the userdv shapes cannot be run because of an error. |
Examples
The following example runs Sanity Checker on the Userdv shapes in the currently edited layout cellview and saves the report in the log file userdvCoherenceReport.log.
window=hiGetCurrentWindow()
;Return the ID of the current window.
cellView=geGetWindowCellView(window)
;Returns the database ID of the cellview displayed in the current window.
scv = dbOpenCellViewByType("vdr_demo" "inverter_chain" "layout" "" "r")
;Opens the specified library cellview in read-only mode
srcCache = ciCacheGet(scv) ;Gives constraint cache of cellview
listOfCons = nil
foreach(elm srcCache~>constraints
when(elm~>type == 'deltaVoltage listOfCons = cons(elm listOfCons)))
printf("LOG: Constraints in target layout: %L\n" listOfCons~>name)
output => LOG: Constraints in target layout: nil
vdrCreateUserdvConstraintsFromFile("vdr_demo" "inverter_chain" "layout" "./myuserdvData.csv")
vdrGenerateUserdvShapes(
scv
?verbose t
?logFile "./userdvLogFile"
)
;Creates userdv shapes between nets constrainted by userdv constraints
vdrRunUserdvSanityChecker(
cellView
"./userdvCoherenceReport.log"
)
; Runs Sanity Checker on the userdv shapes created in the specified cellview.
=> window:2
=> db:0x2c3deb1a
=> db:0x2c3deb1a
=> ci:0x3b00a3f0
=> nil
=> nil
=>
LOG: Constraints in target layout: nil
=> t
=>
INFO (CMGR-5020): Created constraint of type 'deltaVoltage' in cache 'vdr_demo inverter_chain layout' with name 'Constr_0'.
INFO (CMGR-5020): Created constraint of type 'deltaVoltage' in cache 'vdr_demo inverter_chain layout' with name 'Constr_3'.
=> t
=>
INFO (VDR-2011): VDR annotation deleted 0 Userdv Shapes.
INFO (VDR-2000): Successfully created Userdv Shape between 'E' and 'F' on ('Metal1' 'vsync') for voltage 0.4 and bBox ((1.164 0.0415) (1.244 0.4845)).
INFO (VDR-2000): Successfully created Userdv Shape between 'A' and 'B' on ('Metal1' 'vsync') for voltage 0.4 and bBox ((1.734 0.0415) (1.814 0.4845)).
INFO (VDR-2012): VDR annotation created 2 Userdv Shapes.
=> t
=>
INFO (VDR-2010): All the Userdv nets in the cellview 'vdr_demo/inverter_chain/layout' are correctly marked with the Userdv shapes.
=> t
Related Topics
Sanity Checking Voltage Values in Constrained Labels
vdrRunVoltageConflictChecker
vdrRunVoltageConflictChecker(d_cellviewID[ ?hierDepthx_hierDepth] [ ?precisionx_precision] [ ?tolerancen_tolerance] [ ?toleranceTypet_toleranceType] [ ?reportFilet_reportFile] [ ?skipZeroVoltageNetsg_skipZeroVoltageNets] [ ?fixConflictg_fixConflict] ) => t / nil
Description
Checks voltage conflicts between top-level and hierarchical nets on the specified layout or schematic cellview. Conflict report is printed in the CIW and also saved in the file conflict.rpt by default.
Arguments
Value Returned
|
Voltage conflicts between top-level and hierarchical nets are successfully reported. |
|
Examples
Opens the specified layout cellview.
cvID=dbOpenCellViewByType("vdr_demo" "inverter_chain" "layout")
Runs conflict checker for hierarchical nets upto level 32.
vdrRunVoltageConflictChecker(cvID ?hierDepth 32)
=> t
Runs conflict checker for hierarchical nets upto level 32 and logs the report in the file myreport.rpt.
vdrRunVoltageConflictChecker(cvID ?hierDepth 32 ?reportFile "myreport.rpt")
=> t
Runs conflict checker for hierarchical nets upto level 32 and fixes those conflicts. (Resets hierarchical nets voltages to zero.)
vdrRunVoltageConflictChecker(cvID ?hierDepth 32 ?fixConflict t)
=> t
Reports conflicts for zero-voltage hierarchical nets.
vdrRunVoltageConflictChecker(cvID ?hierDepth 32 ?skipZeroVoltageNets nil)
=> t
vdrRunVSyncSanityChecker
vdrRunVSyncSanityChecker(d_cellviewID[t_logFile] ) => t / nil
Description
(ICADVM20.1 EXL Only) Checks whether there are valid voltage sync (vsync) shapes on nets that are constrained by a common vsync constraint. The checker reports any vsync shapes that are wrongly created and any nets that have a vsync constraint defined but no vsync shape between them.
Arguments
|
Path and name of a log file in which the report is to be captured. When you specify a log filename, only a summary message is printed in the CIW. If you do not specify a log filename, discrepancies are reported in a table printed in the CIW. Environment variable: vdrSanityCheckerLogFile |
Value Returned
Example
when(window = hiGetCurrentWindow()
when(cellView = geGetEditCellView(window)
logFile = "report.log"
vdrRunVSyncSanityChecker(cellView logFile)
)
)
Checks vsync shapes in the currently edited layout cellview and saves the report in a file called report.log.
Related Topics
Sanity Checking Voltage Values in Constrained Labels
Defining and Checking Voltage Synced Nets
vdrSanityCheckerGUI
vdrSanityCheckerGUI(
d_windowID)
=> t / nil
Description
Opens the VDR Sanity Checker form, which you can use to check constrained VDR voltage labels in the layout view and report any labels that are missing or which have values different from the values specified for the net in the schematic or layout design.
Arguments
|
ID of the layout window for which you want to open the VDR Sanity Checker form. |
Value Returned
|
The VDR Sanity Checker form cannot be displayed because of an error. |
Examples
The following example opens the VDR Sanity Checker form for the specified layout window.
window=hiGetCurrentWindow()
;Returns the ID of the current window.
vdrSanityCheckerGUI(window)
;Opens the VDR Sanity Checker form for the specified layout window.
=> window:4
=> t
Related Topics
Sanity Checking Voltage Values in Constrained Labels
Defining and Checking Voltage Synced Nets
vdrSetNetVoltageRange
vdrSetNetVoltageRange(t_libName t_cellName l_viewList[ ?netVoltagesl_netVoltages] [ ?voltageDataFilet_voltageInfoFile] [ ?verbose { t | nil } ] [ ?logFilet_logFile] ) => t / nil
Description
(ICADVM20.1 Only) Sets net voltages in the specified list of cellviews. The voltages can be either specified directly as a list when the command is called or read from voltage information file.
Arguments
Value Returned
Examples
vdrSetNetVoltageRange(cv~>libName cv~>cellName list(list("layout" "r") list("layout_org" "r") ) ?netVoltages list("net*" 0.11 1.09))
Sets the specified minimum and maximum voltages on all the nets in the layout and layout_org views in the specified cell in read mode.
vdrSetNetVoltageRange(cv~>libName cv~>cellName list(list("layout" "r") list("layout_org" "r") ) ?netVoltages list("net15" 0.11 9.09))
Sets the specified minimum and maximum voltages on net15 in the layout and layout_org views in the specified cell in read mode.
The following example sets the minimum and maximum voltage values for the nets whose names start with VDD to 0.8 and 2.8, respectively.
cv=dbOpenCellViewByType(
"vdr_demo"
"inverter_chain"
"layout"
""
"r"
)
;Opens the specified layout cellview in read-only mode.
cv~>nets~>name
;Prints names of nets available in the specified cellview.
vdd1=dbFindNetByName(
cv
"VDD1"
)
;Retrieves the database ID of the net VDD1.
vdd2=dbFindNetByName(
cv
"VDD2"
)
;Retrieves the database ID of the net VDD2.
vdd3=dbFindNetByName(
cv
"VDD3"
)
;Retrieves the database ID of the net VDD3.
=> db:0x2c4ee21a
=>
=> ("VSS" "VDD1" "net15" "IN" "VDD2"
"net14" "VDD3" "OUT"
)
=> db:0x2c4e9a1b
=>db:0x2c4e9a1e
=> db:0x2c4e9a20
printf("The minimum and maximum voltage values for the net VDD1 is %L \n"
dbGetNetVoltageRange(
vdd1
)
)
;Prints the minimum and maximum voltage values currently set for the net VDD1.
=> The minimum and maximum voltage values for the net VDD1 is (1.5 1.5)
=> t
printf("The minimum and maximum voltage values for the net VDD2 is %L \n"
dbGetNetVoltageRange(
vdd2
)
)
;Prints the minimum and maximum voltage values currently set for the net VDD2.
=> The minimum and maximum voltage values for the net VDD2 is (2.5 2.5)
=> t
printf("The minimum and maximum voltage values for the net VDD3 is %L \n"
dbGetNetVoltageRange(
vdd3
)
)
;Prints the minimum and maximum voltage values currently set for the net VDD3.
=> The minimum and maximum voltage values for the net VDD3 is (3.5 3.5)
=> t
vdrSetNetVoltageRange(
cv~>libName
cv~>cellName
list("layout" "r")
?netVoltages list("VDD*" 0.8 2.8)
)
;Sets the minimum and maximum voltage values for all nets whose names start with VDD to 0.8 and 2.8, respectively.
=> t
To verify whether the minimum and maximum voltage values for the nets, VDD1, VDD2, and VDD3 have been set to 0.8 and 2.8, respectively, run the function dbGetNetVoltageRange again.
printf("The minimum and maximum voltage values for the net VDD1 is %L \n"
dbGetNetVoltageRange(
vdd1
)
)
=> The minimum and maximum voltage values for the net VDD1 is (0.8 2.8)
=> t
>
printf("The minimum and maximum voltage values for the net VDD2 is %L \n"
dbGetNetVoltageRange(
vdd2
)
)
=> The minimum and maximum voltage values for the net VDD2 is (0.8 2.8)
=> t
printf("The minimum and maximum voltage values for the net VDD3 is %L \n"
dbGetNetVoltageRange(
vdd3
)
)
=> The minimum and maximum voltage values for the net VDD2 is (0.8 2.8)
=> t
Consider that you have a CSV file netVoltages.csv ,which contains information about nets and their minimum and maximum voltages. Contents of the CSV file are as follows:
#Net minV maxV
#All comments start with '#'
#Top-level Nets
net13,1,1.1
net17,1.2,1.3
IN,1.4,1.5
OUT,1.6,1.7
VSS,1.8,1.9
VDD1,2.0,2.1
VDD2,2.2,2.3
net14,2.4,2.5
net15,2.6,2.7
VDD3,2.8,2.9
The following example sets the minimum and maximum voltage values for the nets according to the information contained in the netVoltages.csv file.
vdrSetNetVoltageRange(
cv~>libName
cv~>cellName
list("layout" "r")
?voltageDataFile "./netVoltages.csv"
?verbose t
)
; Sets the minimum and maximum voltage values of the nets according to the values specified in the file netVoltages.csv. The netVoltages.csv file contains information about net names and their minimum and maximum voltages.
=>
INFO (VDR-2000): ./netVoltages.csv:5: Min/Max voltage values have been read for net 'net13'.
INFO (VDR-2000): ./netVoltages.csv:6: Min/Max voltage values have been read for net 'net17'.
INFO (VDR-2000): ./netVoltages.csv:7: Min/Max voltage values have been read for net 'IN'.
INFO (VDR-2000): ./netVoltages.csv:8: Min/Max voltage values have been read for net 'OUT'.
INFO (VDR-2000): ./netVoltages.csv:9: Min/Max voltage values have been read for net 'VSS'.
INFO (VDR-2000): ./netVoltages.csv:10: Min/Max voltage values have been read for net 'VDD1'.
INFO (VDR-2000): ./netVoltages.csv:11: Min/Max voltage values have been read for net 'VDD2'.
INFO (VDR-2000): ./netVoltages.csv:12: Min/Max voltage values have been read for net 'net14'.
INFO (VDR-2000): ./netVoltages.csv:13: Min/Max voltage values have been read for net 'net15'.
INFO (VDR-2000): ./netVoltages.csv:14: Min/Max voltage values have been read for net 'VDD3'.
=> t
To verify whether the minimum and maximum voltage values for the nets have been set according to the voltage information contained in the specified CSV file netVoltages.csv, run the function dbGetNetVoltageRange again.
printf("The minimum and maximum voltage values for the net VDD1 is %L \n"
dbGetNetVoltageRange(
vdd1
)
)
=> The minimum and maximum voltage values for the net VDD1 is (2.0 2.1)
=> t
printf("The minimum and maximum voltage values for the net VDD2 is %L \n"
dbGetNetVoltageRange(
vdd2
)
)
=> The minimum and maximum voltage values for the net VDD2 is (2.2 2.3)
=> t
printf("The minimum and maximum voltage values for the net VDD3 is %L \n"
dbGetNetVoltageRange(
vdd3
)
)
=> The minimum and maximum voltage values for the net VDD3 is (2.8 2.9)
=> t
Related Topics
Generating Voltage Labels from a Voltage Information File
vdrSetValidLayers
vdrSetValidLayers(d_cellviewID{l_layers| nil } ) => t / nil
Description
Specifies a list of valid layers on which labels or markers can be generated. The software creates labels or markers only for nets on one of the listed layers. Each subsequent call to the function overrides all the previously set layers.
Arguments
|
Database ID of the cellview for which the valid layers are to be set. |
|
|
List of valid layer names, each enclosed in double quotes and separated by a space. |
Value Returned
|
The specified list of layers has been successfully registered (or unset if you specified |
|
Example
cv = geGetEditCellView()
rValue = nil
if(cv then
layers = list("Metal1" "Metal2" "Metal3" "Poly")
rValue = vdrSetValidLayers(cv layers)
)
Registers Metal1, Metal2, Metal3, and Poly as valid layers for use in the voltage dependent rules flow. Labels or markers are created only for nets on those layers.
cv = geGetEditCellView()
rValue = nil
if(cv then
layers = nil
rValue = vdrSetValidLayers(cv layers)
)
Removes the valid layers specification for the current cellview.
Related Topics
Specifying Layers and Purposes for Generic Voltage Labels
vdrTransferVSyncConstraints
vdrTransferVSyncConstraints(l_srcCellview[l_tgtCellviews] ) =>
Description
Transfers Voltage Synced Net (vsync) constraints from a specified source cellview to the specified target cellviews without opening any of the cellviews involved. If there is no target cellview specified, then the constraints are transferred to all open cellviews.
Arguments
Value Returned
Example
fromInfo =list("lib1" "cell1" "schematic")
toInfo = list(list("lib1" "cell1" "layout") list("lib2" "cell2" "layout_cv"))
tcv = dbOpenCellViewByType("lib1" "cell1" "layout" "" "r") tgtCache = ciCacheGet(tcv);gives constraint cache of cellview listOfCons = nil foreach(elm tgtCache~>constraints when(elm~>type == 'voltageSyncedNets listOfCons = cons(elm listOfCons)))
printf("LOG: Constraints in target layout: %L\n" listOfCons~>name)
output => LOG: Constraints in target layout: nil
vdrTransferVSyncConstraints(fromInfo toInfo) output => INFO (LX-1107): Started Layout XL for cellview 'lib1/cell1/layout'. INFO (CMGR-6068): Updated 2 of 2 constraints Successfully transferred Voltage Synced Nets Constraints to '2' target cellviews. tgtCache = ciCacheGet(tcv);gives constraint cache of cell view listOfCons = nil foreach(elm tgtCache~>constraints when(elm~>type == 'voltageSyncedNets listOfCons = cons(elm listOfCons)))
printf("LOG: Constraints in target layout: %L\n" listOfCons~>name)
output => LOG: Constraints in target layout: ("Constr_2" "Constr_1")
Transfers voltage synced net constraints from source cellview lib1/cell1/schematic to target cellviews lib1/cell1/layout and lib2/cell2/layout_cv.
Related Topics
Defining and Checking Voltage Synced Nets
vdrVsyncVisualizerGUI
vdrVsyncVisualizerGUI( ) => t / nil
Description
(ICADVM20.1 EXL Only) Opens the VDR Constraints Visualizer form, which you can use to create Voltage Synced Net (vsync) constraints from the contents of a CSV file, list the vsync constraints currently present in the layout view, and delete those that are no longer required.
Arguments
Value Returned
Example
vdrVsyncVisualizerGUI()
t
Opens the VDR Constraints Visualizer form.
Related Topics
Defining and Checking Voltage Synced Nets
Return to top