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

Is there a way i can cretea a function on the fly?

$
0
0

Hi,

May i know is there are way to create function at the fly. Meanings that create a control loop flow script to create unique function name.

Example as below (But this doesn't works)

foreach( ele list( list("funcA" funcB") list("funC" "funcD"))

    newFunctionName = stringToSymbol(strcat( car(ele) cadr(ele) ))

    (defun newFunctionName args

          (printf "Hello World - %L\n" args))

)

 

My intention is to create a function at the fly.Any idea? Is this possible? 

 

 


Cell name as a pcell variable

$
0
0

Hi,

I have developed a skill based pcell for a particluar device. One of the parameters for the pcell is a string which is the name of a cell in the library I am working. It works fine, but when I try  copy these pcells into a diferent library I do not see these cells copied since cadence thinks they are just properties. The limitation I have with the code is I need to pass the names of the cells as parameters . When I do this I exprerience these problems.  I would really appreciate if someone could tell me if there is a way around.

Thanks

C. 

Adding gds number to LSW display

$
0
0

Is there a way to add layer gds stream numbers (extracted from the techfile with the lpp) to the LSW display?

I am using v5.1.41

schViewToView

$
0
0

Hi all,

  I want to write a skill file to update standard cell librarie all symbols  with VDD/VSS pins.

There exits all symbol view.

When I use the  "schViewToView()" function, I want to select the "Modify" function.

How could I do the job automatically?

Thanks for your great help!

 

Best regards,

E-Jen 

 

 

How to get entire net in layout

$
0
0

 Hi all,

           I need to get entire net in a layout(Power plot) . For example If I specified net name 'VDD' then it will take all layers which are connected to VDD net and copy them in new layout. Please suggest me about this.

Thank You,

Sarvani.

Strange error putprop

$
0
0

 Hi,

       I am  running a script (pasted below) in Ocean. The simulations have already finished fine. This script just selects the run and extracts measurements from it. It runs fine for a few iterations then it gives me this error (on the 12th iteration)

 *Error* putprop: first arg must be either symbol, list, defstruct or user type - nil

 This happens right after the plot command of IBIAS_FIN since I see this on the terminal:

*Warning* Wave82 is not a waveform object that can be displayed and
          will be DELETED automatically.
          name: "IBIAS_FIN"

 But if I restart the script onwards from the 12th iteration, the12th iteration works fine it shows the same problem on the 13th iteration. If I execute the script commands 1 at a time for the 12th iteration they work fine.

   Please help me figure out why I am getting this error. These measurement statements are from the ocean script generated by ADE, I did not change them so I don't know why they cause a problem.

 

Thanks,

Milind

 

 

OCEAN SCRIPT:

 

for(i 1 54
    sprintf(corDir "%s%d/psf" "/home/milind/BIAS_TB_TRAN/corner" i)
    openResults(corDir )
    IBIAS_TEMP = IS("/I0/M38/D")
    plot( IBIAS_TEMP ?expr '( "IBIAS_TEMP" ) )
    IBIAS_FIN = value(IS("/I0/M38/D") VAR("gt"))
    plot( IBIAS_FIN ?expr '( "IBIAS_FIN" ) )
    IBIAS_AT_POK = value(IT("/I0/M38/D") cross(VT("/POK") (VAR("vsup") / 2) 1 "rising" nil nil))
    plot( IBIAS_AT_POK ?expr '( "IBIAS_AT_POK" ) )
    POK_Time = cross(VT("/POK") (VAR("vsup") / 2) 1 "rising" nil nil)
    plot( POK_Time ?expr '( "POK_Time" ) )
    IBIAS_DC = IDC("/I0/M38/D")
    plot( IBIAS_DC ?expr '( "IBIAS_DC" ) )
    ISUP_DC = IDC("/V0/MINUS")
    plot( ISUP_DC ?expr '( "ISUP_DC" ) )
    ISUP_FIN = value(IT("/V0/MINUS") VAR("gt"))
    plot( ISUP_FIN ?expr '( "ISUP_FIN" ) )
    IBIAS_AFGL = value(IS("/I0/M38/D") (2 * VAR("gt")))
    plot( IBIAS_AFGL ?expr '( "IBIAS_AFGL" ) )
    ISUP_AFGL = value(IT("/V0/MINUS") (2 * VAR("gt")))
    plot( ISUP_AFGL ?expr '( "ISUP_AFGL" ) )
    POK = VT("/POK")
    plot( POK ?expr '( "POK" ) )
    VSUP = VT("/VDD")
    plot( VSUP ?expr '( "VSUP" ) )
    IBIAS = IT("/I0/M38/D")
    plot( IBIAS ?expr '( "IBIAS" ) )
    LG_Phase = phaseDegUnwrapped(getData("loopGain" ?result "stb"))
    plot( LG_Phase ?expr '( "LG_Phase" ) )
    LG_dB20 = db(mag(getData("loopGain" ?result "stb")))
    plot( LG_dB20 ?expr '( "LG_dB20" ) )
    Phase_Margin = value(getData("phaseMargin" ?result "tran_stb_margin-tran_margin.stb") 0.01)
    plot( Phase_Margin ?expr '( "Phase_Margin" ) )
    PM_Freq = value(getData("phaseMarginFreq" ?result "tran_stb_margin-tran_margin.stb") 0.01)
    plot( PM_Freq ?expr '( "PM_Freq" ) )
    Gain_Margin = value(getData("gainMargin" ?result "tran_stb_margin-tran_margin.stb") 0.01)
    plot( Gain_Margin ?expr '( "Gain_Margin" ) )
    GM_Freq = value(getData("gainMarginFreq" ?result "tran_stb_margin-tran_margin.stb") 0.01)
    plot( GM_Freq ?expr '( "GM_Freq" ) )
    LG_DC = value(value(dB20(getData("loopGain" ?result "tran_stb-tran_stb")) 1e-05) "time" 0.01)
    plot( LG_DC ?expr '( "LG_DC" ) )
   
    if(i==1 then
        fileHandle = outfile("/home/milind/BIAS_TB_TRAN/data.csv" "w")
        ocnPrint( ?output fileHandle ?numberNotation 'engineering  "vdd=5" "ttttttt" "-40" Phase_Margin PM_Freq )
        close(fileHandle)
    else
        fileHandle = outfile("/home/milind/BIAS_TB_TRAN/data.csv" "a")
        ocnPrint( ?output fileHandle ?numberNotation 'engineering  "vdd=5" "ttttttt" "-40" Phase_Margin PM_Freq )
        close(fileHandle)   
    )
)

Pcell symbol creation using SKILL

$
0
0

Hi,

 

I'm using SKILL code as below to generate a Pcell symbol (i.e. number of symbol terminals depend on CDF parameter).

However, every time when I load these code in CIW (i.e. IC615) into a library which attached to cdsDefaultTechLib, it will complain below warnings:

 *WARNING* (DB-270000): dbiSetCellViewDBUPerUU: The DBUPerUU attribute for viewType 'schematicSymbol' cannot be set to 1000 because it would introduce conflicts in the specified tech graph

 *WARNING* (DB-270000): dbSetCellViewUserUnitName: The UserUnits attribute for viewType 'schematicSymbol' cannot be set to 'micron' because it would introduce conflicts in the specified tech graph

 

The generated symbol seems to have incorrect size and scaling. Anyone knows how to workaround this?

 

=================================================================================

 pcDefinePCell(
    ; target cellView
    list(ddGetObj("test") "myparsubckt" "symbol" "schematicSymbol")

    ; formal parameters
    (
    (padNum 1)
    )

    let((dY justify1 labelId netId
        rectId s
        xEnd xLabel2 xLoc yLoc sc
        h xShape yShape
    )
    pcCellView~>DBUPerUU=1000.0
    pcCellView~>userUnits="micron"
    sc = 0.16
    h = padNum
    dY = (h - 1) * 0.125
    xLoc = 0.625
    ;----------------------------------------------------------------
    ; Create outline
    ;----------------------------------------------------------------
    dbCreateRect(pcCellView
        '("device" "drawing")
        list(0.125 * sc:-0.135 * sc
        0.5 * sc:(0.17 + dY) * sc
        )
    )
    dbCreateRect(pcCellView
        '("instance" "drawing")
        list(0 * sc:-0.25 * sc
        xLoc * sc:(0.17 + dY) * sc
        )
    )
    ;----------------------------------------------------------------
    ; Labels
    ;----------------------------------------------------------------
    sprintf(s "Parasitic Network")
    dbCreateLabel(pcCellView
        '("pin" "label")
        0.3125 * sc:(0.12 + dY) * sc s "centerCenter"
        "R0" "stick"
        0.05 * sc
    )
    labelId = dbCreateLabel(pcCellView
        '("annotate" "drawing7")
        xLoc * sc:(0.2275 + dY) * sc "cdsName()" "upperRight"
        "R0" "stick"
        0.05 * sc
        )
    labelId~>labelType="ILLabel"
    ;----------------------------------------------------------------
    ; Pins
    ;----------------------------------------------------------------
    for(i 1 padNum
        yLoc = (h - i) * 0.125
        xLoc = 0
        xEnd = 0.155
        justify1 = "lowerRight"
        xLabel2 = 0.15625
        xShape = 0.15625
        yShape = ((h - i) * 0.125)
        dbCreateRect(pcCellView
        '("device" "drawing")
        list(xShape * sc:(yShape - 0.05) * sc
            (xShape + 0.1) * sc:(yShape + 0.05) * sc
        )
        )
        dbCreateLine(pcCellView
        '("device" "drawing")
        list(xLoc * sc:yLoc * sc
            xEnd * sc:yLoc * sc
        )
        )
        rectId = dbCreateRect(pcCellView
            '("pin" "drawing")
            list((xLoc - 0.025) * sc:(yLoc - 0.025) * sc
            (xLoc + 0.025) * sc:(yLoc + 0.025) * sc
            )
        )
        sprintf(s "p%d" i)
        netId = dbCreateNet(pcCellView s)
        dbCreateTerm(netId s "inputOutput")
        dbCreatePin(netId rectId)
        sprintf(s "cdsTerm(p%d)" i)
        labelId = dbCreateLabel(pcCellView
            '("annotate" "drawing8")
            xLoc * sc:(yLoc + 0.0625) * sc s justify1
            "R0" "stick"
            0.05 * sc
        )
        labelId~>labelType="ILLabel"
    )
    for(i 1 padNum
        yLoc = (h - i) * 0.125
        xLoc = 0.625
        xEnd = 0.5
        justify1 = "centerLeft"
        xLabel2 = 0.29
        sprintf(s "b%d" i)
        dbCreateLabel(pcCellView
        '("pin" "drawing")
        xLabel2 * sc:yLoc * sc s justify1
        "R0" "stick"
        0.05 * sc
        )
    )
    t
    )
)

 =================================================================================

 

SKILL Variable

$
0
0

I am new to Cadence SKILL. I am trying to understand a SKILL script file containing many procedures. Many of these procedures use a variable which holds a constant list. But it doesn't seem to be assigned anywhere in the script file. Can you suggest any possible place from where it could be assigned? Is there any way in SKILL to import variables from another file?


How to create a browser in form?

$
0
0

 Hi all,

 

 I have a skill program for form. In that I want to browse library, cell name. Could you please give me the example program to get browse option.

 

 Thanks,

  Nani.

StreamOutTemplate files of IC615 and IC5141 are same or not?

$
0
0

 Hi all,

         I am tring to run streamout for whole library  in IC615 using a code( abWriteLibGDS.il) which is works well in IC5141 version. But i am unable to exicute streamout in IC615(i have used streamout template file of 5141). Please let me know is there any change in streamouttemplate file format. 

Thank you,

Sarvani.

monteSelectResults!

$
0
0

Hello,

    could anyone give me a short example of using "monteSelectResults" ? I just know we can use this command to open and select the monte carlo analysis results "mcdata" . my question is that , for example,  the mcdata contains 100 scalar data from 100 times montecarlo run, how can I pick each scalar data up, such as 1.00085 for the first run and 1.00036 for the second run. i want to select everyone and save it in a list or a variable. in fact, i didn't find how the mcdata is saved in cadence database. any suggestion?

regards,

zfeng 

Unable to get default via spacings and enclosure

$
0
0

 Hi all,

           I didn't able to get dafault enclosure and cutspacings of via in layout(IC5141). When I invoke the tool in same directory with others user Id( colleague ) then it able to get those values. Please let me know what's the problem.

Thank You,

Sarvani.

How to change viewName of the pin in schematic view by Skill?

$
0
0

 Hi all!

Is it possible to change view name of the instance by the skill code? The question is, that I have in schematic view "iopin" instances with viewName "symbolr" and I need to change it on "symbol", I try to do it from instHeader:

    inst = setof(i pcCV->instances i->cellName == "iopin" && i->viewName == "symbolr");
  
   foreach(i inst
      dbSetInstHeaderMasterName(i~>instHeader i~>instHeader~>libName i~>instHeader~>cellName "symbol") ;
    );end foreach

But in result I have WARNING message:

 *WARNING* can't set two instHeaders to the same master

 

Any ideas?

Determine corner associated with run number in Ocean simulation

$
0
0

I am writing an application to auto-generate an Ocean script based off some input parameters. This ocean script runs simple AC, DC, and transient simulations, and defines three corners. I am trying to formulate the results into a table format.

When generating the Ocean script, I can utilize ocnPrint() to print the desired wave. In a few cases, due to some oddities with Ocean's measure functions, I have to go into each run number directory and select the wave for that run number. The problem I'm facing is that I have no way to tell my application which run number corresponds to which corner, as it seems that's determined at simulation time.

I've combed the Ocean documentation and these forums, but haven't seen anything talking about this. I apologize if I've missed something obvious.

I'm using IC6.1.500.9

waveform object as function argument

$
0
0

Does anyone know why this is happening? wave is a parametric waveform.

 procedure( printWave(wave)

   plot(wave) ; this works fine

   plot( value(wave "param1" value1) )  ;this does not work, it says the argument is not a waveform

)

 

If I do the latter statement outside of the procedure, it works fine. Any suggestions? Thanks!

 


redirecting the log from CIW to file for forms with nested procedures

$
0
0

Hi,

Is there a way to redirect the log from CIW to a log file when you have multiple procedures that are being called.

I have seen the command hiStartLog() and hiEndLog() which will allow you to send all log data to an additional second file for a sinlge function.As there are multiple callbacks(nested functions) in case of forms etc  the same cannot be used in that case.

Is there any other option to save the log?

Thanks ,

Chikva.

How to change via level with skill in IC6

$
0
0

 In IC6, I have a bindkey which change via level (via1 to via2) . Main part of the code is:

; Current selected via
viaToBeChanged=car(geGetSelSet())

; new via identifier
newVia=dbOpenCellViewByType( technName viaName "layout" nil "r")
if( newVia then
  viaToBeChanged~>master=newVia
)

Do you know how doing the same thing in IC6 ?

Thanks in advance

Eric

How to view adexl in GUI mode?

$
0
0

Hi All,

I' am running ocean XL in batch mode. I use ocnxlSaveSetupAs function to create the adexl view. Here's the context using the function:

ocnxlSaveSetupAs("myLib" "myCell" "adexl")

My runs are finishing/executing fine during batch mode. When I try to open the generated adexl in GUI mode, It's always the "Welcome to ADE XL" that I' am seeing. I can't view the generated adexl and there are no Tests in Data View tab. How can I view my generated adexl(using batch mode) in GUI mode?

Thanks and Regards,

Reinice

How to get a pop-up in foreground (when LibMgr refreshes)

$
0
0

 Hello,

 I'm adding some menus in the library manager to get an SVN plug-in (based on some scripts from Poojan Wagh) and everything's going fine apart for the display of the pop-up forms. They appear where the mouse is clicked but always behind the Library Manager... quite unpractical!

 I've made some trials and it seems the form pops-up in foreground but LibMgr refreshes right after.

So in the cdsLibMgr.il, adding the menu looks like this 

lmgrCreateMenuItem("Menu_svnStLib" "simple"
  '(("label" "SVN Status")
    ("callback" ("svnStLib" "updateIf"))
;    ("callback" ("svnStLib" "noOpts" ))
  )
)
lmgrAddMenuItems("designCascade" "L" '("Menu_svnStLib"))

and in the procedure itself (buttons defined in the 1st "..."):

    procedure(svnStLib(reason Lib Cell View file cat)

...

svnStLibForm = hiCreateAppForm(
   ?name `svnStLibForm
   ?fields list(newLibField newStTypeButton newAdexlButton newbrowser)
   ?formTitle "Status Library"
   ?callback "svnStLibFormCB( svnStLibForm )"
   ?dontBlock t
      )

...

hiDisplayForm( svnStLibForm '(-1 -1) )
;    svnStLibForm->refresh
) ; end of procedure

Now, I've tried with and without the refresh; with it, I get directly my form behind the LibMgr and without I get a pop-up for a refresh and when clicking ok, then my form appears in foreground... thus I think that the refresh (which has to happen at the end of the procedure) may be the cause for this...

I've also tried to put "noOpts" instead of "updateIf" in the createMenuItem of the cdsLibMgr.il; then I don't need any refresh in the procedure anymore, but my form still appears in the background instead of the foreground.
Last point, when copying several times (3x) the line with hiDisplayForm(), I get the form still in background but with focus (i.e. I can change the fields directly from keyboard eventhough I don't see the whole form).

I admit I'm a bit lost about this Display behavior. Is anybody familiar with this?

 Thanks in advance,
Matthieu

create pin in the layout

$
0
0

Hi All,

 Is there any possibility to create pin in the layout where I click the mouse soon after loading the script? If yes,how?

Thanks,

Sritha.

Viewing all 5066 articles
Browse latest View live


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