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

How to get Pcell instance pins connection information?

$
0
0

I create a cellview with a Pcell instnace.

And I want to attach the label according to the DGSB for LVS.

I can use the inst->master->terminals->pins to get the DGSB pins correspond coordinate in the cellview. 

Like:

instParentTerminals = inst->master->terminals
foreach(term instParentTerminals
    foreach(pin term->pins

    foreach(pin term->pins
        printf("%L\n" pin->fig->lpp )
    )
        pointList = tconc(pointList dbTransformPoint(centerBox(pin->fig->bBox) inst->transform ) )
    )
    terminalList = tconc(terminalList list( term->name car(pointList) ) )
    pointList = nil

)

But I need to know which metal in the Pcell is connected to these pins due to the figs of these pins are not assigned to the metal directly. ex: S and D are assigned to OD 

Is there any way to get this kind of information?

Or is there any way I can do net tracing in db level rather than open a window and call leMarkNet? It is not a efficient way to do such a thing. 


Add pins via skill to all symbols in lib

$
0
0
I received an IP technology package from the foundry.
The package contains of:
- oa-lib with symbols only
- CDL/Spice netlist

Now I included the oa-lib with symbols and want to import the spice netlist into this library.
The problem is, that all the symbols do not have any supply pin - but the netlist has supply pins for each sub-circuits (e.g. VDD, VSS, VNW, VPW).
The import will fail as long this discrepancy exists.
One way to handle this discrepancy is to add the missing pins to the symbols via skill (there might be other options as well , line global nets, etc., but we would like to have additional pins for flexibility).
I would like to add a VDD pin on top and a VSS pin at the bottom of the symbol for each symbol in the library.

My questions:
1. My skill skills are rather nil, so I am asking if someone can send me a skill-code that I can use as a starter and customize to match my requirements ?

2. Can you share your experience with such IP import into Virtuoso (e.g. for standard-cells or GPIO libs) - is it the common way to do a lot of customization to the IP package ? I would expect to get symbols for the standard-cells for which you can just by the symbol tell if its an AND, NAND, INV, OR - but apparently this is not the case.
3. Is there any other option on how to import this netlist into the lib ?
Thanks
HoWei

The graph can follow the mouse movement function

$
0
0

For example:
1. When creating Via, the preview image of Via can follow the mouse position to move.

2. When creating a Label, the Label will also move with the mouse.

When I use IC616, I want to create a Skill with the following functions,Graphics can follow the mouse movement,

But I don’t know this function. Which function is it?

Thanks

yankun

Break out of a loop early

$
0
0

I am trying to convert an instance hierarchical path to the equivalent cellname path but for some reason my logic returns nil. I can see the path in the final print statement but the return value is not the full path i'm expecting. I guess i'm missing something. This is my code. I will appreciate if somebody can assist with this

procedure( insName2CellName(start cvid path)
prog( (newinst newcv newpath)
     instpath = parseString(path "/")
     printf("Starting with L = %L for %L\n",length(instpath) path)
     istelem = car(instpath)
     instpath = remove(istelem instpath)
     newpath = buildString(instpath "/")

        if(length(instpath) > 1 then 
         newinst=dbFindAnyInstByName(cvid istelem)
         start = strcat(start "/" newinst~>cellName)
          newcv = dbGetAnyInstSwitchMaster(newinst "schematic")
           when(newcv
              insName2CellName(start newcv newpath)
             )
           else
            newinst=dbFindAnyInstByName(cvid istelem)
             start = strcat(start "/" newinst~>cellName)
             printf("Final --> %L\n" start)
             return(start)
              ) 
)
)

result =  insName2CellName(geGetWindowCellView()~>cellName geGetWindowCellView()  "A5/A4/A3/A2/A1")

How to define LABEL ORDER in pvs

$
0
0

Hi 

I wrote this script 

//////////////////////////////
// Map TEXT layer to port names
///////////////////////////////
text_depth -primary;
port -text_layer PO_TEXT M1_TEXT M2_TEXT M3_TEXT M4_TEXT M5_TEXT M6_TEXT M7_TEXT M8_TEXT;
text_layer PO_TEXT M1_TEXT M2_TEXT M3_TEXT M4_TEXT M5_TEXT M6_TEXT M7_TEXT M8_TEXT;


LABEL ORDER ME4 ME3 ME2 ME1 PLY
//Please change following ground and power name as in your design
virtual_connect -colon YES
virtual_connect -name ?VDD? ?VSS? V3IO V0IO VAS VAD VBB VCC DGND
top_layer ME4 VI3 ME3 VI2 ME2 VI1 ME1
base_layer DIFF NWEL DNW PPLUS NPLUS TG PO1 PO2;

and I got this result after run lvs. ERROR show its on LABEL.

TEXT_DEPTH -primary;
PORT -text_layer PO_TEXT M1_TEXT M2_TEXT M3_TEXT M4_TEXT M5_TEXT M6_TEXT M7_TEXT M8_TEXT;
TEXT_LAYER PO_TEXT M1_TEXT M2_TEXT M3_TEXT M4_TEXT M5_TEXT M6_TEXT M7_TEXT M8_TEXT;


[ERROR] Undefined rule 'LABEL' found at line 1262 in file /home/faisal/proj/asic/LUX4210/trunk/testruledecks/RuleDecks/pvs/lvs/rulefiles/G-RPT-CMOS_SENSOR18-1.8V_3.3V-2P4M-MMC_PVS-LVS-B.E-PJ.txt_20200622

VIRTUAL_CONNECT -colon YES;
VIRTUAL_CONNECT -name ?VDD? ?VSS? V3IO V0IO VAS VAD VBB VCC DGND;
TOP_LAYER ME4 VI3 ME3 VI2 ME2 VI1 ME1;

I need an advice how i can define LABEL ORDER

regards

faisal.

performance multiple value vs multiple calls to value in ocean

$
0
0

Hello all.

Let us say that I to loop over samples of waveform wf, starting from point x1, in x2 intervals (time domain).

final_t is the last time point.

This leaves us with two main options.

Either one does for( i 0 floor( (final_point-x1 )/x2 ) )

     y_val=value( wf x1+i*final_point )

;rest of code below.

)

Option 2 would be to create a samples waveform, and loop on its' elemnts:

wf_sampled = drGetWaveformYVec( values( wf x1 ?period x2 ) )

And then do:

for( i 0 sub1( len( wf_sampled ) )

    y_val=drGetElem( wf_sampled i )

 ; rest of code below.

)

The value of val should, IMHO, be the same for each iteration. If not, I may have a bug.

Assuming that RAM is not a limiting factor, should there be a significant performance difference?

I would suspect that this may be the case, if there will a lot of samples, and value always needs to re-access the psfxl file.

Thanks,

Multiple forms inside a window

$
0
0

Hi,

How to instantiate multiple forms inside a window in Skill? Can we add same form twice in a window and maintain its GUI fields unique? 

Please share a sample code for this.

Thank you

Ramakrishnan

To Access user docs (stored in unix area) through Skill & bind keys for internal tool integrated in virtuoso !!!

$
0
0

Hello Everyone,

I have two query for which i need your guidance & help . Please see the queries as below -

 

1. I want to access the user doc (in pdf format stored in unix area) through the skill script . The idea/request is similar to how we access the help documentation from the virtuoso help menu button for various application(I guess it open the corresponding User docs stored in product install area. please correct me if i am wrong). This there is any way to do it ?

2. I want to define various bindkey for a internal tool developed in skill which is integrated inside virtuoso layout suite without overwriting the existing bind key already existing . I came across this-post which seems to be a good solution but just for my understanding is there is another way to do it without defining the code for sequential bindkeys.

Regards

Sonu  


Retutning to previous selected results after using selectResults command

$
0
0

Hello all.

I have an OCEAN script that would require me to use selectResults('instance)

However, I may want to perform afterwards commands such as value( IS( "/V1/PLUS"  0 ).

The results may be in tran, ac, dc, or some unknown, and I would like to have my command return to whatever results were already selected.

Is there a way of doing that? 

Thanks,

Seeking Closest Lisp dialect to Skill (not Skill++)

$
0
0

I am interested what 'Custom IC Skill' readers consider the closest FOSS Linux compatible Lisp dialect to Skill? As the title states, I'm interested Skill, not Skill++. (1)

Why?
My company's Linux/Cadence environment is top notch. The windows loaded hardware, vpn, remote access software, passwords, and surveys required to enter that environment are prohibitive. I'd like to develop functions for coordinate number crunching, layer mapping, etc., in a Linux Lisp environment, and move debugged code to Cadence Skill.

"SKILL and SKILL++ are distinct dialects of LISP and are not either Scheme or Common Lisp or any of the others. They may share similar syntax to the other dialects, but they have different semantics." -- A. Beckett

I don't expect 100% compatibility. I'd like opinions on a good starting point-- e.g. Guile vs SBCL-- minimizing changes when moving to Skill. A Lisp expert colleague suggested (define)ing a familiar dialect to be Skill-like. I like that idea, though I'd like to pick a good starting point.

(1) 'Skill' seems more oft used than 'Skill++' in my area, so I'd like to stick with Skill. I prefer the CL coding style (setq a 0), so I'm not interested in procedural support (a=0).

Thank you for any guidance.

STIMULI control via ocean script

$
0
0

I have an ocean script where I’m running a simulation and I want to set a value for one of the input stimuli (“trm_db”) but for some reason its not letting me do that, I am using this command to set the variable but when I check the maestro view stimuli GUI after running the simulation, I do not see this variable set to this value.

 ocnxlStimuliData(?inputs '(((name "trm_db") (nodes ("trm_db" "/gnd!")) (enabled t) (tranType "dc") (srcType "Voltage") (instParameters (dc("3v") type("dc"))))))

I guess I'm missing something

Create object then use leHiMove or leHiCopy

$
0
0

I want to create an object then use the Hi commands to move or copy the object and possibly create a loop for the function.

I have tried some mouse select or add point but it does not select the object to move.

Paul

Example:

procedure(testLabelLoop(string)
foreach(str parseString(string)
             testLabelFunc(txt))
t
)); end of testLabelLoop

procedure(testLabelFunc(txt)
let( (
(cv geGetEditCellView())
(cw hiGetCurrentWindow())
(defLp list("text" "drawing"))
(jst "centerCenter")
(ort "R0")
(fnt "stick")
(sz 0.015)
(defPt hiGetPoint(getCurrentWindow()))
)
geSelectObject(dbCreateLabel(cv defLp defPt txt jst ort fnt sz))
mouseAddSelectPt()
leHiMove()
)); end of testLabelFunc

How to define inital starting size for dockable window form

$
0
0

I'm creating a GUI in cadence 6.1.7.500.22 and am having trouble defining the initial docked size.

I've tryed using ?dockSizeHint ?minimumSizeHint inside of the hiCreateDockWindow command as well as ?minSize inside of hiCreateLayoutForm but nothing seems to work. Everything else about the gui is performing as expected but this last issue has be stumped. Any help would be greatly appreciated!

Basic outline:

        formName=gensym('JFmtForm)
;All the gui related fields here and then..
        JFmtForm=hiCreateLayoutForm(
                formName
                "Marty Toggles 2.0"
                JFmtTopFormVertBox
                ;?minSize   list(1000 1000)
                ?buttonLayout   'OKCancel
                ?unmapAfterCB   t
        )

        cw=hiGetCurrentWindow()
            swin = hiGetSessionWindow(cw)
            dockForm = hiCreateDockWindow(
                ?appType    "Docked Form"
                ?widgetType "form"
                ?handle     'JFmartyToggles2
                ?title      strcat("Marty Toggles 2.0 - " tech)
                ?form       JFmtForm
                ;?dockSizeHint  list(1000 1000)
                ;?floatSizeHint list(1000 1000)
                ;?minimumSizeHint list(1000 1000)
            )
            
            myDock = hiDockWindow(
                ?window     dockForm
                ?session    swin
                ?side       'right
            )

Error on invoking Skill IDE

$
0
0

Hi

Whenever I invoke the Skill IDE from ciw->Tools->Skill IDE... , I get the following error in the ciw. Though the Skill IDE work as usual without giving any issue.

Loading skillide.cxt
Loading skillDev.cxt
*** Error in routine eval:
Message: *Error* eval: unbound variable - __ilgProfilerWindow
Entering new debug toplevel due to error:
Type (help "debug") for a list of commands or debugQuit to exit the toplevel.

I just want to know if there is a way to eliminate this error.

Thanks and Regards

Saurabh

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


what's the Ocean command to make VIVA fitting all Y to visible X?

$
0
0

hello experts,

in VIVA there's button we can click to fit all Y to visible X. but I'm doing Ocean script to capture the waveform so I'd like to know the equivalent Ocean command to do that....................................................................................

thanks a lot,

David

Change ADE stimuli through skill script.

$
0
0

Is there any function or way to  set/change ADE stimuli  values through skill?

Print the X Y coordinates of the mouse click point in ciw

$
0
0

HI Sir,

 I wanted to X Y of the mouse click in the layout to  be printed in CIW window.

I tried with leHiShowCoord command , but I am not getting how print in CIW.

I searched in TechForms, but couldn't found.be printed i

Thanks

Guru

automatic stack strace for errors.

$
0
0

Hello all. Let's say that I run this code snippet:

procedure( ko(i ) bar( i*2 ) ) procedure( bar( j ) printf( "yo %d\n" ) ) ko( 2.3 )

I get:


*Error* fprintf/sprintf: too many format specs.

However, I need to look and see which procedure was calling  printf.

One could surround snippets of the code with error handling, and then issue an error, but this is, well, rather cumbersome.

I assume that some macro can be

Is there a way to have the stack-trace printed automatically when such error is issued, and/or get the line in the procedure which caused it, or number of step (in this case, 1, or 0, which number one wants to start counting).

Thanks,

list all sub-cells without opening it (schematic & layout)

$
0
0

Hi,

I wanted to know if there is an easy way to list all subcells of a master cell (not only the first level of hierarchy but all levels down (one level above technology/transistor library)) and their reference libraries in a .txt or .csv file.

I want to check if all cells in a certain hierarchy are with their last versions. If not, then I replace them with the latest version.

I appreciate your help in advance.

Viewing all 5066 articles
Browse latest View live


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