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

Unable to save the changes made in Display Resource Editor into a file due to the "drmSuppressSaveDialogBox" variable

$
0
0

I'm trying to make some minor changes to my default display resource data and save it into a .drf file using File -> Save in Display Resource Editor. However, I'm getting the following message in CIW:

"Display Information is modified in the current session. However Save Display Information Dialog Box has been suppressed as environment variable "drmSuppressSaveDialogBox" is set. The modified Display Information will not be saved."

I tried "envSetVal("layout" "drmSuppressSaveDialogBox" 'boolean nil)", but that doesn't seem to be doing anything since the default value is already nil. Any idea what I'm missing?

I'm using version ICADVM18.1.

Thanks, Fari


How to pass a list as string to a variable in Pcell

$
0
0

Hi,

I've created a pcell using Pcell menu in layout window. I've instantiated another pcell inside the master pcell and assigning parameters of master pcell to child pcell using "inherited parameters" option. I've an inherited parameter as a string as shown in the image below. I'd like to assign a list of numbers starting from BOT number to TOP number (BOT and TOP are another 2 variables). If BOT is 1 and TOP is 4, I want to assign "1,2,3,4".  

 

I tried following command, but it fails as its not accepting printf inside that. 

printf("\" ") for(i BOT_MET TOP_MET-1 printf("%d ," i) i=i+1 ) printf("%d \"" TOP_MET)

Could someone help me on how to print a list of numbers as string.

Thanks,

Prasad

remove lxInternal attribute from a layout cell view

$
0
0

I have come across some layout views which contain no devices, and have no corresponding schematic.

However, cv~>lxInternal and cv~>lxInternal~>source are defined with db IDs, and items like cv~>lxInternal~>source~>lib return an empty string, eg "".

Using setq or the equivalent cv~>lxInternal = nil to try to remove the lxInternal attribute results in the values to instead be redefined as "FALSE", which just creates different problems.

eg

cv~>lxInternal = nil

then

cv~>lxInternal

will return the value "FALSE"

How do you remove the lxInternal attribute from a layout cell view that has no corresponding schematic view?

Using custom via variant during layer transition

$
0
0

Hi,

I know this is probably obvious but I can't seem to figure it out. Is there a way to use custom via variants during via selection in the wire layer transition mode? I'm trying to figure out a way to change the number of rows/columns of vias when changing layers during the "wire" command. When creating a wire the default via creates only a 1x1 via for the given wire size as shown in the picture (left). I want to specify to use a minimum of 2 vias as shown in the next picture(right). I made a via variant for this but it's not available in the options in the layer transition. Is there an option to do this? Currently after creating the wires I go and change the property of each via stack and add a row.

Thank you,

Eugene

SKILL to create a custom assistant in Virtuoso

$
0
0

Hi,

like we can use skill to create custom toolbars in virtuoso, can we create a custom assistant like wire assistant/navigator in virtuoso. please suggest me how to proceed for this custom assistant creation in virtuoso.

can we add extra buttons/functionalities in existing assistant. i want to add some button with wire assistant, in case creating a new custom assistant using SKILL is not possible in Virtuoso.

Regards,

Ashok Kumar Mishra

How to? Blocking call to sevRun (or similar)

$
0
0

Is there a way to make sevRun or one of its siblings blocking and if not what's the most reasonable polling method to implement? I am wanting to perform a large number of Spectre simulations sequentially. The results (e.g., psf file) of each execution overwrites the previous (that is to say I don't need to save any of the results). I am basically grabbing an internal verilog model state after each run and sending it to a file/display so the flow is more or less:

foreach(item mylist

   configsim(item)

   sevRun(mySession) ; needs to block or implement sane polling solution

   getResultAndDisplay() ; get the output of the previous simulation, store or display it

)

Also, somewhat in parallel, is there a way to query as to whether ADE or whatever the managing entity is thinks there is still a simulation running? Originally when I did this I assumed that sevRun was blocking but obvious it isn't. So, I tried to immediately call sevRun for a dozen simulations which caused things to go berserk. ADE was sure there was a simulation running in the background but there was no process and no lock file and I didn't know where else to look. My only solution was to kill ADE altogether and start over. 

