Product Documentation
Virtuoso Layout Suite SKILL Reference
Product Version IC23.1, November 2023

cleRegUserTriggers

cleRegUserTriggers (
[ ?cvInitProc t_cvInitProc ]
[ ?postInstallProc t_postInstallProc ]
[ ?postImportProc t_postImportProc ]
[ ?postOpenProc t_postOpenProc ]
[ ?postSipProc t_postSipProc ]
[ ?checkCvUpdateProc t_checkCvUpdateProc ]
[ ?hierEditSetupProc t_hierEditSetupProc ]
[ ?defLayerProc t_defLayerProc ]
[ ?postClearAllProc t_postClearAllProc ]
[ ?rmbMenuProc t_rmbMenuProc ]
[ ?postCreateProc t_postCreateProc ]
[ ?postSubmitProc t_postSubmitProc ]
[ ?postRejectProc t_postRejectProc ]
[ ?postCommitProc t_postCommitProc ]
[ ?preOpenScratchProc t_preOpenScratchProc ]
)
=> t / nil

Description

Registers user-defined callbacks to customize the cellview for specific Concurrent Layout commands.

Arguments

?cvInitProc t_cvInitProc

The user callback to postprocess the cellview after it has been initialized for concurrent layout.

cvInitProc(
r_cxtObj
)
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout.

You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode

where the valid value for cxtObj~>mode is cle_manager.

For example,

procedure( myTestCvInitProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
)
cleRegUserTriggers(?cvInitProc "myTestCvInitProc")

?postInstallProc t_postInstallProc

The user callback to postprocess the concurrent layout cellview after an application is installed using layout editor.

postInstallProc(r_cxtObj) 
=> t / nil

where

r_cxtObj retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode

where the cxtObj~>mode is cle_manager or cle_designer

For example,

procedure( myTestInstallProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
)
cleRegUserTriggers(?postInstallProc "myTestInstallProc")

?postImportProc t_postImportProc

The user callback to postprocess the concurrent layout cellview after importing a concurrent layout design partition.

postImportProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>figs
cxtObj~>errCxt

where

  • cxtObj~>mode is cle_manager, or cle_designer
  • cxtObj~>figs is a list of all modified figures and including new objects from peer design partitions.
  • cxtObj~>errCxt is context object that contains different objects with edit conflicts.

For example,

