Quantcast
Channel: Cadence Custom IC Skill Forum
Viewing all 5072 articles
Browse latest View live

Netlist creation error

$
0
0

Hi, I'm trying to use the schematics and simulation setups provided in CMOSedu.com.

When I added IC6.1 library (I'm using virtuoso 6.1.5 version) and other directories and ran the spectre simulation, I got Netlist Error:  

Could not find netlist procedure:ABbnNetlistProc instance "M0" in cell-view "Ch26_IC61" "Fig26_10" "schematic"

for all of the 3-terminal nmos and pmos transistors.

In the CDF editing window, the netlistProcedure field is written as "ABbnNetlistProc". After I deleted 'ABbnNetlistProc' and empty the field, the error message disappeared and netlist could be created, however, there's another error message: Error found by spectre during hierarchy flattening. ERROR (CMI-2116): M0: Too few terminals given (3 < 4) while running simulation. 

Any suggestion to solve this error?


reseting instance labels

$
0
0

Hi all.

 Is there any way to reset all the labels (instance names) in a schematic view hierarchially?

 Thanks in advance.

 

What's the difference between cellView~>prBoundary and cellView->shapes->lpp ?

$
0
0

when lpp=list("prBoundary" "boundary") ?

 I mean, what's the cellView~>prBoundary supposed to do?

Thank you.

Error evaluating ocean expresstion

$
0
0

Hi everybody,

I got the following error when doing Monte Carlo analysis.

Error evaluating ocean expresstion bw = bandwidth(VF("/VOUTP") 3 "low")

It seems that the error is always there whether the analysis is done using ADE or OCEAN. For all the iterations, some can got the expected results while the others return the above error. However, I get the above expression from the Cadence Tool Calculator. I tried it several times, but the error was still there. Now, I was confused. Could anyone tell me what goes wrong? I appreciate it for your help.

 

Regards,

Winever.   

Unable to do calculations involving variables in Ocean

$
0
0

Hi all,

 

Sorry if this question has been answered before but my search didn't reveal anything.  I am having trouble with the following lines in my script:

 

------------------------------------------------- 

 ocnWaveformTool( 'wavescan )

simulator( 'spectre )

design("/home/a5islam/simulation/complete_circuit/spectre/schematic/netlist/netlist")

resultsDir("/home/a5islam/simulation/complete_circuit/spectre/schematic")

modelFile('("/CMC/kits/cmosp35.4.3/models/B3V/mm0355v.scs" "tt"))

;frequency of the sine wave input [Hz]

freq = 2

printf("Frequency: %L\n", freq)

tduration = 1*(1/freq)

printf("Duration: %L\n", tduration)

 -------------------------------------

The output of the file is:

Frequency: 2

Duration: 0

I think that when I calculate tduration using (1/freq), it fails to get the value of "freq". If I replace "freq" with its numeric value 2, then duration is 0.5 as expected.

 

In a related note, Cadence also complains when I try to use the following code:

 tduration=1e-3 

 analysis('tran ?start "0" ?stop tduration)

But if I replace tduration with its numeric value, the analysis runs fine.  

Is there some special way to access the values of variables in Ocean that I'm not aware of?  

Two things I should mention:

(i) If I declare all my variables as design variables and use VAR(""), there are no problems whatsoever. However, this seems like an excessive and tedious solution. 

(ii) I am saving my script as an .ocn file and then typing Load("FileName.ocn") in the CIW to run the script. Not sure if this has any bearing on the current situation.

 

Any advice is appreciated!

 

Anik 

 

Error when calling and evaluating skill function in ADE-L Parametric Analysis and in ADE-XL

$
0
0

Dear all,

 

I've got a problem to which I couldn't find answer.

I've made a customized skill function to do calculation and evaluation after PSS analysis. It takes in time domain waves from PSS and returns a number. I create a new output parameter  in the output window of my ADE-L which calls this function, it works fine and returns the number. 

However, when I run Parametric Analysis in ADE-L, or run it in ADE-XL, evaluation fails and I get the following error. 

 

ERROR (ADE-1057): Could not evaluate expression

        Name:'MyFunction'

        Expression:'MyFunction((v("/OUTP" ?result "pss_td") - v("/VSS" ?result "pss_td")) (VOUT_H / 2) )'

     because of the following error(s)

        ("ilGetNumber" 0 t nil ("*Error* ilGetNumber: arg must be a number" srrWave:0x2aacaa20))

     Ensure that the definition of the expression is correct.

*Error* ("ilGetNumber" 0 t nil ("*Error* ilGetNumber: arg must be a number" srrWave:0x2aacb060))

 

 

 The skill functions I call in my function are following:

cross()

drGetWaveformXVec()  drGetWaveformYVec()

drVectorLength()

drCreateVec()

drGetElem()

drSetElem()

drCreateWaveform()

ymax()  ymin() 

 

There isn't any ilGetNumber() function in my code. Very weird.

I guess that in order to call a skill function in Parametric Analysis or in ADE-XL, I need to change something in my code. But I couldn't find any information. Could anybody help me on this? Many thanks!

 

Best Regards,

Mingxu 

Default (or script) ADE Stimuli

$
0
0

Hello All,

 

I am wondering if there is a way to either alter the default ADE stimuli or change it through script. I would prefer if all of my stimuli would default to a 0v DC source which is enabled. 

 

I suspect that this is done in some way through the asi function calls in the ADE L Skill reference manual, but I'm not able to figure it out. I have some level of skill experience, but I have never skill scripted anything with the ADE.

 

I work in both cadence 5.1.41 and 6.1.5, but if there is not an easy method for cadence 5 that is fine.

 

Perhaps my overall approach is flawed though and there is a better way of doing what I want. My overall goal is to more easily set up and test at higher levels where there are potentially hundreds of stimuli. I haven't found a way which works well for doing this. Going through and editing one by one is quite tedious. I tried vector files, but I couldn't do anything bigger than a 4 bit bus . I had issues scripting a general stimuli file (An issue I had scripting the two of these was getting cadence to return the pins with the buses expanded and keeping reference to the pin direction). I could also do AMS, but I do not know an easy way to set up AMS and have never gone down that road. Note, I do not have an ncverilog license available

 

Some direction on how to go about this would be great.

Thanks,

-Matt

How to convert a list(one row) into multi rows ?

$
0
0

 Dear All ,

I have a list = list("A/B" "B/C" "C/D") , I want to it shows as below (each line)

"A/B"

"B/C"

"C/D"

 How do do it ?

 

Thank you.

Charley


SKILL - determine when asynchronous task complete

$
0
0

I am new to SKILL, so this may be an easy question for someone to answer:

I am working on a custom SKILL interface that is made up of a Tree Table.  In order to generate the report, I have to expand all of the items in the tree.  When I expand the tree items, there is a callback that generates an asynchronous method to get information from a command line script that updates information in the tree, and then updates the GUI with the information through another callback.  This asynchronous update is performed for each item in the tree.  For large trees, this expanding and updating could take 10-20 minutes.

In order to generate my report, I need to expand all of the items in the tree, and then wait for the asynchronous update to complete before I can generate my report to export.

I see that I have 3 options:

1.  Figure out a way to execute a callback function when all of the updates are done (is this possible?)
2.  for the report output, implement a synchronous update as each item is expanded, and wait for each item to be updated, and when the last update is updated generate the report
3.  Poll the asynchronous process, or the data, with an hiSleep() , until the last process is complete, all the fields for each Tree item is populated, or a global variable that would track each item's status, and then run the report

I have implemented #3, and it works, but it does not seem to be the most appropriate solution, so I am looking for suggestions.

Thanks,

- Nellis

Backannotation of simulation data to schematic

$
0
0

 I'm writting some automation tool and would like to know if there's a skill code to perform backannotation from simulation operation point results to schematic.

I know that I can use some functions as openResults and getData via OCEAN scripts.

 Is there a way to write the values to the instance labels?

I also can see that ILLabels work like slots that evaluate some expressions, how can I say: evaluate and show expression results?

 Thanks in advance.

 

How to write the code - menuItemCallbacks of hiCreateSimpleMenu ?

$
0
0

 

 Dear All ,

I want to create a simple menu(hiCreateSimleMenu) ,

which arg l_menuItems  are fixed  , //A -> B -> C

each  A -> B -> C has it shape id // db:1111 db:2222 db:3333

How to let arg l_menuItemCallbacks follows  the l_menuItems correspondence ?

e.g. 

if   choose A , it will select  db:1111

if   choose B , it will select  db:2222

if   choose C , it will select  db:3333

 

hiCreateSimpleMenu( 'test  "QQ"  list("A" "B" "C")  ????)

I don't know how to write ???  code  , How to do it ?

 

Thank you,

Charley

Error: Trying to plot expression which do not evaluate to be plotted

$
0
0

Hi everybody,

I got the following error on plotting results when doing ac analysis with my layout.

*Error*   Trying to plot expression <VF("/I30/60:net1378" "/home/heyongsheng/simulation/test_delay_line/spectre/config") >, which do not evaluate to be plotted. 

Chances are little that this problem stems from the net expression "/I30/60:net1378" because I chose this net from the layout and I managed to get the same net expression plotted when doing tran analysis. I guess the error is caused because the psf file is larger than 2G. To confirm it, I reduced the sweep points per decade from 1000 to 100 when doing ac analysis. This time, as the psf file is no longer larger than 2G, the net expression was plotted successfully without the above error. Does anyone know the exact reason for this problem? How can I solve it? I appreciate it for your help.

P.S. The sub-version of my icfb.exe is 5.10.41.500.6.151 (32-bit addresses). The version of my spectre is 7.2.0.109 32bit. My waveformtool is wavescan.

Regards,

Winever.

Virtuoso XL

$
0
0

Hi,

I'm using XL in the IC6 version. After generating I generate the layout and make some connections I usually like to group certain devices and make them into a cell. The question I have is that is there a way to keep the connectivity in XL after I do that. From what I know once I make it into a cell the connectivity for those devices are gone. 

 

Thanks,

Dennis

modifying pin names of a symbol

$
0
0

I need to grab a symbol, find all the pins and then change the names to include dig_ in front of the original pin names.

I then need to recrerate the symbol. I want teh symbol to have the same shape and pin locations as the original.

 So I have the following:

 ;test code

procedure( buildmysymbol()

pinlist = schSymbolToPinList("zakir_ams" "spi_top" "symbol")
pat=pcreCompile("dig_")
pinlist = pcreReplace(pat pinlist "dig1" 0)

schPinListTosymbol("zakir" "spi_top" "symbol" pinlist)
)

 

The cod edoes not work since the pinlist used in  pcreReplace(pat pinlist "dig1" 0) is  a list and not a string.

Any way to get around this?

 Thanks

zakir

 

Get default via spacing and enclosures

$
0
0

Hello,

I use dbCreateVia() function to create vias with variable cut Rows and Columns determined by the width of the path connected to the via in the layout view. In order to compute the cut Rows and Columns i need the via spacing and enclosure as inputs but these variables also change with the cut Rows and Columns values which i don't know.

Is there a skill function which allows to autmatically setup the array-side dependent via spacing rules and enclosures according to the input variable cut Rows and Cloumns? if not, is there any work around.

Thanks in advance 

Best Regards

Taher 


a skill routine to create AMS ade state

$
0
0

hello experts

 does anyone have a skill routine to create AMS Designer ADE state automatically?

 thanks

 tea :)

Unable to do calculations involving variables in Ocean

$
0
0

Hi all,

 

Sorry if this question has been answered before but my search didn't reveal anything.  I am having trouble with the following lines in my script:

 

------------------------------------------------- 

 ocnWaveformTool( 'wavescan )

simulator( 'spectre )

design("/home/a5islam/simulation/complete_circuit/spectre/schematic/netlist/netlist")

resultsDir("/home/a5islam/simulation/complete_circuit/spectre/schematic")

modelFile('("/CMC/kits/cmosp35.4.3/models/B3V/mm0355v.scs" "tt"))

;frequency of the sine wave input [Hz]

freq = 2

printf("Frequency: %L\n", freq)

tduration = 1*(1/freq)

printf("Duration: %L\n", tduration)

 -------------------------------------

The output of the file is:

Frequency: 2

Duration: 0

I think that when I calculate tduration using (1/freq), it fails to get the value of "freq". If I replace "freq" with its numeric value 2, then duration is 0.5 as expected.

 

In a related note, Cadence also complains when I try to use the following code:

 tduration=1e-3 

 analysis('tran ?start "0" ?stop tduration)

But if I replace tduration with its numeric value, the analysis runs fine.  

Is there some special way to access the values of variables in Ocean that I'm not aware of?  

Two things I should mention:

(i) If I declare all my variables as design variables and use VAR(""), there are no problems whatsoever. However, this seems like an excessive and tedious solution. 

(ii) I am saving my script as an .ocn file and then typing Load("FileName.ocn") in the CIW to run the script. Not sure if this has any bearing on the current situation.

 

Any advice is appreciated!

 

Anik 

 

Automatic creation of hierarchy config for IC5

$
0
0

Hi, all,

 I want to create the hierarchy config view in Cadence IC5 automatically by SKILL. I searched in this forum and found some functions like hdbSetTopViewName,  hdbSetDefaultLibListString, hdbSetDefaultViewListString, hdbSetDefaultStopListString to support this creation. However, in IC5 (I am now using IC5.10.41), these functions cannot be found out from startFinder, and it seems they are not supported. 

 Anyone has some ideas to make this creation of config also possible in Cadence IC5?

 Thanks very much in advance!

 Zhimiao 

spectrum function in OCEAN

$
0
0

Hi All,

I am trying to calculate the Effective no.of bits,SINAD,SNR etc. for a delta-sigma ADC. As per the OCEAN reference document on page 427  for the function "spectrum" , it shows that these parameters are calculated using the DFT of any given input signal. 

However,when I am using the below expression its showing that evaluation of the expression has failed. 

spectrum (dft(VT("/net028") 0 1e-06 4096 "Rectangular" 1 "default") 4096 500K 1 2G "Rectangular" nil "sinad")

Please provide your insights on this and what could be the possible solution for this.

FYI: I calculated the DFT separately and used the spectrum function which gave me an erroneous result( I assume!!) 

Regards,

Kashif 

String operations in skill

$
0
0

Okay so we have a list 'p' constituting of elements as pin names. 

 p = ("GIO<0>"  "G1E<1>"  "GAE2<2>"  "G3F1<3>")

 

And the task is to add the under-braces numeric value with 4 and convert this array into

  p = ("GIO<4>"  "G1E<5>"  "GAE2<6>"  "G3F1<7>")

 

I did these operations in perl and also bridged the gap between perl and skill. 

But since this script has to be linked to a bind key hence I want to do the string operations in skill only. 

Is there any skill code or so by which we can edit the numeric portion ( only under the braces) of the string and then return it back to the 'p' array?

Viewing all 5072 articles
Browse latest View live