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

Bindkey for raising CIW problem

$
0
0

Hello,

First of all, I am quite new to programming in SKILL. I've tried to raise the CIW window by using a bindkey F3 by using this code:

procedure(raiseCommandInterpreter()

    applicationList = list("Schematics" "Layout" "Artist" "adexl")

    foreach(application applicationList

        hiSetBindKey(application "<Key>F3" "hiRaiseWindow(window(1))")

       printf("Bindkey <F3> set for raising CIW window for %s. \n" application)

    )

)

The bindkey works in schematic and layout, however, in ADE(X)L is does not raise the window... Is there something I missed?

Kind regards,

Nicolas






Virtuoso, monte carlo simulation to measure fervency of ring oscillator

$
0
0

Hi

I have a problem, i can not measure the frequency of ring oscillator in monte calro simulation for a ring oscillator,

if i use the freq function in the calculator, the simulation not complete and give an errors.

Amin

how to direct Virtuoso Visualization and Analysis XL to display all signals in single window/Strip?

$
0
0

hello exports,

I had a simple testcase setup in ADE-L with signals to be plotted for a "tran" simulation. when all signals to be plot are analog, they all go to a single waveform window which is fine. 

but after I convert a few signals as digital by a2d function in ADE-L and re-run the simulation, the signals are now plotted into multiple subwindows. 

from ADE-L output setup, I don't see any control to direct the signals to be plotted all together or in separated waveform windows. Even I save the setup as Ocean Script, I don't see any directing to multiple waveform windows either. 

how can this waveform display windows be controlled to plot always in single plot instead I have manually drag them together everytime? 

thanks,

David

display signals in a new strip from Ocean script

$
0
0

hello exports,