Thanks! 

Net tracer custom setup

$
0
0

Hi,

I see in documentation that Net tracer have a custom layer setup form like in the first image. But in my Virtuoso (ICADVM18.1-64b), I dont see any such form. Is there any skill way to invoke this form?

Which version of Virtuoso which supports customizing the net tracer connectivity? 

Also the net tracer options form is different form the documentation. 

Documentation:

vs My Virtuoso:

-Ramakrishnan

Menu works on Virtuoso XL but not on EXL

$
0
0

Hi all,

I'm using a menu to export a cell to a third-party tool that used to work on XL but is no longer working on EXL. Is there anything I could change under cdsinit (or related file) to simply add this menu to EXL version? 

Thanks in advance for your help.


Create a single layer ring shape

$
0
0

Hi All,

Does any one know how  to create a shape of width of 50um which is base on a single layer and generate on outside of this layer and it's like a shape of ring but not rounded?

Thanks and regards,

Victor

saveGraphImage woes

$
0
0

Hi, I'm trying to create several plots in succession and save them to files automatically. Running into trouble with saveGraphImage()

win0 = awvCreatePlotWindow()
awvPlotWaveform(win0 vtuneL ?expr cornerL)
awvDisplaySubwindowTitle(win0 "vtune")
awvSetLegendWidth(win0 400)
saveGraphImage(?fileName "~/Images/vtune.png" ?width 1280 ?height 720)

 

If I run this, the file is created but the waveforms are "undersampled", as though only 1 out of every 100 points were actually used to draw the line. The graph that pops up in ViVa looks nice and smooth, and if I run the exact same saveGraphImage() command again from the CIW, it produces a file with smooth waveforms. 

Now, I tried placing the saveGraphImage() call into a hiRegTimer, and this fixed the issue for a single case. When I add another plot though, only the last one gets saved "smoothly", the first becomes coarse again no matter what I tried.

Running ICADVM 18.1-64b.500.11

Thanks in advance!

How to choose Sweep variable for the plot before plotting the waveforms

$
0
0

Hi,

I am running sweep simulations in ADEXL/Assembler and there are more than one design variables that I sweep. Let's say TempVar and VddVar. When I plot my waveform, I want to specifically show my outputs w.r.to VddVar, I know how to do this from the plot by changing Swap Sweep Variables from the plot but is there a way to set this one in calculator or output expression before plotting so that plot comes with expected sweep variable in X axis when the plot shows?

Thanks

yayla

Can we use design variables inside the name of output expressions in Assembler?

$
0
0

Hi,

I have different operation modes in my design so I need to sweep design variables. I was trying to use one of these design variables inside output name with VAR() but it seems that name region is treated as string since VAR() function is not evaluated as below.

Is it possible to construct the output expressions with design variables in Assembler?

Thanks

yayla

usage of SKILLIDE on a bug in measurement running in Explorer

$
0
0

Hello all.

One can put breakpoints, get even a red line where an error happen in SKILLIDE, when running SKILLIDE, and CIW.

However, this is not happening in Explorer. I assume because it is a parallel process, and a non-GUI one.

Is there a way to get the GUI operating, and use the IDE break-points, and what have you, also when the code is run on Explorer and/or Assembler?

SKILL function not available

$
0
0

I am new to SKILL, and am trying to learn how to take smaller layouts and integrate them together into a larger design using a SKILL script.

What I would like to do is read in a layout of a component and extract its dimensions so I can dynamically figure out how to arrange it.

My understanding is that a BBox contains that information using the dbTop, dbBottom, dbLeft, and dbRight functions.

So I tried to open a layout using component_layout = dbOpenCellViewByType(library_name component_name "layout"), which worked fine.

Then I tried using the function component_bbox = dbGetCellViewBBox(component_layout) which is listed in the Documentation Browser, but was given the message "*Error* Eval -  undefined function - dbGetCellViewBBox"

Is there something I need to do to make this function available? Alternately, is there an easier way to get the information I am trying to find?

Using SKILL functions from within the Library Manager

$
0
0

Hello,

I found a useful post from a few years ago regarding adding a menu to the Library manager.

https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/37705/callback-function-for-library-manager-menu-item

