S
Svenn Are Bjerkem
Guest
Hi,
based on some SKILL I found here, I put together a snippet to force
re-evaluation of callbacks on CDF parameters. The script does what it
is supposed to do, at least on those CDF parameters that have a
callback.
I have a problem with the connection between the model name and the
cellName in TSMC technology. In the kit that I have there is a
connection between the cellName and the model name so that the model
name is write protected in the object property form. It changes when
the cellName change.
I have some schematics that I have imported as skill code and in these
cellviews this connection is lost so that when using a hierarchical
search and replace to change from plain transistors to montecarlo
transistors, the cellname is changed but the modelname not. If I
manually change the cellname in the object property dialog back and
forth a couple of times and press apply, then the connection seems to
be reinserted.
I am wondering how the connection between cellname and modelname of an
instance is established.
Here is the force CDF evaluation script. If you find something to
improve, then I would be happy to know. I had to use a sprinf
workaround because I didn't know how to make dbGetq accept a variable
and not a symbol.
;==============================================================================
; SABforceCDFeval -- Force the reevaluation of a CDF callback
;
; Author : Svenn Are Bjerkem
; Date : 2006-11-05
; Modified : 2006-11-07
; Limitations : Currently only one level can be flattened
;
; Example of usage:
; (SABforceCDFeval "MyLib" 'w)
;==============================================================================
(procedure (SABforceCDFeval libName paramName)
(let (libId cvId viewName)
(setq libId (ddGetObj libName ))
(setq viewName "schematic")
(setq listOfCells (dbGetq libId cells))
(setq cellList (setof cell listOfCells (member viewName
(dbGetq (dbGetq cell views) name))))
(foreach cell cellList
(setq cellName (dbGetq cell name))
(setq cvId (dbOpenCellViewByType libName cellName viewName
nil "a"))
(foreach instRef (dbGetq cvId instances)
(sprintf evalParam "(dbGetq instRef %s)" paramName)
(when (setq value (evalstring evalParam))
(printf "%s of %s is %L\n" paramName (dbGetq
instRef name) value)
;(putpropq instRef (lowerCase value) cellName)
(setq cdfgData (cdfGetInstCDF instRef))
(setq callback (getq (get cdfgData paramName)
callback))
(when (and callback (nequal callback ""))
(errset (evalstring callback) t))))
(schCheck cvId)
--
Svenn
based on some SKILL I found here, I put together a snippet to force
re-evaluation of callbacks on CDF parameters. The script does what it
is supposed to do, at least on those CDF parameters that have a
callback.
I have a problem with the connection between the model name and the
cellName in TSMC technology. In the kit that I have there is a
connection between the cellName and the model name so that the model
name is write protected in the object property form. It changes when
the cellName change.
I have some schematics that I have imported as skill code and in these
cellviews this connection is lost so that when using a hierarchical
search and replace to change from plain transistors to montecarlo
transistors, the cellname is changed but the modelname not. If I
manually change the cellname in the object property dialog back and
forth a couple of times and press apply, then the connection seems to
be reinserted.
I am wondering how the connection between cellname and modelname of an
instance is established.
Here is the force CDF evaluation script. If you find something to
improve, then I would be happy to know. I had to use a sprinf
workaround because I didn't know how to make dbGetq accept a variable
and not a symbol.
;==============================================================================
; SABforceCDFeval -- Force the reevaluation of a CDF callback
;
; Author : Svenn Are Bjerkem
; Date : 2006-11-05
; Modified : 2006-11-07
; Limitations : Currently only one level can be flattened
;
; Example of usage:
; (SABforceCDFeval "MyLib" 'w)
;==============================================================================
(procedure (SABforceCDFeval libName paramName)
(let (libId cvId viewName)
(setq libId (ddGetObj libName ))
(setq viewName "schematic")
(setq listOfCells (dbGetq libId cells))
(setq cellList (setof cell listOfCells (member viewName
(dbGetq (dbGetq cell views) name))))
(foreach cell cellList
(setq cellName (dbGetq cell name))
(setq cvId (dbOpenCellViewByType libName cellName viewName
nil "a"))
(foreach instRef (dbGetq cvId instances)
(sprintf evalParam "(dbGetq instRef %s)" paramName)
(when (setq value (evalstring evalParam))
(printf "%s of %s is %L\n" paramName (dbGetq
instRef name) value)
;(putpropq instRef (lowerCase value) cellName)
(setq cdfgData (cdfGetInstCDF instRef))
(setq callback (getq (get cdfgData paramName)
callback))
(when (and callback (nequal callback ""))
(errset (evalstring callback) t))))
(schCheck cvId)
--
Svenn