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

Multiple types checking for a procedure.

$
0
0

Hello all.
let us say that I want to create a procedure, which accepts just 1 input argument. The thing is that it could be either a list or a string.
SKILL provides a mechanism of type checking. List would be "l" and string "t". How can I have "l" or "t" ?
Thanks.


Can one add dynamically slots to a SKILL++ ?

$
0
0

Hello all.
In other languages, one can dynamically add class variables.
can one do the same in SKILL++?
Because SKILL++, AFAIK, need to have the slots defined in generation (at least examples shown).

Selective Marknet

$
0
0

Hi,

I have two questions:

1. Is there any way I can mark the nets in a given area of layout only? Is there any faster alternative to marknet using skill?

2. How can I force that any new rectangle which is drawn in the layout must start from the edge of a previously drawn rectangle (assuming that I invoke this functionality after drawing some rectangles)

Thanks,

Sarik

Layer Panel in app form

$
0
0

I want to display layer panel (palette) as a field in a form creted using hicreateappform. So I can select a layer when the form is opened. How to do it?

Radio Field and String Field doubts

$
0
0

Hi,

I am trying to do a simple script, which should create a form with some text boxes and radio buttons.

Given the code in the end of this post I would like to add the following functionalities:

1 - If myOptionBtn is set to "Yes" send a message to the screen, otherwise do nothing.

2 - If I am refering to the value of a radio field, can I use something like:

if ((formName->radioName->value)=="t") then

hiGetAttention()
warn("some text"))

3 - i would like to pop a window for the user to select a directory and store that into a variable or text file.

I did my code based on an example in Cadence Documentation. Below is what I have done so far.

