Continue to Site

# Manipulating a single Instance Iterations in Virtuoso

Status
Not open for further replies.

#### battosai

##### Newbie level 4
I am trying to manipulate the parameters of a single instance of an array (I1<1024:1>). The instances contain a simple RC network and a current source modelling a rather complex circuit. All the instances are connected in series using a bus-notation. Now I need to add a unique delay to every single one of the current sources in order to simulate a propagating signal through this chain of instances.

My idea was to use a skill function to deduce the number of the instance and use it as a multiplier for a constant delay and add it as a parameter of the internal current source. This way all 1024 instances should have a unique delay that is a function of its instance number.

I am fairly new to Skill and seem to be stuck..I managed to access a single instance using ilInst~>name but this returns me the complete name i.e. I1<x>. That's about as far as I came..

Does anyone have experience with this kind of problem or any hints that might help?

#### erikl

##### Super Moderator
Staff member
... any hints that might help?

Try searching (or asking) in the dedicated !

#### battosai

##### Newbie level 4
According to Andrew Beckett in the Cadence Forums my original approach is not possible. Therefore I have changed my approach a bit. I added the delay parameter i neet to change to the cell using pPar("delay"). In that way the netlister adds the parameter directly to the instance call instead of only the subcircuit. In that way all i need to manipulate is the value of the parameter for every instance. Since it's the first time doing netlist manipulations and the lack of good examples i wrote a custom PrintParameter function that simply overwrites the delay parameter with a fixed value to see if it works:

Code:
(defun MYPrintParameters (formatterId cvId)
cellview_params = cvId->parameters
(foreach param cellview_params
(if param->name == "delay" then
param->value = "2u"
cellview_params = nil
);; if
);; foreach
amsPrintParameters(formatterId cvId)
);; defun
netId = amsGetNetlister()
vlog = netId->vlog
vlog->parametersProc = MYPrintParameters

I have made the according changes in the CDF editor (under Simulation Information in the spectre settings under netlistProcedures i added MYPrintParameters) for the cell and saved theMYPrintParameters function in the libInit.il file in the library folder and tried to generate the netlist. Unfortunatly it returns the error:

Code:
  *Error* MYPrintParameters: too few arguments (2 expected, 1 given) - (stdobj@0x15ecc170)`

Do I have to add another parameter in the CDF editor or where did I go wrong?
I am grateful for any input!

Status
Not open for further replies.