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

editing layout in batch mode

$
0
0

Hi all,

There is simple change i need to do in all the layouts of a library. I have written a small skill script to do that change.

What I now do is open each cell and execute the script.

Is there any way I can do this in batch mode so that all the cells get changed in one run of the script?

I use IC 6.1.6-64b.500.6

Thanks,

Arshad


How to do a function call when launch leHiCreateInst() command , then press 'Hide' or 'Cancel' button ?

$
0
0

Hi All , 

How to do a function call (e.g. myfun()) when launch leHiCreateInst()  command , then press 'Hide' or 'Cancel'  button ?

procedure( myfun()

  .....

);pro

Thank you,

Charley

What skill file does the "Layout.toolbars" defined ?

$
0
0

Hi All,

What skill file does the "Layout.toolbars" defined?, and where is it saved ?

because, If I open a layout in IC616, the layout can not open ,

and I got error message in CIW like this :

*Error* hiCreateToolbar: argument for keyword ?title should be a string (type template = "ststlggg") - nil

Best regards,

Marben

Cannot specify the media: IC 06.15.011 RHEL 4.0(lnx86) Base Release Disk 1

$
0
0

Hi everyone,

I am installing Cadence IC 6.15. My system: Linux 6.2 (32 bit). I used "Install Scape" to install Cadence. And I got stuck at this step. Please take a look at the screenshot and give me advice. Thank in advanced.

Remove flashing selection halo when editing in place

$
0
0

Hi,

 

When I am editing in place a layout cellview, I am experiencing a stall/delay in performance everytime the cellview’s flashing halo changes from bright to dark. Is there a way to remove the alternation in the selection halo, so that it remains a single colour? I’m using IC6.1.6-64b.500.8.EHF1167

 

Thanks,

Brian.

install Cadence IC 615 on CentOS 6.2: configure status failed

$
0
0

Hi everyone,

I have install Cadence IC Hotfix_IC06.15.171 on my computer: Linux CentOS 6.2 32 bit. But it seem that the Cadence IC does not support for Linux CentOS 6.2 version. Install Scape can install the Cadence but cannot configure. Please take a look at the screenshot and give me advices. Thank you.

Cadence 5.1.41 & 6.1.5 supported platform

$
0
0

Hi everyone,

I would like to install Cadence IC 5.1.41 and IC 6.1.5 in the same platform. The following link shows that I should install in Linux RHEL 4. However, it seems that the hardware of my computer does not support for RHEL 4 any more. Have you install Cadence IC 5.1.41 in RHEL 5 before? Any suggestion is really appreciated. Thank in advanced.

https://www.cadence.com/rl/Resources/release_info/Supported_Platforms_Matrix.pdf

How to get the corner session or object in the adexl with skill

$
0
0

Hi All

I want to retrieve the information of the corner setup in the ADEXL.

by going through the documents and Forums, I find out how to get the variables and model setup.

but I cannot get the setup of the "tests" inside the corner setup.

Does somebody know how to do it?

another relevant question is that:

from the function of ADE XL (axl*), I can get the handle of the corner.

I'd like to know how to reach the object of the corner from its handle.

As the functions of ADE L ask the object of corner as the input.

Best Regards

Yi


ask the document for data structure of ADE XL setup info.

$
0
0

Hi All

I am newbie in the SKILL.

I'd like to know which document I should read, if I want to know the data structure of ADE XL setup information.

I go through the document for skill function reference for ADE L/XL

there are so many terms of data type: session, tool, object, handle. It would be really helpful if I can know the relation ship among then.


Best Regards

How to change contact overrideParams?(ver. 6.1.6)

$
0
0
We use new via instance from virtuoso IC ver.6. I want to change the number of row or column of via instances by SKILL. When we select a via and click 'q', we see 'Edit Via Properties' window. and then we can change the num of row or column of via by entering a new wanting value. I found the property is viaHeader~>overrideParams and the data structure is a list. So I tried to alter the list to a new changed list and saw this error message like this. *Error* setSGq :(DB-370034): dqSetq: Cannot set attribute - overrideParams How can I solve this problem? Is there any other possibility to do this?