procedure( myTestImportProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
info("figs = %L\n" argCxt~>figs
info("errCxt = %L\n" argCxt~>errCxt~>??)
)
cleRegUserTriggers(?postImportProc "myTestImportProc")

?postOpenProc t_postOpenProc

The user callback to postprocess the concurrent layout cellview after opening the concurrent layout design.

postOpenProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode

where the cxtObj~>mode is cle_manager or cle_designer

For example,

procedure( myTestOpenProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
)
cleRegUserTriggers(?postOpenProc "myTestOpenProc")

?postSipProc t_postSipProc

The user callback to postprocess the concurrent layout cellview after the Select in Partition option is enabled.

postSipProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>sipMode

where

  • cxtObj~>mode is cle_manager or cle_designer.
  • cxtObj~>sipMode are disable, select, or enforce.

For example,

procedure( myTestSipProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
info("sipMode = %L\n" argCxt~>sipMode)
)
cleRegUserTriggers(?postSipProc "myTestSipProc")

?checkCvUpdateProc t_checkCvUpdateProc

The user callback to postprocess the concurrent layout cellview after opening or refreshing the cellview.

checkCvUpdateProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>mode
cxtObj~>cellViewOnDisk

where

  • cxtObj~>mode is cle_manager or cle_designer
  • cxtObj~>cellViewsOnDisk is a list of libName, cellName, and viewName opened or refreshed from the disk.

For example,

procedure( myTestCheckCvUpdateProc(argCxt)
info("mode = %L\n" argCxt~>mode)
info("cellViewOnDisk = %L\n" argCxt~>cellViewOnDisk)
)
cleRegUserTriggers(?checkCvUpdateProc "myTestCheckCvUpdateProc")

?hierEditSetupProc t_hierEditSetupProc

The user callback to preprocess the concurrent layout cellview before you Edit In Place in a concurrent layout design. Return value t indicates that Edit In Place is done in Incremental mode. When the return value is nil, Edit In Place is done in regular mode.

hierEditSetupProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>eipInst
cxtObj~>eipTopCellView

where

  • cxtObj~>mode is cle_designer.
  • cxtObj~>eipInst is the instance name.
  • cxtObj~>eipTopCellView is the cellview in which you Edit In Place.

For example,

procedure( myTestHierEditSetupProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
info("eipInst = %L\n" argCxt~>eipInst)
info("eipTopCellView = %L\n" argCxt~>eipTopCellView)
)
cleRegUserTriggers(?hierEditSetupProc "myTestHierEditSetupProc")

?defLayerProc t_defLayerProc

The user callback to preprocess the concurrent layout cellview before applying the layers during Defining Design Partitions.

defLayerProc(r_cxtObj) 
=> l_layerName / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>partition
cxtObj~>layerList 

where

  • cxtObj~>mode is cle_manager.
  • cxtObj~>partition is the design partition name.
  • cxtObj~>layerList is the list of layer names applied to the design partition.

For example,

The myTestDefLayerProc function only accepts metal layers before applying layers in the design partition.

procedure( myTestDefLayerProc(argCxt)
  let((cv layerList filterLayers)
    info("window   = %L\n" argCxt->window)
    info("cellView = %L\n" argCxt->cellView)
    info("mode     = %L\n" argCxt->mode)
    info("partn    = %L\n" argCxt->partition)
    info("layer    = %L\n" argCxt->layerList)
    cv = argCxt->cellView
    foreach(ly argCxt->layerList
      when(techGetLayerFunction(techGetTechFile(cv) ly) == "metal"
        filterLayers = cons(ly filterLayers)
      )
    )
    reverse(filterLayers)
  )
)
cleRegUserTriggers(?defLayerProc "myTestDefLayerProc")

?postClearAllProc t_postClearAllProc

The user callback to postprocess the concurrent layout cellview after the Clear All Design Partitions command is applied.

postClearAllProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>cellViewsToRetain
cxtObj~>cellViewsToCleanUp
cxtObj~>eventType

where

  • cxtObj~>mode is cle_manager.
  • cxtObj~>cellViewsToRetain is the list of libName, cellName, and viewName to be retained after the Clear All Design Partitions command is used.
  • cxtObj~>cellViewsToCleanUp is the list of libName, cellName, and viewName to be removed or reset after the Clear All Design Partition command is used.
  • cxtObj~>eventType is postClearAll if the callback is triggered after clearing all design partitions.

For example,

procedure( myTestClearAllProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
info("cellViewsToRetain = %L\n" argCxt~>cellViewsToRetain)
info("cellViewsToCleanUp = %L\n" argCxt~>cellViewsToCleanUp)
info("eventType = %L\n" argCxt~>eventType)
)
cleRegUserTriggers(?postClearAllProc "myTestClearAllProc")

?rmbMenuProc t_rmbMenuProc

The user callback to display the action when you right-click the design partitions in the Concurrent Layout assistant.

rmbMenuProc(w_windowId) 
=> t / nil

where

w_windowId is the current main canvas area of a session window.

For example,

procedure( myUserActions(win)
list((list("myAction" "Action1CB" t) list("myAction2" "Action2CB" nil))
)
cleRegUserTriggers(?rmbMenuProc "myUserActions")

The example adds myAction and myAction2 commands in the context menu.

?postCreateProc t_postCreateProc

The user callback to postprocess the concurrent layout cellview after creating the design partition views.

postCreateProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>cellViewsOnDisk
cxtObj~>eventType

where

  • cxtObj~>mode is cle_manager.
  • cxtObj~>cellViewsOnDisk is the list of libName, cellName, and viewName created on the disk.
  • cxtObj~>eventType is postCreate if the callback is triggered after creating the design partition views.

For example,

procedure( myTestCreateProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
info("cellViewsOnDisk = %L\n" argCxt~>cellViewsOnDisk)
info("eventType = %L\n" argCxt~>eventType)
)
cleRegUserTriggers(?postCreateProc "myTestCreateProc")

?postSubmitProc t_postSubmitProc

The user callback to postprocess the concurrent layout cellview after submitting the design partitions.

postSubmitProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>cellViewsOnDisk
cxtObj~>eventType

where

  • cxtObj~>mode is cle_designer.
  • cxtObj~>cellViewsOnDisk is the list of libName, cellName, and viewName submitted on the disk.
  • cxtObj~>eventType value is postSubmit if the callback is triggered after submitting a design partition.

For example,

procedure( myTestSubmitProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
info("cellViewsOnDisk = %L\n" argCxt~>cellViewsOnDisk)
info("eventType = %L\n" argCxt~>eventType)
)
cleRegUserTriggers(?postSubmitProc "myTestSubmitProc")

?postRejectProc t_postRejectProc

The user callback to postprocess the concurrent layout cellview after rejecting a design partition.

postRejectProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>cellViewsOnDisk
cxtObj~>eventType
cxtObj~>comment

where,

  • cxtObj~>mode is cle_manager.
  • cxtObj~>cellViewsOnDisk will be the list of libName, cellName, and viewName rejected on disk.
  • cxtObj~>evenType is postReject if the callback is triggered after rejecting the design partitions.
  • cxtObj~>comment is the reason user specifies when rejecting a design partition.

For example,

procedure( myTestRejectProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
info("cellViewsOnDisk = %L\n" argCxt~>cellViewsOnDisk)
info("eventType = %L\n" argCxt~>eventType)
info("rejected reason = %L\n" argCxt~>comment)
)
cleRegUserTriggers(?postRejectProc "myTestRejectProc")

?postCommitProc t_postCommitProc

The user callback to postprocess the concurrent layout cellview after committing a design partition.

postCommitProc(r_cxtObj) 
=> t / nil

where

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>cellViewsOnDisk
cxtObj~>eventType

where

  • cxtObj~>mode is cle_manager.
  • cxtObj~>cellViewsOnDisk is a list of libName, cellName, and viewName committed on the disk.
  • cxtObj~>eventType is postCommit if the callback is triggered after committing design partitions.

For example,

procedure( myTestCommitProc(argCxt)
info("cellView = %L\n" argCxt~>cellView)
info("window = %L\n" argCxt~>window)
info("mode = %L\n" argCxt~>mode)
info("cellViewsOnDisk = %L\n" argCxt~>cellViewsOnDisk)
info("eventType = %L\n" argCxt~>eventType)
)
cleRegUserTriggers(?postCommitProc "myTestCommitProc")

?preOpenScratchProc t_preOpenScratchProc

The user callback to preprocess the top cellview before opening a concurrent layout scratch cellview for editing. In this case, the top cellview is not locked but write permission is required for corresponding layout.oa.

In most DM environments, you still have the write permission after checkin; otherwise, you can use this callback for non-exclusive checkout of the top cellview.

preOpenScratchProc(r_cxtObj)
=> t / nil

where,

r_cxtObj is the object that retrieves the additional information related to the design open in concurrent layout. You can retrieve the information in the following way:

cxtObj~>cellView
cxtObj~>window
cxtObj~>mode
cxtObj~>cellViewsOnDisk
cxtObj~>topCellViewOnDisk

where,

  • cxtObj~>mode is cle_designer. The manager has no need to edit a scratch file.
  • cxtObj~>cellViewsOnDisk is a list of libName, cellName, and viewName opened on the disk.
  • cxtObj~>topCellViewOnDisk is the top cellview of libName, cellName, and viewName on which the concurrent layout scratch cellview is based.

For example,

procedure( myTestPreOpenScratchProc(argCxt)
info("cellView = %L\n" argCxt->cellView)
info("window   = %L\n" argCxt->window)
info("mode     = %L\n" argCxt->mode)
info("cellViewsOnDisk = %L\n" argCxt->cellViewsOnDisk)
info("top cellView = %L\n" argCxt->topCellViewOnDisk)
)
cleRegUserTriggers(?preOpenScratchProc "myTestPreOpenScratchProc")

Value Returned

t

The specified user-defined callback function was registered successfully.

nil

The user-defined callback function was not registered.


Return to top
 ⠀
X