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

question about pcell SKILL code

$
0
0

Hi

I got a legacy SKILL code for pcell from the company and need to modify it. Could someone explain to me the purpose of using dbReplacProp shown below ? I cannot find the info about it in Cadence documentation. Could I remove these two lines from pcDefinePCEll definition.

pcDefinePCell(list(ddGetObj(globaldata->library_name) "testa" "layout") 

...

   dbReplaceProp(pcCellView "viewSubType" "string" "maskLayoutParamCell")
   dbReplaceProp(pcCellView "function" "string" "transistor")

)

Thanks,

MC


Create custom ruler to report pre- or post-shrink value

$
0
0

Hi,

We're working on a product in a technology which gets shrunk down. What we draw in the layout in a layout editor window, will be shrunk down by 0.855. So a drawn dimension of 1um (1000nm) becomes 0.855um (855nm). Currently we're in the floorplanning phase and in discussions about the final die-size. So every time I measure the new die-size (after more and more blocks report a more realistic area), I have to remember to apply this scaling factor before I report any new values.

With the bindkey <k>  the default ruler can be used to measure, and this ruler measures drawn dimensions. I'd like to have somehting like <shift.><k> to give me a ruler which applies the scaling factor to the measurement. Preferably in a different collor to be able to destinguish from one another.

Is this possible? Can I define my own ruler?

Thank you in advance.

With kind regards,

Sjoerd

How can I get the name of all instances in schematic

$
0
0

Hi,

I would like to get the name of all the instances in a given schematic. It would be even better if I could narrow down the list to MOSFETs only.

Thanks in advance.

Best regards,

Pedro 

Code to always open cellview at draw level 0, and at a certain view distance to set the resolution to low

$
0
0

Hi,

I am hoping to have all layout cellviews open with draw level 0, so as to prevent any unnecessary delay from drawing large cellviews with resolution set to high.

Also, would it be possible to automatically set the resolution detail level to low at a certain view distance prior to drawing? This is as sometimes when using resolution of very high when zoomed in, when I mistakenly do a full fit at top level with all layers visible the program hangs as it tries to draw everything.

Finally, when this happens, Ctrl C does not always seem to work to rescue the session. Is there anything else that can be done here to pull the session back?

I am wondering can any of the above be implemented in skill, and if so could anyone help me with how to do so?

Thanks,

Brian.

passing variable for plot expression in plot() COMMAND

$
0
0

Dear All,

I want to pass  a variable for wave expression in plot() .

The below command gives the wave name as waveName

plot(drCreateWaveform(drCreateVec('double xList) drCreateVec('double yList)) ?expr '("waveName") )

If I want to pass a variable to ?expr '(" "), how it can be done ?

Kind Regards,

Command Append1() is not working in a for loop

$
0
0

Dear All,

I am trying to append the waveforms created by  drCreateWaveform() in a for loop.

My code looks like;-

A=list()

for( ITR  1  2

    ..................

      WAVE=drCreateWaveform(drCreateVec('double xList) drCreateVec('double yList))
      A=append1(A,WAVE) 

)

But A is having only one element in the list after the end of the loop. 

Can anybody please help me in this issue

Copy synchronous clones between layout views

$
0
0

Greetings!

After some search on the topic, I decided to start a new post for this question. Much appreciate your help in advance.

I notice when using leHiCopy() to copy clone groups from one layout view to another layout view, the synchronous information is lost..

Is there a way to preserve such info?

If not, I was about to save the info first, then reconstruct it after the copy happens, assuming predictability in how Virtuoso renames figure groups.

Regards,

Duo 

SKILL commands for setting ViVA windowbackground color and the font size of the axis Labels and axis tic values.

$
0
0

Dear All,

Are there any SKILL commands for setting ViVA a) windowbackground color and b) the font size of the axis Labels and  c) axis tic values ?

Kind Regards,


String field that stores history of inputs

$
0
0

Hi,

Please let me know if we have a string field in SKILL GUI that stores the history of inputs.

Possibly, it may have a drop down arrow button, which when clicked, will give all the previous inputs of the string field.

Thanks,
Mallikarjun

How to pass the file name as a variable to vsource as PWL type

$
0
0

Dear All,

We can directly give the filename in vsource when it is as PWL source type.

Is there a way we can pass the file name as a variable to vsource as PWL type ?

I need to change the file name for different corners.

How to get the properties like width, number of legs of an instance present in a schematic

$
0
0

Hi..
I want to know the properties of an schematic instance when we query the instance using skill.
For example width of the instance or number of legs or name of the instance.