DesignSync relavent functions in Cadence

$
0
0

Hi All

I am not sure whether I post this issue at the right place, but I almost find nothing via google about the DesignSync relavent functions in Cadence. I hope someone here may give me a hint.

the story behind is that:

I try to write a skill script to record the current version of each schematic through the hierarchy. Unfortunately, I do not find the corresponding document either in DesignSync or Cadence.

by looking at the log file of Cadence, I notice that designSync would create a form named "dssViewVHForm". I can change the setup for such form follow the syntax of SKILL, like: dssViewVHForm->libName->value = "myLib". by doing this, I can point the cellview I want to visit. And when I close such Form via "hiFormDone(dssViewVHForm)", a popup window would show the version history of such cellview. Of course, the current version is shown. but this is not what I want.

On the other hand, through trying this, I think there is a callback function has been defined and linked with "dssViewVHForm", but I do not know what it is. And probably what I want might be a function which has been used in the callback function to retrieve the "current version" of specified cellview. Is there a way to log all the used functions when I execute "hiFormDone(dssViewVHForm)", then probably I can find the fucntion I need.

and it would be perfect if someone can tell which function is used to retrieve the current version of specified cellview. I assume it may look like: dssCurrentVersion(myLib myCell myView) => f_versionNumber.

Best Regards

Yi

how to retrieve the hierarchy tree from a design

$
0
0

Hi All

I am trying to right a skill script to record the hierarchy tree from a design, and also record the design version of every used instance view.

I have managed to do the second the part, but still struggle with the first one.

I have read the post from skillprogrammer and Andrew Bechkett

http://community.cadence.com/cadence_technology_forums/f/48/t/26647

The "CCSschTree.il" is a nice code, unfortunately, it is not what I want.

As in the output of "CCSschTree.il", the view type of every sub-blocks is "symbol"

this is reasonable, as the "symbol" of each sub-blocks is indeed used in the upper level schematic.

but on the other hand, this is not the cellview used for simulation.

In the GUI of cadence, the info I need is locates in the "config" cellview, and shown by the "Virtuoso Hierarchy Editor". mainly in the "View to Use" column.

I'd like to know, is there a good way to retrieve such info?


Thanks a lot.

Best Reards

Yi

Calibre error: virserver.tcl error and RVE server socket has not been initialized

$
0
0

Hi all,

I have installed Cadence and Calibre on new computer. I have an error, this is the CDS.log:

Code:
//  Calibre Skill Interface * (v2012.2_17.11) *
//
//                 Copyright Mentor Graphics Corporation 2005
//                             All Rights Reserved.
//         THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
//            WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
//              OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
//
//
ddsWhatsNew()> 
Loading rte.cxt 
virserver.tcl error: /tools/cadence/mentor/calibre12217/ixl_cal_2012.2_17.11/pkgs/icv_comp/bin/tclsh: line 65: tools/cadence/mentor/calibre12217/ixl_cal_2012.2_17.11/pkgs/icv_comp/8.4/bin/tclsh: cannot execute binary file

virserver.tcl error: /tools/cadence/mentor/calibre12217/ixl_cal_2012.2_17.11/pkgs/icv_comp/bin/tclsh: line 65: tools/cadence/mentor/calibre12217/ixl_cal_2012.2_17.11/pkgs/icv_comp/8.4/bin/tclsh: Success

What is the problem? why the same code has different result: cannot execute binary file and Success??

When I try to run Calibre DRC, I have error:


Please help me to fix this problem. Thank you so much.

What's the difference between add a device manually and dbCreateInst? It caused formInitProc failed ..

$
0
0

Dear Andrew:

The most callback work well after I create the instance by dbCreateInst, but when I created the cell with formInitProc, it got the error message - Can't modify attributes of effective CDF parameters, then I can't trigger the callback normally.