From this I'm trying to create a routine which will change a parameter (viewSubType) on a layout view and I am hoping to do that by selecting the view and then envoking my routine from the Library Manager menu.

I specified my procedure in the .cdsinit file and the menu is defined in the cdsLibMgr.il.

procedure(myLmgrMenuItemCallback(str1 str2 str3 str4 str5 str6)
printf("%s %s %s %s %s %s\n" str1 str2 str3 str4 str5 str6)

cv=ddGetObj(str1 str2 str3 nil nil "a")
cv~>viewSubType="maskLayoutL"

The first part of the routine works fine and I see the name of the layout in question displayed in the Virtuoso window (CIW). However the ddGetObj operation does not seem to work. I receive an error that cv is nil.

Are all SKILL functions available within the Library Manager as I think it's a little different than the standard windows under Virtuoso? I'm not sure that I'm correctly defining my procedure so that it is accessible from the Library Manager.

Any advice or pointers for documents that I should look at would be gratefully received.

Many thanks,

Matthew Cordrey-Gale


How to disable from automatically plotting all waveforms after the simulation finishes - Virtuoso 6.1.5-64b ADE XL?

$
0
0

Hi,

Somehow when I run any sort of simulations in ADE XL, after my simulations finishes, the plotting windows pop up and all my waveforms are automatically plotted. Since, I have more than 50 waveforms the plotting windows sort of hangs for a while, so I want to disable this option to automatically plot all waveforms after the simulations finishes. I couldn't find such options in ADE XL unless, I missed something. Could you please help?

I am using Virtuoso 6.1.5-64b

Regards,

Dhruv Patel

How to print special character like " using sprintf()

$
0
0

Dear All,

I am trying to use getAsciiWave() in SKIL script. I want to vary the Y-column value.

So, I tried as below:-

ITR4=1

getAsciiWave(sprintf( nil "\"/mxp/ESD/INL_PI_64_CODE_MC.csv\" 1 %d ?xskip 0 ?yskip 0 ?formatFloat nil ?xName \"CODE#\" ?xUnits \"[]\" ?yName \"DELAY\" ?yUnits \"fs\"", ITR4)  )

The problem in above is the special character ". I tried using \ before it. This way sprintf works but it gives \" instead of ".

How this can be overcome ?

Kind Regards,

How to return PSF folder used by the current VIVA by skill

$
0
0

Hi All

I am writing a script for saving images with predefined .grf setup for the results which is used in the VIVA.

I am kind of blocked at the first step to retrieve the psf folder path which is used by VIVA, (which is high-lighted in the screenshot below).

Especially, psf folder is from a specified corner run like the "…/Interactrive.764/1/tran/psf"

I need this value for the "resultsDir" argument in awvLoadWindow() function.

Many thanks in advance.

Best Regards

Yi

supressing part of the output of simple print statement

$
0
0

Hello forum:  just wondering how to supress the display of the database key ids of the objects I print information about .

specifically, if I have a simple code structure at the CIW window :

instancelist=selectedSet()

count=1
foreach(instance instancelist printf("instance name : %s count of instances: %d \n" instance~>name count) count=count+1)

I get a list of instance names and count but at the end I get the long list of database key id's for what I assume is the instances.

How to supress the print of database ID"S ?  I ask because my instance list is long and I don't need that information now.

(using cadence 18 )

thanks.

Skill script can't complete the run

$
0
0

Hi

I have written a skill script to know the default and maximum value of the parameters. In this script, I am creating a sch/layout view of the cell and placing the device. Read the default and maximum parameter value value and then deleting the device. Again place the new device on the same sch/layout view and read the param values and delete the device and so on.

When I use the sch view, then my script read the def and max param value from the placed device and write them to the file. This is working fine.

But, when I use the layout view, then my script read the def and param value for few devices but then the script stuck at some point. The last line in the CDS.log file is "# Memory report: using      15,983 MB, process size 17,118 MB at UTC 2020.10.19 05:10:28.066". This seems like that the virtual memory is all full and virtuoso can't place the p-cells any further.

Is there a way to release the virtual memory after deleting the device?

Thanks and Regards

Saurabh

Viewing all 5067 articles
Browse latest View live


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