for Cadence DFII
Information about a cell view can be accessed via the ICM_info() function. This comes in two versions, short form and long form.
The short form is triggered by using:
The fields available in the short form are
("Message" "Time" "Change" "By" "Version"
The long form is activated by using:
The long form fields are
("Message" "Config" "Variant" "Time" "Project"
"Workspace" "Dir" "LibType" "Loc" "ConfType"
"Desc" "Attr" "LibDesc" "Type" "Change"
"By" "Version" "Date" "User"
For the info structure to work in a scalable and high performance manner, you should implement the call to ICM_info as a window trigger to enable caching, because you don't want the function to execute every time an object or label is re-drawn in the schematic.
The solution is to use a window trigger.
Install a window trigger.
The following code illustrates the procedure and uses the short form.
let((cellddid xto lib cell view srcCv)
when( ddGetObjDMSys(trigList->libId) == "p4"
cellddid = trigList->viewFileId
if( trigList->eip || !cellddid then
xto = ddGetObj(trigList->libName trigList->cellName trigList->viewName "*")
) ; ** if trigList **
srcCv=dbOpenCellViewByType(lib cell view "" "r")
;; this is the most simple form of registration
;; if you are using Calibre or other tools, you should append ICM_WindowTrigger
;; to the list after
;; checking to
;; see what is already registered
;; contact email@example.com if you need further help on
;; cascading multiple window triggers
;; global table
ICM_InfoTable = makeTable("ICM_InfoTable" nil)
;; actual registration for schematic and layout
deRegUserTriggers("maskLayout" nil nil 'ICM_WindowTrigger)
deRegUserTriggers("schematic" nil nil 'ICM_WindowTrigger)
deRegUserTriggers("schematicSymbol" nil nil 'ICM_WindowTrigger)
In the sheet, e.g. US_10ths/A size, create an ilLabel using the ilInst syntax and access the cached information.
For example, to get the version information, create an ilLabel in the following syntax: