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

Skipping symbol mismatch during check and save of schematic views

$
0
0

Hello,

When i save a schematic view, if there are any pin mismatch with the symbol view, GUI will give a warning that there is a symbol mismatch and whether to update symbol or not.

Using SKILL will I be able to skip these symbol cross checking? Also how to save a schematic without updating the symbol?

One more doubt is, I can see many views with names like schematic_model (schematic_*) . What is the significance of these views.


How to know the cut class of via which is already created

$
0
0

HI , i am trying to access various parameters of via like via definition , rows, columns, cut class etc. through SKILL.

I found other parameters but din''t get how to get thecut class of via. can anyone help me on this.

Thanks

Sathish N

skill to convert (("metal1" "drawing")) to "metal1 drawing"

$
0
0

Hi 

I am working on the skill develop, and I get the value from geGetSelSet()~>lpp of a selected metal1,  how can i convert  ("metal1" "drawing") to ("metal1 drawing") in skill?

Thanks a lot

pcell shapes filtering

$
0
0

Hi ,

I started with skill learning

instID~>master~>shapes~>?? gives list of all layers used in p-cell. Now I want to have access to only poly and diffusion layers to read their bBOX.  Is there a way to do this ?

Thanks,

Surya

Search and replace in a sub list

$
0
0

Hi

I would like to do a search and replace in a sub list.

suppose I have : myList = list(list("a" "b") list("c" "d"))

the list can also be myList = list(list("c" "d" "e") list("a" "b" "f"))

the sublist length is not constant

I don't know in advance where the character is in the list. the only Information I have is the variable "myList", the character I need to search "b" and the string I need to replace "newB"

how can I replace "b" by "newB"

result:

 myList =(("a" "newB") ("c" "d")) or myList = (("c" "d" "e") ("a" "newB" "f"))

thanks for help

Function to create or edit mouse popup gui

$
0
0

I lost or forgot what was the function to create or edit the mouse popup gui.

Paul

geHiDragFig interrupt issues

$
0
0

Hello,

I had some difficulty in trapping user interaction with the geHiDragFig function.  When the command is invoked in a skill script it requires a source point and destination point.  Anytime after the command is invoked the user might start another command or bindkey thus interrupting but not ending the geHiDragFig function.  This causes issues that need to be avoided.  Is there a way, in skill code, to trap and prevent user interaction other than what is expected for the command?  

Thank you,

Adam

Open ADE-XL in graphical mode via SKILL

$
0
0

Hello,

is there a SKILL command  to open a ADE-XL view, so that a new ADE-XL window will be shown? So basically I need the underlaying SKILL command when someone double-clicks on a ADE-XL view in the Library-Manager.

Kind regards,

Matthias


I want to assign an element of list to some pointer/attribute to access that element easily instead of using car/cdr ???

$
0
0

Hi ,

I am using following procedure to have a result I needed in list format.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure(abNetInfolist(@optional (cellView geGetEditCellView()))

NetInfo=list()
foreach(conns cellView~>conns

t_Netinfo=list(nil)

t_NetInfo=list(conns~>name conns~>net~>name)

NetInfo=append1(NetInfo t_NetInfo)

) printf("%L" NetInfo));

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

If Result for some selected instance looks something like this in list format :

(("s" "vss"))

Now I want to assign first element in each list i.e: "s" to some pointer eg; TERMNAME & second element of list i.e; ("vss") to some pointer eg: NETNAME. Is there a way to do this ?

Thanks,

Raghu

get via coloring

$
0
0

Is there another method of getting and setting the via coloring?

I had a used a script to get and set via coloring but it doesnt seem to work now.

The via is a stdVia with mask2Color locked on layer2 as indicated from the property gui

I have tried

dbGetViaLayerControl

dbGetViaCutLayerControl

dbGetViaLayer1Control

dbGetViaLayer2Control

dbIsViaColorStateLayerLocked

dbGetViaLayerNumColorMasks

All return noColor, noShift or nil

Paul

fixed Menus id

$
0
0

Hello,

Is there any SKILL function/method to obtain a list of all open fixed Menus id's?

Thank you in advance.

how to get the name of a dockable window in a Layout window

$
0
0

Hi all,

I want to find the name of a dockable window within a Layout window. 

For example, in one of my layouts, i turn on the 'Track Pattern' window on the right of my layout window and in the CIW window, i see the following cmd show up, 'hiUnmapWindow(dwindow('TPAsst_9')) when(dwindow('TPAsst_9) hiMapWindow(dwindow('TPAsst_9)))'. From this cmd, TPAsst_9 is the name of the Track Pattern window. however, if i open another layout, and open the Track Pattern window, the name of the Track Pattern window will be different. 

so my question is, is there a way to find the name of the Tracck Pattern window??

Thanks. Let me know if I didnt express the question clearly.

variable scopes within cdf files

$
0
0

I have a myCell.cdf file that is being used to create the cdf. A stripped down version of the file is:

LIBRARY = "myLib"
CELL = "myCell"
let( ( libId cellId cdfId )
unless( cellId = ddGetObj( LIBRARY CELL ) error( "Can't find cell: %s." CELL ) )
when( cdfId = cdfGetBaseCellCDF( cellId ) cdfDeleteCDF( cdfId ) )
cdfId = cdfCreateBaseCellCDF( cellId )

cdfCreateParam( cdfId
?name "X"
?prompt "X"
?defValue "0"
?type "string"
?storeDefault "yes"
?callback "letseq( a bunch of code goes here )"
)

cdfCreateParam( cdfId
?name "Y"
?prompt "Y"
?defValue "0"
?type "string"
?storeDefault "yes"
?callback "letseq( a bunch of code goes here )"
)
)


All of the cdf parameter callbacks share a few common constants that are expensive to figure out (especially on a per-callback basis). If I declare those common constants at the top (above all the cdfCreateParam functions) will the callbacks always have access to them and is the scope of those constants limited only to the cdf in which they are declared?

I'm pretty sure the answer is yes but just wanted some assurance before doing a lot of work.

ocean script, sens analysis and ?addInstancesUsingWildcards option

$
0
0

Hi there,

I want to know if ?addInstancesUsingWildcards  is a valid option of an ocean statement like below (spectre simulator, cadence v6.1.7).

analysis('sens ?analyses_list list("dcOp" "dc" "ac")  ?net list("/out") ?addInstancesUsingWildcards "I0.M2 I0.M3"  )

just found such statement in some code that I have to maintain.

Also, where I can find some documentation about addInstancesUsingWildcards option?

The only thing that I've found are those two links, not too many details:

https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000007McMdEAK&pageName=ArticleContent&sq=005d00000042vf9AAA_201813182645915
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000uYaKEAU&pageName=ArticleContent&sq=005d00000042vf9AAA_201813182645915

Thanks,

Marcel

how to make 2 lists independent to each other

$
0
0

Hi,

I have a weird problem in my skill code that I can't explain. I need help for the explanation.

aList = list(list("a" "1") list("b" "2") list("c" "3") list("d" "4") list("e" "5") list("f" "6") list("g" "7") list("h" "8"))

bList = list("a" "b" "d" "g" "i" "j")

newList = nil

foreach(subList bList

findList = assoc(subList aList)

if(findList then

newList = cons(findList newList)

)

)

foreach(subList newList

if(member("b" subList) then

rplaca( member("b" subList) "bb")

)

)

the result is :

newList = (("g" "7") ("d" "4") ("bb" "2") ("a" "1"))

aList = (("a" "1") ("bb" "2") ("c" "3") ("d" "4") ("e" "5") ("f" "6") ("g" "7") ("h" "8"))

why aList also changed?

Does those 2 lists a linked somewhere?

How can I make them independent? So when I change the newList, it doesn't change in aList.

Thanks

Yu Hao


skill command for layout execution

$
0
0

Hi,

I am trying to get familiar with skill by following commands printed on CIW. There are few layout related questions on that. 
1)  These are the set of commands that get printed when I execute “generate all from source” from virtuoso layout editor.
        lxHiReInitDesign()
        hiiSetCurrentForm('lxTemplateForm)
        lxTemplateForm->templateTab->page1->pMinSep->value=1.0
        hiFormDone(lxTemplateForm)
When I execute them in skill file, the interactive window appears and asks for user input. How do I pass the user input in the skill file itself as function argument.  
2) For the interdigitization, I see set of commands get executed when modGen is called, some of them are shown below. But the same commands fail to work from skill. What function call with arguments should I use to interdigitate for example two transistors with 2 fingers each with a pattern ABBA.
mgCreateOrEdit(geGetEditCellView() “nil” “nil")
mgPatternCB()
hiiSetCurrentForm('patternForm)
patternForm->g_patternRadio->value= "Customize"
hiFormDone(patternForm)
mgAbutAllCB()
3) I am calling chip level routing assembly from skill the following way.
        ipcBeginProcess("/package/eda/cadence/IC616/tools/iccraft/bin/vcar -lib tutorial -cell amplifierDemo -view layout.routed.routed  -constraintGroup virtuosoDefaultSetup  -protectPreRoutes  -o router_01-31-2018_17:13:26.log”)
When I execute detailed routing on the new window, I do not see any command appearing on CIW, may be because the routing tool runs independent from virtuoso. What function call would be involved after the command above to run detailed routing with say 25 passes. I am guessing same problem would occur while invoking calibre drc, lvs and then passing arguments on them. 
Regards
Supriyo

search list and return the match list

$
0
0

The case is like below:

I have two list like

LIST1= list("at" "ad" "ap")

LIST2=list("dad" "bad" "god" "dog" map" "lap" "glad")

What I want to do is search the LIST2 with the key word listed in LIST1, if match , ADD the match item to the new list LIST3

so for this case , the return value should be LIST3=("dad" "bad" "map" )

Anyone can give some advise or share the code?

Thanks

Kevin

How to activate "Highlight Individual Shapes" in leMarkNet( ), WITHOUT invoking the "MarkNet Options" form

$
0
0

First off, happy Friday to all ! Enjoy Super Bowl, along the side of this post..

Apparently, "MarkNet Options" allows MarkNet to highlight individual shapes through GUI (F9 + F3), in Virtuoso layout editor.

I'm trying to achieve the same programmably, by calling leMarkNet() at the command line.

Unfortunately, that only gives me the contours, not individual shapes.

Is there a quick way around this?

Thanks.

Daniel

p.s

A failed attempt:

Tried le0MarkNetForm~>optionTabs~>page1~>markNetHighlightIndividualShapes~>value = t

this works very well, ONLY after "MarkNet Options" form has been graphically displayed once. Or else, if complains the form does not exist..

skill code needed for connecting via on device to corresponding net below pcell

$
0
0

Hi ,

Suppose I know the net names of via's placed on device & corresponding nets in some metal are running below the device. Is there any function in SKILL which can be used to connect via's to corresponding nets

Thanks,

Raghu

How to rename a cell and re-reference in top level schematic

$
0
0

Hi 

I want to change my cell names and add a prefix to all of them. Then I need to re-reference my top level schematic to the new cells. 

One way to do this is to manually change the cell names and use "find" function in schematic to replace the cells. But it will take ages. So, I was wondering if there is a simpler way for doing this. I think there should be a skill code but couldn't find it.

Many thanks.

Viewing all 5101 articles
Browse latest View live


Latest Images

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