I've tried call the function first,as PasCdfFormInit(cdfgData) , and I got the error message "Can't modify attributes of effective CDF parameters"


But if I create the instance manually, the formInitProc function could be run normally, so I think there are some functions be trigger when we add the instance and select to open a CDF form.

What should I do to (after dbCreateInst and before call formInitProc) to make the formInitProc run just like we add an instance and 'q' it manually?  Thanks a lot..

Best Regard,

Arthur

function that get a floating point list

$
0
0

Hello everibody ,

this is my skill code:

procedure(CreateForm()
     let(( mlStartOffset mlOldOffsetA mlNewOffsetA mlOldOffsetB mlNewOffsetB movepins sep3)

        
        mlStartOffset=hiCreateFloatField(
                ?name 'mlStartOffset
                ?prompt "Enter X coordinate to start(e.g.prboundary)"
                )
     mlOldOffsetA=hiCreateFloatField(
                ?name 'mlOldOffsetA
                ?prompt "Enter Old Offset"
                )
     mlOldOffsetB=hiCreateListField(
                ?name 'mlOldOffsetB
                ?prompt "Enter a list of X coord. -OLD Pins position-"
                )
         mlNewOffsetA =hiCreateFloatField(
                ?name 'mlNewOffsetA
                ?prompt "Enter New Offset"
                )
         mlNewOffsetB =hiCreateListField(
                ?name 'mlNewOffsetB
                ?prompt "Enter a list of X coord. -NEW Pins position-"
                )
         movepins=hiCreateButton(
                ?name 'movepins
                ?buttonText "Move Pins after selection"
                ?callback "mlOffsetSelPin()"
                )
    sep3=hiCreateSeparatorField(?name 'sep3);separatore grafico sul menu'
          ;      ?callback "DisplayUserDataForm()"
           ;     )
        hiCreateAppForm(
            ?name 'ExampleForm
            ?formTitle "This skill set a new offset and move pins in new X coordinates"
            ?fields
                list(
                    list(mlStartOffset 0:0 600:30 300)
                    list(mlOldOffsetA 0:30 600:30 300)
                    list(mlOldOffsetB 0:60 600:30 300)
                list(mlNewOffsetA 0:90 600:30 300)
                    list(mlNewOffsetB 0:120 600:30 300)
                    list(movepins 250:170 170:20)
                    list(sep3 0:205 600:0)
                    )
            )
        )
     )
/***************************************************************
*                                                              *
*                      mlOffsetSelPin()                        *
*                                                              *
*              Callback code to move pins                      *
*                                                              *
***************************************************************/
procedure( mlOffsetSelPin()
  let( (oldX oldX1 nblocks1 nblocks oldOffr oldOff newOff newX)
    foreach( i geGetSelectedSet()
        when( i->objType == "rect" && i->purpose == "pin"
            oldX = xCoord(lowerLeft(i->bBox))    ; old X coord
            oldX1 = oldX - mlStartOffset        ; subtract starting offset
            nblocks1 = oldX1/mlOldOffsetA        ; count number of preceding blocks
            nblocks = int( nblocks1 )        ; round it to integer value
            oldOffr = (nblocks1 - nblocks) * mlOldOffsetA    ; calc offset inside the block
            oldOff = round(oldOffr*1000)/1000.0        ; round it to the grid
            ; look for the pin offset
            newOff = 0
            for( n 0 length(mlOldOffsetB)
                when( nth( n mlOldOffsetB ) == oldOff
                    newOff = nth( n mlNewOffsetB)
                )
            )
            ; pin doesn't match the offset list
            if( newOff == 0 then
                printf( "offset not found for pin %s at %L\n" i->net->name lowerLeft(i->bBox) )
            else ; pin found: move it to the new location
                newX = nblocks * mlNewOffsetA +mlStartOffset + newOff
                dbMoveFig(i i->cellView list(newX-oldX:0 "R0"))
            )
        )
    )
  )
)