I am opening the schematic by its library,and cell name in schematic view in db mode

test = dbOpenCellViewByType("library" "cellname" "view")

test~>instances 

by this i am getting dbids of all instances.

so what to do next to get select each instance and get the properties of that

Thanks in advance for the solution

Tree data of a CBB

$
0
0

Hi.I want to generate a file(xlsx) which contains the data of a CBB,like all its hierarchies with their properties

for example consider a block named "A" which contains a inverter and 2 transistors

I need the name of the transistors,Cell name where they are present,width, number of legs to be recorded.

and it should list the details of the transistors present in the inverter used in the block "A"

IC1616 Custom Toolbar Icons That Change on State

$
0
0

I would like to add a toolbar icon that when selected toggles gravity on and off. I have this working through the customization form. As an enhancement I would like the ICON to indicate if gravity is enabled or not instead of looking at the log window to determine this. How would one write a callback such that it updates the icon used based on the state of whether gravity is enabled or not? 

Thanks, 

Micky Harris

Modgen Patterns Generation with SKILL (Custom Constraints)

$
0
0

Hi everyone,

I am struggling with the following functions:

ciGenerateBestFitPattern
ciGenerateCascodedCurrentMirrorPattern
ciGenerateCurrentMirrorPattern
ciGenerateDiffPairPattern
ciGenerateLargeMfactorPattern

I am trying to generate modgen / matrix patterns for a given list of instances and dimensions (rows x columns)

Here is the little code I wrote to try the functions:

(inScheme
  (let ((table `(
                  (PassiveDeviceArray    ,ciGenerateBestFitPattern)
                  (CascodedCurrentMirror ,ciGenerateCascodedCurrentMirrorPattern)
                  (CurrentMirror         ,ciGenerateCurrentMirrorPattern)
                  (DiffPair              ,ciGenerateDiffPairPattern)
                  (LargeMfactor          ,ciGenerateLargeMfactorPattern))))
    
    (defun getSelectedInstances nil
      "Return selected instances"
      (setof obj (geGetSelectedSet) (equal "inst" (get obj 'objType))))
    
    (defun instancesToDevices (instances)
      "Return the list of devices from schematic INSTANCES to be used in ciCollectDeviceInfo"
      (foreach mapcar inst instances (list (get inst 'name) 'inst)))
    
    (defglobalfun abGeneratePattern (structType @optional (instances (getSelectedInstances)))
      "Generate STRUCTTYPE pattern associated to schematic INSTANCES"
      (letseq ((win       (getCurrentWindow))
               (cache     (ciGetCellView ?window win))
               (devices   (instancesToDevices instances))
               (devInfo   (ciCollectDeviceInfo cache devices))
               (args      (ciGetStructArgs structType)))
        ;; Call ci pattern generation function according to struct type
        ((cadr (assoc structType table)) devInfo args)))
    
    (defglobalfun abGeneratePatterns (@optional (instances (getSelectedInstances)))
      "Try to generate all patterns in table for INSTANCES"
      (foreach mapcan structType (mapcar car table)
        (let ((pattern (errset (abGeneratePattern structType instances))))
          (unless pattern (warn "%s %A" structType errset.errset))
          pattern)))
    
  );let
);inScheme

I tried (abGeneratePatterns) while selecting a simple differential pair in a schematic, it get the following warnings:

*WARNING* CascodedCurrentMirror ("symbolToString" 0 t nil ("*Error* symbolToString: argument #1 should be a symbol (type template = \"s\")" nil))

*WARNING* CurrentMirror ("symbolToString" 0 t nil ("*Error* symbolToString: argument #1 should be a symbol (type template = \"s\")" nil))

*WARNING* LargeMfactor ("ciExtractRowNumber" 0 t nil ("*Error* ciExtractRowNumber: argument #1 should be a string (type template = \"tt\")" nil))

I get patterns for the other structTypes but I cannot specify the dimensions :/

If somebody has an idea or can provide me with better documentation about those functions I'd be very happy

Cheers,

Aurel

How to retrieve track pattern information of Metals in SKILL?

$
0
0

The track pattern will be loaded by default in virtuoso. I am writing a script to place metals over the selected instances based on the track pattern. Say I want to place a metal M1 of width 0.04 over the instance. i will check the M1 track spacing and place metal on the track to make it technology independent. But I am not able to figure out how to retrieve track pattern information through skill command. 

I tried following:

tech_id=ciGetTechFile( )

tech_id~>widthSpacingSnapPatternDefs~>??

But I was not able to find the what is the track pich for say M1, M2 etc.

I gone through .tf file from where track pattern is loaded, But I was not able to understand what to grep from it as I am not familiar with .tf files and track patterns.

So what is the best way and how to get track pattern information for metals.

Thanks,

Amshak


Skill command to get width/space details from active track pattern

$
0
0

Hi,

Do we have any command to extract the width space from an active track pattern set for a particular layout view using SKILL ? I am looking to draw shape/path using the width space information from the track pattern .

regards,
Ajith

Post Run Simulation Analysis - Plotting wavefroms from different tests

$
0
0

Hi all,

I have my ocean script where I execute two different tests as following:

Then from CIW I execute the following commands in order to plot the waveforms:

in_sig=v("/I0/SN" ?result `tran)
awvPlotWaveform(newWindow() list(in_sig) ?expr list("SN" ) )

But.. this only plot the results from one test. Is it possible, with a SKILL command,  select which test to plot? or simply plot all the tests?

Best,

EJ

How to highlight net in schematic when selecting a net in layout

$
0
0

HI,

After spending some time reading documentation and going through options in a Layout (XL) editor, I couldn't find an option to turn-on, what I would call, cross-probing. What I mean with that: when selecting a wire/path/polygon with net information, that the same net in the schematic view (which is already open) is highlighted. When in LayoutXL mode in a layout editor, if you select an instance, the same instance in schematic is highlighted/selected. I would like to have the same functionality for nets.

Is this possible by simply enabling an option (which I have completely missed)?

If this is not a build-in feature, I think it wouldn't be too difficult to write some SKILL code that does this:

  1. Re-define the bindkey for left-mouse-button click in layout editor (by default it triggers mouseSingleSelectPt()) to a custom procedure
  2. In this custom procedure, chech whether or not a path/wire/polygon with net information is selected, if so: proceed
  3. Check whether of not the schematic of the cell is opened, if so: proceed
  4. Use the procedure geAddNetProbe() to highlight the net
  5. If nothing or no wire/path/polygon is selected, the highlight in schematic must be cleared

This could be made in such a way that when selecting multiple paths/wires/polygons, multiple nets are highlighted in the schematic.

Would this be possible, or does anyone already have somehting similar to this?

Thanks in advance.

Kind regards,

Sjoerd

ps:
We are currently using a custom procedure which is triggerd by a single left mouse button click, it checks whether or not a path/wire/polygon is selected, and then takes the LPP of that object and sets it to the entry layer in the LSW. This is the code to do that:

community.cadence.com/.../1300.SCLLeMouseSingleSelectPt.il.txt

community.cadence.com/.../4113.SCLLeSetLSWEntryLayerByShape.il.txt

Before using, remove the .txt file extension.

How to use one corner output expression in other corners for a multiple corner/sweep sim?

$
0
0

Hi all,

I have a simulation testbench in ADEXL which has multiple corners to run. I want to use one of corner output expression in other runs.

To give couple example for usage: I will run ss, ff and tt corners in the same simulation in parallel and scale all output currents to tt value. Or I will run schematic based netlist and dspf based post-simulation netlist in parallel. Then, I want to compare the output expression between these two for verification. This can be scalable to over PVT as well.   

I am not sure if this is possible in the same simulation since simulation finish time can be different. I am open to other ways to do these as well.

Thanks

yayla

Version Info:

ICADV12.3 64b 500.21

spectre -W =>

Tool 'cadenceMMSIM' Current project version '16.10.479'
sub-version  16.1.0.479.isr9

How to find out the windowID of an open cell-view

$
0
0

Hi,

How do I do the following:
Using the procedure dbGetOpenCellViews() you get the list of all open cell-views in virtual memory. This lists both cell-views open in an editor window (i.e. opened through the librrary manager) and cell-views that are not opened in an editor window (i.e. opened using dbOpenCellViewByType()) I'd like to filter all cell-views which are opened in an editor window. So as an example:

I have two open cell-views: 1 = libA/cell1/view in a window and libB/cell2/view in memory only. The filetered list should only contain the database ID of  libA/cell1/view.

When you want to close data (CIW->File->Close Data) it presents a table listing all open cell-views. Ini this table, the window ID is shown (in the "status" column) if it is in an editor window. This is what I would like to know.

I could also specificly look for a particular lib/cell/view to see if it is opened or not by using procedure dbFindOpenCellView(), but this will only return the cell-view ID, not the windowID.

So the short question: how do I find the window ID from a cell-view ID?

Thanks in advance.

Kind regards,

Sjoerd

Viewing all 5074 articles
Browse latest View live


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