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

cdsvias problems

$
0
0

 Dear all,

I try to creat the vias in my own PDK,  so i goes to technology file manger to creat cdsvias. 

After that i return back to  Virtuoso layout editting, to press "O", it shows   NO CONTACTS/VIAS defined in constraint group.

I check the "Help", I should go to window>>contraint group manger for my vias defination, but i did not find this option in there. 

Do you have any idea to sovle this problem, let me get the required VIAS in the contraint group.  

 

 


How to fill a bounding box with as many vias as possible

$
0
0

Hi,

I have a bounding box of the parallel area between to layers of metal, and i want to create a skill method to fill that area with as many vias as possible.

this is my first attempt to write a skill program, but it seems like a basic operation every skill programmer probably implemented, so before i sit down to wrestle with it i was wondering maybe someone already have an implementation of it to share ?

Thanks for your time.

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.

Extracting name of instance in Layout XL

$
0
0

Hi Andrew,

I had a question, which is not related to the topic.

I was trying to extract name of instance from layout XL, and every instnace has a " | " in starting eg. "|M1". Now when i was trying to save the name as inst~>name, it saves as " "|M1" ", i.e with quotation. Is there a way to convert this string to symbol. i need just |M1.

i had a case where the inst name was " "|M1.1" " also.

Regards

Neeraj 

Question Regarding Exporting Parametric Sweeps

$
0
0

Hi All,

 I am trying to export a series of nested parametric sweeps in Cadence. Using ocnPrint, the data is separated into sections according to the values of the outer sweep variables, but I would like to have a "flattened" output, where each sweep vector is in an adjacent column, rather than in a new subsection.

 

for example it is currently doing:  

 

VTD_n = -3.000e-01        

VTD_p             -3.000e-01        0.000e+00         3.000e-01         

 0.0000e+00        9.9708e-01        9.9638e-01        9.9400e-01       

 1.0000e-02        9.9638e-01        9.9548e-01        9.9235e-01       

 2.0000e-02        9.9561e-01        9.9448e-01        9.9042e-01

..... 

 

 

VTD_n = 0.000e+00         

VTD_p             -3.000e-01        0.000e+00         3.000e-01         

 0.0000e+00        1.0000e+00        1.0000e+00        1.0000e+00       

 1.0000e-02        1.0000e+00        1.0000e+00        9.9999e-01       

 2.0000e-02        1.0000e+00        1.0000e+00        9.9999e-01   

 

and I would like it to do:

 

VTD_n            -3.000e-01      -3.000e-01       -3.000e-01                0.000e+00           0.000e+00      0.000e+00             

VTD_p             -3.000e-01        0.000e+00         3.000e-01             -3.000e-01        0.000e+00         3.000e-01   

 0.0000e+00        1.0000e+00        1.0000e+00       1.0000e+00        1.0000e+00        1.0000e+00        9.9999e-01  

 1.0000e-02        1.0000e+00        1.0000e+00        9.9999e-01        1.0000e+00        1.0000e+00        9.9999e-01  

 2.0000e-02        1.0000e+00        1.0000e+00        9.9999e-01      1.0000e+00        1.0000e+00        9.9999e-01  

 

 

ocnYvsY plot in ADEXL Outputs Setup as output expression?

$
0
0

 Hi,

 I am trying to use ocnYvsY function in the Outputs Setup in ADEXL(IC6.1.5-64b500.11) as ocean expression. What I am trying to do is I have current and swing expressions and I want to plot Swing vs Current after sweeping some other parameters. I know how to sweep variable from VIVAX but it is not efficient. 

I tried some thing below but it didn't work

ocnYvsYplot(?exprx VCO_swing ?expry VCO_current) in Outputs Setup in ADEXL( VCO_swing and VCO_current are other expressions in Outputs Setup).

I have also tried "?wave" option also but it didn't work.

Could you help me how to do this?

 

Thanks,

yayla

Add custom include file in netlist when doing NEtlist and Run from ADE

$
0
0
Is there a way to add custom include files in the netlist when user does Netlist and Run in a ADE session

Constraint and Modgen SKILL - resulting in incomplete modgen

$
0
0
Hi,

I'm trying to use the code from this Cadence Solution ID: 20024536