procedure(formSettings()

; Create the top label
myLabel=hiCreateLabel(
?name 'myLabelText
?labelText "Settings"
?justification 'center
)

; Create the textbox Label
myString=hiCreateStringField(
?name 'myTextBox
?prompt "Path: "
?value "Insert path to your images here !"
?defValue "~/Desktop/"
)

;option Buttons
myOptionBtn = hiCreateRadioField(
?name 'optionbtn
?prompt "Generate all the documents for me"
?defValue "No"
?choices list("Yes" "No")
)


if( boundp('formSettings) then ; If the form already exists do nothing
formSettings
else ; If the form doesn't exist then create it
hiCreateAppForm(
?name 'settingsForm
?formTitle "settings"
?callback "";
?fields list(myLabel myString myOptionBtn)
)
status = hiDisplayForm(settingsForm)
)
)

Thanks in advance,

José

How to add menu items to test mouse right click menu in ADE-XL

$
0
0

Hi,

Is it possible to add items to test right click menu in ADE-XL using SKILL?

Moving cursor from GUI form to Layout window

$
0
0

Hi, 

From a layout window, i am popping up a GUI form.

So once i click on the Apply button in the GUI, I want the cursor to be moved to the layout window.

Thanks in advance.

Regards,

Srimant

Help on dbCreateInst function.

$
0
0

Hi,

I have a list of cells that needs to be instantiated in schematic. I chose to use the function dbCreateInstByMasterName() since the list has the library and the cellname. The problem I am facing is when the number of instance is 2, I can never get the function to put 2 instance of the cell. If I give 2 for x_numInst variable it puts <0:2> number of instances and if I give 1 for the x_numInst variable it instantiate only 1(Its suppose to do <0:1> by it logic) instance and if I give 0 it still instantiates 1 instance. 

Thanks,

Mithun.


Snapshot functionality in Cadence Skill

$
0
0

I'm building a skill code which works like a snapshot. 

There would be some objects(metals, poly, od etc. ) kept on the top level of the cell.

And the user would give a list of bBoxes.

For each bBox acting as a frame of the camera , whatever objects are kept inside that specific area should be copied in a new cell.  

By the word specific I mean if a metal elongates outside a bBox then only that part should be copied which is inside the bBox.

Crop functionality in SKILL ?

$
0
0

A leChopShape function chops a shape based on the points given to it. The left out part is preserved.

But does there exist a function which can chop the rest of the shape except the part inscribed inside a given bBox / set of points ? 

Does SKILL have a crop function or lets say an inverse chop function ?

"List name" decided by a variable

$
0
0

I want to create a list whose name decided by a variable. i.e. :-

x~>libName_cs = list()

so when x~>libName = "Library1" ,    then     Library1_cs = list()

and when  x~>libName = "Library2" ,    then     Library2_cs = list()

How to do it?

re-reading .cdsinit

$
0
0

Without leaving virtuoso, how would I initiate a re-read of .cdsinit (or fresh virtuoso startup condition)

Note that I do not have .cdsinit in my local or home directory it is a system wide .cdsinit from tools/dfII/local/.cdsinit

I tried to load "pathto/.cdsinit"

But it doesn't seem to initialize the same way as closing and opening virtuoso.

There are some config.xml that get looked at before loading the above .cdsinit according to the log file, but other than that

the .cdsinit is at the top of the log during virtuoso startup.

Thanks.

ADE-XL select tests

$
0
0

Dear all,

I have an ADE-XL session with multiple tests set. I would like to be able to select the in the results tab one at a time.

When enabling "Accelerated Input", I can see that the command used is _axlTestFilterChanged(axlOutputsForm1->axlOutputsWidget1 "'(\"Test1\")").

Instead of referring by name I would like a way to identify each element of the dropdown menu by an ID.

I tried help from virtuoso and finder but cannot find the function _axlTestFilterChanged anywhere.

Thanks,

José

How to edit NMOS/PMOS W/L of an inverter layout using SKILL code

$
0
0

Hi

I am using Virtuoso IC6.1.6.

I would like to parameterize an inverter layout for automatic layout design from it's schematic.

Therefore I am trying to edit of NMOS/PMOS W/L of an inverter using skill code in following way:

1. I am using instances (NMOS/PMOS pcells) from technology file (ex. umc, tsmc or gpdk) and made a inverter layout.

2. I want to edit 'width/length' of NMOS/PMOS using skill code

Please let me know how can I write a skill code for the above case.

 I would be glad if you may provide some examples or test case.

Looking forward to see a quick response.

Thanks.

Create Instance form default setting

$
0
0

Hi,

I'd like to change default setting of 'Create Instance' form.

Where can I control the each field value such as library name, cell name, and mosaic(row, column)?

Thanks in advance.


Boundary area from virtual open view ?

$
0
0

Hi, 

Is there any way how to select boundary in virtual open view via

dbOpenCellViewByType(Lname Cname "layout" "maskLayout" "r") 

and give an area value back ?

 

If not is there any command which could open virtual window and make boundary selection ...

something like this .....

pteSetNoneSelectable(?panel "Layers")

pteSetNoneSelectable(?panel "Objects")

pteSetSelectable("Boundaries" t "Objects")

geSelectAllFig()

selSh=list()
selSh = geGetSelSet(openC)
if(selSh then
foreach(shape selSh

 case( cell~>objType
 ("PRBoundary"
 Barea = shape~>area
 )
 )
)
;);if

Thx 

Robert

 

ADEXL ocean: Saving outputs for each run

$
0
0

Hi,

I have spent a lot of time reading other posts on this topic and I have had no luck. Many of the posts are from many years ago and I'm hoping things may be simpler now. I am using Cadence Version ICADV12.1-64b.500.13

I'm looking to use ocean in ADEXL to plot some of the outputs to a file. Here is an example scenario:

Run a sweep on a variable A and have a few outputs that are plotted. In ADEXL, I would see a few design points (A=1, A=2, ...) and can look at the results for each setting of variable A. I would like to add a variable that perhaps runs some ocean or skill code to save a few of the outputs to a file. I would like this to run for each variable sweep that is happening.

Basically to create a bunch of files:

A=1_transient.png

A=2_transient.png, etc.

Is there a way to do this without running everything in ocean (ie, bypassing ADEXL completely). 

I would really appreciate some input on this. I am willing to read whatever manuals or tutorials it requires, I am just looking to be pointed in the right direction and to know if this is even possible. 

Thanks,

Shayan

Is it possible to add properties to a layout pcell?

$
0
0

Hi,

This is what I would like to do:

The p-cell code to generate a layout instance must store certain values computed in the code as a property to that instance.

This is simular to someting I have done before: added properties of computed values for a group in layout.

In the code for generating shapes in a layout, I group all the generated shapes together and then add properties to this group. I use the command:

dbCreateProp( topGroupID fieldName fieldType fieldValue )

I want to do the same with a p-cell. The values I want to report are not parameters (I don't want them to be that either), so they should be stored as properties. When an instance is instantiated, upon selecting that instance and hitting the "q" key, I wnat properties to show-up under the properties tab. I tried to do it with the same command like so:

dbCreateProp( pcCellView fieldName fieldType fieldValue )

but this did not work.

Is there any way to get the p-cell code to store certain values as properties to the instance it is creating?

With kind regards,

Sjoerd

Library Manager - Managing Designs

$
0
0

I've noticed in my Library Manager that there is an option to Check in/ Check out a cell, library... These options are grey for me, so I did some research...

I came upon a Library Manager User Manual from 2000th and noticed Team Design Manager (TDM) options that would be cool to have around...!

But scrolling through the cdnshelp for an updated Library Manager User Manual (2015) I came upon something called EDIF (read just the Wiki on it...)

My question is how is Team Design Manager handled nowadays? I would like to work on establishing it in my team, so I could use some starter points.


Thanks!

Grow/Shrink a Via to Path segment

$
0
0

Hello,


I'm still a novice in SKILL, and I'm trying to make a script/procedure that will change via's bBox to match the width of the path's that via is on. I have a problem when it comes to changing the list of bBox values and I have a more general problem when it comes to determing which via is on the corresponding path segment.

My starter point is that the user would select the vias and paths whose size needs to be changed.

So by far I have a piece of the code that renders paths and vias from selected objects:

selected = geGetSelSet()

vias = nil

paths = nil

foreach(object selected

case( object~>objType

(("stdVia") vias = cons(object vias))

(("pathSeg") paths = cons(object paths))

);case

);foreach

so far I get a correct list of vias and paths from the selected objects.

my next problem is what argument to use to determine which via "belongs" to which path? I looked over the paths~>?? and saw that there's a layer attribute I could use to match...but I don't see anything like that in vias properties.

I tried using dbGetOverlaps but I think I made things too complicated:

overlaps = nil

foreach(via vias

overlaps = cons(dbGetOverlaps(via~>cellView via~>bBox) overlaps)

);foreach

so I created  a list of lists that contain a via and the path with that via...

now, I need to run through overlaps and for each list in overlaps again determine which argument is a via and which is a path and check the path segments whether they are vertical or not by seeing their beginPt and endPt (they are vertical if beginPt (x) = endPt(x) symbolically (where x = caar(path~>beginPt)), analogous for horizontal path... )

haven't written this part specifically yet...

anyway, I have tried as a test to change the bBox value of a via using: (exemplary values!! )

via~>bBox = list((lowerLeftPt) (upperRightPt))

I get an error:

dbSetq - cannot set attribute - bBox

Then I tried the dbTransformBBox but I get the same error - I made a check with isBBox to see if I'm using bBoxes in the first place, and it all returned true.

Does it have to do with the fact that maybe I am not working with ROD vias? (I don't know anything yet about relative object designs and parametrized cells)

Of course, my goal is to make this universal, and I haven't even touched the issue of addressing angled paths and rotating the vias to correspond them for example...but, I imagine I'd be using the "orient" property from via~>orient, and somehow calculate the angle from the paths coordinates...

I'd appreciate if anyone can share a bit of an advice if there's any easier or quicker way to do this and what is it that I'm doing wrong with the bBox-es ?

Viewing all 5103 articles
Browse latest View live


Latest Images

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