I noticed a few discussions for similar case for ADE ( https://community.cadence.com/cadence_technology_forums/f/custom-ic-design/38661/is-there-any-way-to-add-a-new-empty-strip-on-viva ), such environmental setting works perfect for ADE as bellow. but it doesn't seem to work for Ocean script plotting. 

envSetVal("viva.rectGraph" "stripChartOn" 'string "true")

so in Ocean, for now I have to do following to explicitly manipulate the numbers to control which strip the signal(s) going. can we do "?strip new" kind command so it knows to always create new strip to display?

plot( v("/aaa") ?strip 2)
plot( v("/bbb") )
plot( v("/ccc") ?strip 3)

thanks,

David

Vref Opamp Simulation

$
0
0

Hi everyone,

I am simulating inverse voltage using opamp with single Voltage. to not use negative input voltage.

I use opamp model in adhLib. But circuit cannot cut negative input voltage.

Can you explain for me how to fix this?

Thank you.

Running parallel processes in SKILL code

$
0
0

Hi,

I am writing an oceanXL script to launch multiple runs in parallel. While I set each run with ocnxlRun( ?waitUntilDone nil) in the loop to set up the circuit, after all runs are defined and launched I then wait for the runs to end with ocnxlWaitUntilDone('All). 

In the mean time, there could be a lot of runs and potentially taking a few days to finish. I want to be able to monitor a few finished simulation results to determine whether I want to continue with all simulations. So here in the attached eample I inserted a block of code to look for the results directory. The problem is, the while loop seems to block the execution of the ocnxlRun's and will not produce any results until I exit the while loop.

Obviously I can't put the monitor block after the ocnxlWaitUntilDone('All) command since it will wait for all to finish and defeat the purpose. My question is, can I launch a parallel process to monitor the progress of the simulations?

Thanks in advance for any help.

Ed

need to expand the bus in schematic for routing plan

$
0
0

Hello,

I am trying to report the buses in the schematic to have routing plan in layout . When i am reporting them i want to be able to expand the bus.

For example.

 

If i have  bus TRIM<2:0>  i want to report  individual nets  as   TRIM<2> , TRIM<1> ,TRIM<0> . Is there any function available to do this ?

  

Thanks,

Raghu

plot Text content in waveform

$
0
0

hello export,

is there a way to manipulate the ViVa waveform plotting so that it could display some text content in the waveform, e.g., telling the phase / step / function at specific time duration?

thanks,

David


selecting nets in schematics given netname

$
0
0

Hi ,

I have list with netnames of schematic. I need to select the net  in schematic given netname . Is there any function available to do this ?

Note: I  know about probing a net using geAddNetProbe() . Instead of this i need to select a net given netname

Thanks,

Raghu

print value as binary formated

$
0
0

hello export,

maybe impossible but just trying, from SKLANGREF, the printf could only do %d, %o %x for integer value, is there a way to print the integer as Binary formatted? 

thanks,

David

How to find the Layer# and Purpose# that are not reserved in the technology file using SKILL ?

$
0
0

Hi All,
How to get the all the Layer# and Purpose# that are not reserved in the technology file using SKILL ?
Because I want to add new layers and purpose in my technology file by using SKILL,
I have a difficulty in finding the available Layer# and Purpose# manually in my technology file.
Please help.

Thanks in advance.
Best regards,
Marben

Converting Waveform to list

$
0
0

Hi, 

I am a SKILL newbie and I need to covert a waveform to a list, but I can't.

I tried to use "abWaveToList" procedure, as read in other posts, but it doesn't seem to work. I've written this code:

res = abWaveToList(Wave ?transpose t)

and the content of res variable is:


I guess the problem isn't due to the Waveform variable, because I can see it using plot fuction. I'm using IC6.1.7-64b.500.15.

I really appreciate all the help I can get.

Regards,
Savino

pulldown menu in Assembler & Explorer

$
0
0

Hi All,

I would like to add my own custom pulldown menu in Assembler and Explorer. I have written the procedures and tested they work fine, i just need them to automatically load.

- Background - 

Ive managed to get the following working, but if i put my procedure call on the third argument it doesn't work. I thought the third argument was the menu trigger.

deRegUserTriggers("explorer" nil nil 'MyExplorerPDmenu)

Is this correct ? Should i be using deRegUserTriggers method or is there an equivalent to the below ?

envSetVal("asimenv.startup" "sessInitTrigFunc" 'string "init_session")

Hover over text in SKILL form

$
0
0

Hi,

Is it possible to create Hover over text for fields in the form using SKILL ? 

I have a skill form which have multiple fields. Many users come to me and ask what each field does. I want to create easiest way to help them describe what each field means. 

So if someone hover over the mouse on the field, then some small popup comes up which shows the description of the usage of the field. is it possible with skill ?

Greatly appreciate you help.

Thanks

Sanket

Using Skill for Naming Large Numbers of Pins

$
0
0

Hello,

I am interested in learning how I could write a SKILL script to create a large numbers of pins to be used in a 1 KB 6t SRAM chip. These pins would then need to be individually named and connected to the correct instance pins. I currently have a single SRAM cell (schematic, layout, DRC and LVS completed), but expanding this to 1 KB has proven a challenge because I do not know how to create, connect, and correctly name the very large number of pins that would be necessary.

Is there a way to automate this process using SKILL?

Thank you


how to append a constraint with cstCreateConstraint

$
0
0

Hi,

I want to append a constraint "minOppExtension" in my techfile. So I'm using cstCreateConstraint to do it.

techID = techGetTechFile(ddGetObj("Tech"))

cutClass_CG=cstFindConstraintGroupIn(techID "group1")

cstCreateConstraint(cutClass_CG "minOppExtension" list("M2" "V1") list(0.0 0.0) list('cutClass list(0.04 0.04)) t t)

it return nil

What is wrong with my code

it should be like that in the techfile

constraintGroups(


 ;( group [override] [definition] [operator] )
 ;( ----- ---------- ------------ ---------- )
  ( "group1" nil    nil    'and

    orderedSpacings(
     ( minOppExtension            "M2" "V1"  'cutClass  (0.04 0.04) (0.0 0.0))
    ) ;orderedSpacings
  ) ;group1
) ;constraintGroups

Thanks

SKILL function for getting point ID (or netlist directory) in ADE XL

$
0
0

I am writing custom SKILL function to process certain file located inside of netlist directory, in IC6.1.7-64b.

This file is generated by an internally developed tool of which source code I don't have access to.

I am calling my custom function in ADE XL output expression. This function needs to read the file, process data, and show result for each simulation point in ADE XL result window.

Let's say variables are defined as following.

ssName=axlGetWindowSession()
sdName=axlGetMainSetupDB(ssName)
hstName=axlGetHistoryName(axlGetCurrentHistory(ssName))
hstEntry=axlGetHistoryEntry(sdName hstName)
pCornerName=axlGetCornerNameForCurrentPointInRun()

When I run axlGetPointNetlistDir(hstEntry "test") when my test name is "test", I will get something like this.

"[some directory hierarchy]/adexl/results/data/Interactive.0/psf/test/netlist"

However I need to know the netlist directory of each point where each file is saved. Desired result looks something like this.

"[some directory hierarchy]/adexl/results/data/Interactive.0/1/test/netlist"

 

If I know point ID and run 

axlGetHistoryEntry(sdName hstName ?cornerName pCornerName ?designPointId [point ID value])

I will be able to get the netlist directory I want.

Does anyone know if there is any function that returns point ID, or returns netlist directory of each simulation point?

Thank you.

Spectre skipping points

$
0
0

Hello exports,

I guess I might need some parameters to Spectre to avoid skipping value points. By older version it gives good staircased signal (from VerilogA) but in newer version it misses several stairs. Any clue what I should do to make the simulator not skipping?

the good staircase signal in older Spectre simulator:

the bad staircase signal with several stairs missed in newer Spectre simulator:

thanks,

David

ADEL - skill : adding signals on the list of outputs to be plot/saved

$
0
0

Hi,

In ADEL I want to modify the list of outputs to be plot/saved using skill.

Is there any skill procedure to to this?

Assume that the simulator is spectre, and the proper session is open in ADEL.

Thank you,

Marcel

Automatically generating pins from nets problem

$
0
0

Hello everyone,

I wanted to write a SKILL code that generates automatically your pins depending on the selected nets and the place where you clicked. However, the latter one does not work and the pins get generated somewhere else in the schematic... Underneath you can find the important part of my code where the problem is situated:

procedure(schAutoCreatePins(ok theListBox)

let( (xcoord ycoord inputCVId)

    xcoord = xCoord(hiGetCommandPoint())

    ycoord = yCoord(hiGetCommandPoint())

    inputCVId = dbOpenCellViewByType("basic" "iopin" "symbol" "" 'r)

    if( ok then printf("Creation of pins: \n")

       foreach(choice theListBox->value

       sprintf(namePin "%s" choice)

       schCreatePin(geGetEditCellView() inputCVId namePin "inputOutput" nil xcoord:ycoord "R0")

       ycoord = ycoord + 0.25

       printf("Pin %s\n" namePin)

       ) ; foreach

    else printf("Cancelled automated pins creation.")

    ) ; if

  )

) ; procedure


Kind Regards,

Nicolas

Viewing all 5077 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>