; creating modgen group member list
d_cacheId = ciCacheGet( t_schLibName t_schCellName "layout" )
ld_instIds = d_cvLay~>instances
l_constMembers = nil
foreach( d_id ld_instIds
  if( d_id~>pin == nil then
    l_constMembers = cons( list( d_id~>name 'inst ) l_constMembers ) ) ; if
) ; foreach

; modgen constraint
d_constr = ciConCreate( d_cacheId 'modgen ?members ciExpandMembers( l_constMembers )
?params list( list( "numRows" 2 ) list( "numCols" 4 )
list("pattern" "custom ((A A A A) (B B B B)) ((R0 R90 R0 R90) (R0 MY R0 MY))") ) )

After this, I've added this line to auto-generate the modgen layout:

mgGen( d_cvLay d_constr )

The constraint and modgen are indeed getting generated, but the modgen is incomplete - It's created as two rows and four columns as mentioned in the constraint, but the pattern is not followed.

After this if I open the pattern editor manually and click apply, the modgen gets modified to the correct pattern - which means whatever constraint that is created is correct, but somehow the generated modgen group is incorrect.

Please help.

Thanks,
Leo


abConvertPolygonToPath

$
0
0
Hi, I tried to find a solution, to convert a polygon into a path. The best result gave me the skill code from Mr Beckett (abConvertPolygonToPath.ils ), but I found for some reason, it finds no "matched" path for 45deg "converted" pathes with special path width: for example: failed 2.1, 2.3, 2.4, 2.7, 2.9 ... good 2.0, 2.2, 2.5, 2.6, 2.8... the grid is 0.25/0.25 For ortogonal polygons I see no problem. Any idea Thanks Erich

List of symbol pin names and direction using SKILL

$
0
0

Hi,

I want to get a list of pins names and which direction the pins have from a symbol/schematic. I guess SKILL is the way to go? I new to SKILL, so if someone could push me in the right direction I would be grateful:)

Labels with different fonts

$
0
0

I am currently writing an application where you can build/modify forms using graphics in Virtuoso. This is based on work Alex Wong did in 4.2.1. The problem I am having is displaying the labels in a font that resembles the font found on the forms.

Is there a way to specify a label to use an X font other than those supplied with the software?

 Ted

skill assoc : How does assoc command of skill work with anumerical value ?

$
0
0

How does assoc command of skill work ?

 

After looking closely into several numerical examples, I got the following findings:

 a = '( ( 20n   xx xx) ( 40n yy yy) (50n zz zz) ) assoc( 2e-08 a)   returns:    (2e-08 xx xx) assoc( 4e-08 a)   returns:    (4e-08 yy yy) assoc( 5e-08 a)   returns:    nil  ß       ????? 

but if I try:

a = '( ( 20e-09   xx xx) ( 40e-09 yy yy) (50e-09 zz zz) ) assoc( 2e-08 a)   returns:    (2e-08 xx xx) assoc( 4e-08 a)   returns:    (4e-08 yy yy)

assoc( 5e-08 a)   returns:    (5e-08 zz zz)  

 

I suspect that there is a numerical bug here. It looks like 5e-08 ≠ 50n . I noticed that for 20n,40n,80n,160n (power of 2) the problem doesn't appear.

 

virtuoso version ICADV12.1-64b 03/15/2013 18:29 (sjfnl166)

 

Giora Karni

Selecting shapes overlapping a donut

$
0
0

Hi,

I frequently need to select objects within an area defined by a donut. Didn't find a way of doing this as all the commands I found seem to work with a quare boundry box. Any suggestion?

NKU10K

 

letGetContactRule(), leGetContactParam(), letGetContactNameArray() in IC615?

$
0
0

Are there equivalents of these functions in IC615?  I have some custom code which was developed in IC5 that uses these functions to get information like via width/height/rows/columns, etc.

 Thanks

-Dan

 

Error has been getting while opening Virtuoso XL.

$
0
0

 Hi All,

I am getting below error in CIW while opening virtuoso XL. And then XL not opening.  My version is 615. Could you please let me know the reason for this?

*Error* append: argument #1 should be a list or another acceptable type - t

 

 Thank you,

Sarvani


How to transform a rod Object?

$
0
0

Hi,

I want to modify the orientation of a rod Object keeping its bBox unchanged. Is there any function such as dbsetq for rod objects? using which i can tranform the properties of rod.

Regards

Neeraj 

sort List of Instances

$
0
0

Hello,

 I would like to sort list of instances created by

instList = setof(inst cv->instances inst->cellName == "cnf_digi")

result is

"|column_digi(1)|cnf_digi"

"|column_digi(0)|cnf_digi"

"|column_digi(15)|cnf_digi"

"|column_digi(14)|cnf_digi"

"|column_digi(13)|cnf_digi"

"|column_digi(12)|cnf_digi"

"|column_digi(11)|cnf_digi"

"|column_digi(10)|cnf_digi"

"|column_digi(9)|cnf_digi"

"|column_digi(8)|cnf_digi"

"|column_digi(7)|cnf_digi"

"|column_digi(6)|cnf_digi"

"|column_digi(5)|cnf_digi"

"|column_digi(4)|cnf_digi"

"|column_digi(3)|cnf_digi"

"|column_digi(2)|cnf_digi"

 I tried used

(sort instList lambda (A B)(alphalessp (A->name)(B->name))))

But result is

"|column_digi(1)|cnf_digi"

"|column_digi(10)|cnf_digi"

"|column_digi(11)|cnf_digi"

"|column_digi(12)|cnf_digi"

"|column_digi(13)|cnf_digi"

"|column_digi(14)|cnf_digi"

"|column_digi(15)|cnf_digi"

"|column_digi(2)|cnf_digi"

"|column_digi(3)|cnf_digi"

"|column_digi(4)|cnf_digi"

"|column_digi(5)|cnf_digi"

"|column_digi(6)|cnf_digi"

"|column_digi(7)|cnf_digi"

"|column_digi(8)|cnf_digi"

"|column_digi(9)|cnf_digi"

alphalessp doesn't know sort integer in string as lessp. Is there any possibilities how to sort list of instances according to their names without complicated parsing string to integer and use lessp command?

 

Thank you very much for answer in advance.

 

Best regards,

 

Zdenko Janoska

 

Is it possible to specify a variable with rexMatchp?

$
0
0

Hi,

Can we have a variable with rexMatchp?

My requirement is as below:

a = "m_1"

b = '("m_1" "m_1_1" "m_1_2")

c = setof(i  b  !rexMatchp("_[1-9]*$" i)   // This will return nil.

My desired output for c is "m_1" and at the same time, I want to exclude a_[1-9] where a="m_1"

Could you please guide? Is it possible with rexMatchp?

 

Thanks,

Ram 

 

Library Manager bindkeys

$
0
0

Where do I find the library manager bindkeys?

Or what is the syntax to find with  hiGetBindKeys

 

Thanks

p, li { white-space: pre-wrap

Constraint and Modgen SKILL - resulting in incomplete modgen

$
0
0
Hi,

I'm trying to use the code from this Cadence Solution ID: 20024536

; creating modgen group member list
d_cacheId = ciCacheGet( t_schLibName t_schCellName "layout" )
ld_instIds = d_cvLay~>instances
l_constMembers = nil
foreach( d_id ld_instIds
  if( d_id~>pin == nil then
    l_constMembers = cons( list( d_id~>name 'inst ) l_constMembers ) ) ; if
) ; foreach

; modgen constraint
d_constr = ciConCreate( d_cacheId 'modgen ?members ciExpandMembers( l_constMembers )
?params list( list( "numRows" 2 ) list( "numCols" 4 )
list("pattern" "custom ((A A A A) (B B B B)) ((R0 R90 R0 R90) (R0 MY R0 MY))") ) )

After this, I've added this line to auto-generate the modgen layout:

mgGen( d_cvLay d_constr )

The constraint and modgen are indeed getting generated, but the modgen is incomplete - It's created as two rows and four columns as mentioned in the constraint, but the pattern is not followed.

After this if I open the pattern editor manually and click apply, the modgen gets modified to the correct pattern - which means whatever constraint that is created is correct, but somehow the generated modgen group is incorrect.

Please help.

Thanks,
Leo

Viewing all 5101 articles
Browse latest View live


Latest Images

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