It doesn't work because I can't find a right way to introduce a list of floating point in mlOldOffsetB mlNewOffsetB variables, to be read in mlOffsetSelPin() procedure.

Could you please help me?? thanks in advance


Drop-down menu disappears from schematic window, moving into layout window when VXL is launched

$
0
0

Hello,

A custom Drop Down menu, skill based, for Virtuoso is showing OK when launching Layout or Schematic windows individually. When VXL is launched from schematic window the Drop Down menu disappears from the schematics window and moves to  the layout window. Upon loading Virtuoso I am loading Triggers.il file as shown below.

Any tip why will be greatly apperciated...


Thanks,

Danny

-----------------------------------------------------------------------------


; LAYOUT Triggers
 procedure(DRSetups(args)

  leSetObjectSelectable("Blockages" nil)
  leSetObjectVisible("Blockages" nil)

  leSetObjectSelectable("Boundaries" nil)
  leSetObjectVisible("Boundaries" nil)

;  leSetObjectSelectable("ruler" nil)
;  leSetObjectVisible("ruler" nil)

;  leSetObjectSelectable("Markers" nil)
;  leSetObjectVisible("Markers" nil)

  ; Turn on all Valid Layer
  leSetAllLayerValid(t)

  ; CAD Utilities
  ; Layout
  UtilitiesMenu()

 ); procedure


;  Schematic Triggers
procedure(schSetups(args)

  ; CAD Utilities
  schUtilitiesMenu()

 ); procedure


;; create a user postinstall trigger that automatically setup

