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

Skill code to automatically map instances via name in layout xl

$
0
0
Sometimes the layout instances don't map with the schematic (vxl clean) even if the lvs comes clean. I have to mannualy go to device correspondance & map them. Is there any skill code that can be used to map them when the layout xl fails to automatically map.

Destroying structures

$
0
0

Hi there,

I came across defstrct and was amazed at the capability it gives. I make many structures and store them in a list and do some sorting etc. ex:

struct1=make_myStrcut(..)

struct2=make_myStrcut(..)

myStructList=('struct1 'struct2..)

In logic everything is working fine and as expected. However, I need to do this task many times, and everytime I am making new structures and storing this in this list, without destroying the previous instances.

myStructList=('newStruct1 'newStruct2..) 

This clogs up the memory (RAM + swap) in the server as the previous 'struct1s are not 'destroyed'. Is there a simple function to clean up these structures.

Note: The no. of structures are many (with considerable data).

I had a quick look in the forum and manual, but could not come up with anything close.

Any help would be appreciated.

Thanks and Regards,

Atul 

How to get reference to selected instance pin

$
0
0

If you select an instance in your schematic, you can get a reference to it using geGetSelSet().

I find this doesn't work if the selected object is an instance pin.

My ultimate goal is to create a bindkey to name add a wire label for the wire connected to these pins and make the lable name equal to the pin name. This will save me some drudgery in the future. Too often I'm plotting signals with random names like net0153 because I didn't have the patience to name every net in my testbench.

So if anyone knows a way to get db refernces to these objects, please share.

Thanks! 

Connectivity lost while changing technology.

$
0
0

Hi there,

As the subject suggests I am trying to migrate a design from one technology to another. The method adopted is by changing the master:

selectedObject=car(geGetSelSet())

masterID=dbOpenCellViewByType("newTechLibName" "newTechCellName" "symbol" "schematicSymbol") 

selectedObject~>master=masterID

This indeed changes the master and I can see the MOS of new technology appearing, but the wires connecting them are not connected now (it seems as if because of change in symbol).

A slight adjustment does the job at graphical schematic level. Is there any way to change the master and preserve the connectivity also (the w's and l's value remains same, fortunately!)

Thanks and Regards,

Atul 

Ultrasim: error measurement on internal node

$
0
0
Hello JI would like to launch from a batch simulation through Ultrasim, a transient simulation. Firstly, I generate a netlist from ADE in Cadence, then I have included manually .measure line to extract value as the following syntax: .measure tran Voltage_avg  avg v(*) from = 0ns to 2nsIt works well in that case for all node of my circuit. The outputs are something like that:voltage_avg@masterctrl.arefb =   4.8336e-07But if I want to measured directly the voltage on the internal node masterctrl.arefb  as:.measure tran Volt_avg  avg v(masterctrl.arefb) from = 0ns to 2nsI’ve got the following error message:Volt_avg             =   failed             ignored, possibly due to nodes or elements not foundI want to extract some measurement from internal nodes and I need to know the right syntax. My question is:What should I do to extract measurement on internal node ?Many thanks JT

 

How to reorder the CDF in SKILL?

$
0
0

Hi,

I've been coding SKILL for a long time, and right now I'm basically doing this:

cdfid2 = cdfGetBaseCellCDF(cell2)

cdfid1 = cdfCopyCDF(cell1 "baseCellData" cdfid2)

cdfCreateParam(cdfid1  ?name  <blah blah blah> )

cdfCreateParam(cdfid1  ?name  <blah blah blah> )

....

cdfSaveCDF(cdfid1)

 

Basically I have a cell1 which borrows almost exactly the CDF from cell2--callbacks and all--and then adds a few more parameters.   My problem is, the additional parameters appear at the BOTTOM of the cdfgForm.  I need them at the top.   How do I reorder them?  I tried something along the lines of:

cdfid~>parameters = append1(cdr(cdfid~>parameters) car(cdfid~>parameters))

and it didn't work.  Attempts to modify cdfid~>parameters directly don't seem to respond.   cdfDump doesn't work very well, because that requires some manual invervention to inject the new parameters at the beginning before reloading it (unless you did some fancy SKILL/Python code to hack up the ascii cdfDump.il file).   Is there some command similar to hiInsertMenuItem where I just say, "I want this parameter to appear at this position, before this other parameter"?

thanks!

 

Get cut layer from symbolic

$
0
0

How do you get the cut layer from a customVia?

 The syntax for stdVia does not work for customVia, ~>cutLayer.

 

Thanks

How to copy and rotate a shape with any angle in skill ?

$
0
0

I failed to search the manual and the forum to find a way to copy and rotate a shape I created with any agle like 15, 30, 45 etc.

I noticed some posts said that rotate with any angle may raise lithography issues. But in MEMS application, it's very popular to use all kinds of "strange" shapes. As the line/space is over 1um, the litho problem can be neglected. Then, what can I do in skill code?


Adding library pathes

$
0
0

The envirnoment  creates a new cds.lib file when cadence virtuoso starts per session.

Is there a better way of adding additional library pathes than creating a procedure to append the cds.lib by printing out a text file to the cds.lib file?

 Example of current procedure:

procedure(addLibPath()
let(    (
    (addLibFile "./adLibs.txt")
    (mainLibFile "./cds.lib")
    )
if(isFile(addLibFile) && isFile(mainLibFile) csh(strcat("cat " addLibFile " >> " mainLibFile)))
)
)

Thanks

New to skill, looking to do something simple, add text to a path

$
0
0

I am new to skill coding and am trying to do something pretty simple but having some trouble and haven't been able to find something to help me out.  Basically I am trying to create a path and then add text to it for the path name.  I can generate the paths using the leCreatePath command but I can't find the right command and format for adding text to the path.  Ideally I would like the text to be attached to the path.  Any help would be greatly appriciated.

The edge is hilighted when the cursor is close to, how to use skill to achieve it.

$
0
0

Hi ALL,

         When the cursor is close to the edge of object, the edge is hilighted for ruler operation(bindkey: k) in Cadence615.

         How can I use skill procedure to achieve it?

         Thanks!

Making SKILL manipulation of objects constraint aware

$
0
0

I'm wondering if there's some kind of callback function I could call to make any manipulation I do on an object constraint aware. For example, if the symmetry constraint is set for two instances just so they are symmetrical along an axis. If I use non-interactive SKILL command to change one of the instances e.g. dbMoveFig(), the other objects will not move and it will break the constraint right away with warnings marker drawn on top of both instances.

Any way I can get around this problem without using functions like leHiMove()? Thanks!

Moving over to 6.1.4

$
0
0

Hi Cadence Community

  I am having a bit of a problem transitioning existing layout designs from Cadence’s Virtuoso 5.10.4 to Virtuoso 6.1.4. Using the Conversion Tool Box feature CDB to OpenAccess Translator that is provided. The design transition over to 6.1.4 is relatively smooth, lvs checks are clean.  However, in running the Design Rule Check the following error message is trigger when running top level hierarchy cellview check which includes the seal ring and bondpads. All sub-cells DRC checks are clean.

[2044] offGridShapeErrors:  GRCE001: CHIPEDEG x and y dimensions must be an even number of grid points

I hope there is a fix or a work around for this challenge.

Any help or insight will be greatly appreciated

Johnny

Setting location of custom toolbar

$
0
0

Hi,

The query is about setting the location of a custom toolbar. When the toolbar gets placed using the hiPlaceToolbar function, there's this option to mention the location - top/bottom/left/right.

hiPlaceToolbar(
w_windowID
o_hiToolbar
[s_toolbarArea]
)

But, it gets placed along the same row of toolbars which are already there - thereby getting squeezed to a corner. How do I set it to get placed on a new row automatically and always?

 

Thanks,

Leo

 

SKILL for image saving in ViVA

$
0
0
We'd like to Create a single bindkey to change the waveform background in ViVA (in 6.1.5), then save off an image of it with a standardized name and some default setttings.  But I don't see any doing either of these things through SKILL.  I searched this forum and found this from Andrew Beckett:  
 
"There's currently no SKILL API to add point markers, unfortunately. Please contact customer support - I'm pretty certain this is in the list of things requested (we plan to tidy up the various SKILL interfaces to ViVA as there are a lot of legacy functions which date from the old AWD days, and also new functionality in ViVA which requires a clean API to access them; however, the first focus was to get the new ViVA graph solid and with a clean use model, and then add the SKILL interface afterwards)."
 
Is this still true?  Is there still limited SKILL interface to ViVA?

accessing hiCreateToggleField individual values

$
0
0

Hello, I have been struggling for a long time trying to figure out how this hiCreateToggleField works. I can't seem to figure out how to access individual items that are actually selected by the user. I put together a little testcase that I think will help me understand if you could modify it to "only" print what is selected in the form?

procedure(serdes_pop()
let((popWhat singleLib allLib libChoice labelField lib)

 mylist=list( list( 'MT1 "MT1" ) list( 'MT2 "MT2" ) )

     popWhat = hiCreateToggleField(
               ?name 'popWhat
               ?prompt "Populate:"
               ?choices mylist
               ?itemsPerRow 1
               )
  labelField = hiCreateLabel(
               ?name 'myLabel
               ?labelText "_________________________________________________"
               )
     popForm=hiCreateAppForm(
             ?name 'popFormdcr
             ?formTitle "Populate cadencelibs"
             ?callback 'popLib16CB
             ?fields list(popWhat labelField)
             ?unmapAfterCB t
               )
     hiDisplayForm(popForm)
  );endlet
 );endprocedure

procedure(popLib16CB(popForm)
prog((singleLib)
when(popForm
foreach(a popForm->popWhat->_toggleItems
print(symbolToString(a))
)
    )
    return(t)
))

Setting multiple snap spacings

$
0
0

Hi,

    My requirement is to set snap spacings according to the layer been selected in LSW. To achieve this, i have following questions:

 1)How to check which layer is selected currently?

 2)If i have the script which is able to identify the layer selected and accordingly change my snap spacings, then how can i schedule that script so that as soon as i change my layer selection in my LSW snap spacings should change automatically. Is there a way to do that?

Thanks,

Arunkumar A 

How to reconnect the wires after cell replacement?

$
0
0

Hi,

 

I found a very useful skill codes "CCSchangeCells" from the skill library that can do cell replacement. However i have 2 cell symbols which have different footprints. Thus after cell replacement, there are disconnect wires. Is there any skill code that can connect the wires to the pins.  

How to detect and remove dangling nets in schematic?

$
0
0

Hi,

Is there skill codes available to detect and remove dangling nets in schematic?

 

Thanks.  

 

Adding corners to ADE-XL setup

$
0
0

Hello,

I'm pretty new to Skill and am currently trying to add corners with variable values I read in from a .csv-file. So far I'm using axlPutCorner() to create a new one which then gives me handle to it but I wasn't able to find any following command to set the variables and values.

I guess there is the possibility to save the .sdb-file for the corners and change that file with the script, but was wondering if there is an easier way to create a corner, like creating outputs with axlAddOutputExpr(). It seems rather difficult to change the xml-code with Skill.

Viewing all 5100 articles
Browse latest View live


Latest Images

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