deRegUserTriggers("maskLayout" nil nil 'DRSetups)
deRegUserTriggers("maskLayoutXL" nil nil 'DRSetups)
deRegUserTriggers("maskLayoutGXL" nil nil 'DRSetups)
deRegUserTriggers("schematic" nil nil 'schSetups)
deRegUserTriggers("schematicXL" nil nil 'schSetups)

;;; VXL 6.1.6
------------------------------------------------------------------------------------------

OCEAN script using SKILL

$
0
0

Hello,

I generated the oceanscript from the corners. It is able to run the device corners.

I would like to run temp corners and design variable corner togther with device corners. How can I modified it to incorporate temp corner and design variables corner to the script. 

This is the oceanscript:

;---------------------------------------------
; Ocean script saved using ArtistKit 5.7.2
; ArtistKit 5.7.2 (C) STMicroelectronics
; Feb  5 09:29:11 2015
;---------------------------------------------
(let (dir simulator libName cellName viewName scenarioList)
; ================================================
; INITIALIZE THE .cdsenv FILE
; ================================================
(UartOceanInitCdsenvFile "/net/agt604/es14/home/test/simulation")
; ================================================
; DUMP THE CURRENT SESSION
; ================================================
(setq simulator "spectre")
(setq dir "/net/agt604/es14/home/test/simulation/ocean/spectre/schematic")
simulator('spectre)
(setq libName "playground")
(setq cellName "ocean")
(setq viewName "schematic")
design(libName cellName viewName)
ocnWaveformTool( 'wavescan )
definitionFile(
    "models.scs"
)
analysis('dc ?saveOppoint t  )
desVar(       "ib" 1u   )
temp( 27 )
; ================================================
; INCLUDE THE MODELS FILE AND SET SOME OPTIONS
; ================================================
resultsDir( dir)
definitionFile("models.scs")
; ================================================
; LOOP ON SCENARIOS
; ================================================
; Enable Import Netlist
(UartImportSetState t)
(createNetlist ?recreateAll t ?display nil)
(UartOceanInitResultsData simulator)
(UartOceanCleanOceanDir simulator (strcat dir "/ocean"))
(setq scenarioList '(
"MOSmax" "default" ))
(foreach scenario scenarioList
   (let (waveList)
   ; Switch the scenario
   UartCornerSetupFromOcean(simulator (strcat dir "/netlist") scenario ?screen t ?lcv "playgroundoceanschematic")
   ; Run the simulation
   run()
   ; Extract the output measurements and keep the waveforms
   ; ------------------------------------------------
   (let (measure waveId)
    (when (or (errset (eval VDC("/net2"))) (errset VDC("/net2")))
      (if (or (drIsWaveform (setq waveId (eval VDC("/net2")))) (drIsParamWave (setq waveId (eval VDC("/net2"))))) then
         (setq waveList (cons (list "vdc" waveId) waveList))
      else
         (if (or (drIsWaveform (setq waveId VDC("/net2"))) (drIsParamWave (setq waveId VDC("/net2")))) then
            (setq waveList (cons (list "vdc" waveId) waveList))
         else
            measure = VDC("/net2")
            (info (sprintf nil "      ...%s (%s) = %L\n" "vdc" scenario measure))
            (UartOceanKeepResultsData scenario simulator "vdc" measure)
         )
      )
    )
   )
   ; Plot the outputs
   ; ------------------------------------------------
   (UartOceanPlotSimulationResults ?simulator simulator
       ?scenario scenario
       ?analysisList '("dc")
       ?waveList waveList
   )
 (UartOceanCopyResultsInOceanDir scenario (strcat dir "/psf") (strcat dir "/ocean"))
 )
)
; ================================================
; PRINT OUTPUT MEASUREMENTS
; ================================================
(UartOceanPrintSimulationResults ?simulator simulator
                                 ?outputDir (strcat dir "/ocean")
                                 ?outputFile (strcat simulator ".meas")
                                 ?maxwidth 200
                                 ?referenceScenario "MOSmax"
                                 ?type "scenario"
)
(when (hiGraphicMode) (view (strcat dir "/ocean/" simulator ".meas")))
)
; ================================================
; RESTORE THE .cdsenv FILE
; ================================================
(UartOceanRestoreCdsenvFile)

print the output of a SKILL function to a new file.

$
0
0

Hi.

I want to print the output of a SKILL function to a file. How can I do that.?

I want to print the output of the skill function "axlGetWindowSession()" to a file. This function gives the ADEXL session name.

I tried below example but I see a output file "tmpout" empty. Please help!

tmpout = outfile("./tmpout" "w")
poport = tmpout
(axlGetWindowSession() ; function to get  ADEXLsession
poport=stdout
close(tmpout)

Schematic fanout (drive to load ratio) reporting SKILL code

$
0
0

I am looking for guidance and possibly example code to aid in my creation of a skill routine that allows a user to click on a schematic net (or possibly driving device) and then see a report showing the drive to load ratio (and also report the total W and L for the driving device as well as the total W and L for load devices) for the device driving that net. 

This tool would need to traverse hierarchy to find all pertinent loading.

Any example of similar code which traverses through schematic hierarchy may be useful.

Many thanks!

Ryan

custom let with local variables from list (defmacro)

$
0
0

Hi,

I'm playing around with defmacro (as a defmacro beginner) and I can not succeed :(

I have a list of strings:

myVarList = list( "a" "b" "c" )   ;;any number of parameters, not necessary 3 !

[ or: myVarSymbolList = list( 'a 'b 'c)   ]

I want to define a custom let where my string would be local variable, and I would like to use it like this

myCustomLet( myVarList
  ;; here starts my normal code having a, b and c as local variables
  a = 1    b = 2    c = 3
)

I don't know how to do it properly :(

I tried like this:

(defmacro customLetWithLocalVars (listOfVars @rest code )
    `(let  ,listOfVars ,@code )
)

But it is working only like this:
customLetWithLocalVars(    (a b c)  a=1 b=2 c=3)

and NOT LIKE THIS:

customLetWithLocalVars(   myVarSymbolList   a=1 b=2 c=3 )

:(

Do you have any hints?

Viewing all 5068 articles
Browse latest View live


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