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

How to include a particular lib in the cds.lib while calling virtuoso from command prompt

$
0
0

Hi,

I am trying to find a solution to include "DEFINE mylib /home/lavs/TEST/mylib" in my cds.lib

The command line is virtuoso -nograph -log loga -replay myskill.il

The default cds.lib doesn't have "mylib" definition.

Is there any command that I can make use of to make this lib definition default in cds.lib

Thanks,

Lavanya


Get the waveform information from output expressions in Maestro

$
0
0

I am trying to import the output expressions I created in Maestro into a Skill script for further processing. I intend to import the waveform for the output expression into Skill and do the processing on the data. I got the output instance for the expression using this code:

session = axlGetWindowSession()
x_mainSDB = axlGetMainSetupDB(session)
x_historyHandle = axlGetRunData(session 0)
t_historyName = axlGetHistoryName(x_historyHandle)
x_history = axlGetHistoryEntry(x_mainSDB t_historyName)
rdbPath = axlGetHistoryResults(x_history)
rdb = axlReadResDB(rdbPath)

o_exprHandle = rdb->output("o_expr" "sweep_test" "nominal" 1)

In this code, o_expr is the expression I am trying to import and sweep_test is the name of the test. But I do not understand how can I get the waveform object from this output handle.

Skill code can work in CIW,but can not work on no-graph mode!

$
0
0

Hi,Guys

Below is my skill code,it's very sample!

procedure(test()
    opencell=dbOpenCellViewByType("test" "red" "layout" "maskLayout" "a")
    cellIds=leSearchHierarchy(opencell opencell~>bBox 0 "inst" list(list("cell name" "==" "SRAM_SW")))
        foreach(cellId cellIds
        printf("LibName:%s ,CellName:%s. \n" cellId~>libName cellId~>cellName)
        )
    dbSave(opencell)
    dbClose(opencell)
)

test()

It can work in CIW ,but can not work on no-graph mode.

No-graph mode command : virtuoso -nograph -restore test.il

It occur error,the error is : leSearchHierarchy: argument #1 should be a database object (type template = "dlxtl") - nil

Should  I do?

Any help are best!

Thanks

Gong

get the overlap area of adjacent metals in single hierarchy

$
0
0

Hi 

we are trying to find the overlapping area of adjacent metals(i.e metal1 to metal2, and metal2 to metal3 and so on ) in a single hierarchy.

we are using "dbLayerStraddl()"  function but it is creating a new shape over the first input layer list. but we required the only common area between the two layers.

please help with this problem .

procedure(metalOverlap()
prog( ()
cv=geGetEditCellView()

layer1=list()
layer2=list()

foreach(a cv~>shapes
when(a~>layerName == "MET2"
layer1=cons(a layer1)
)
when(a~>layerName == "MET3"
layer2=cons(a layer2)
)
)
ov=dbLayerStraddl(cv "POLY" layer1 layer2)
)
)
hiSetBindKey("Layout" "ShiftCtrl<Key>q" "metalOverlap()")

Maintaining two exclusive lists

$
0
0

Hi,

I have a GUI with two list boxes. I want to maintain the list box content exclusive of each other. The list box contents are not unique. I want to move selected items to other box and remove from the source. I have implemented the move call back as follows. Since I have used member function, not able to retain duplicate values. Is there any better way of doing?

;;scrField and dstField are the list box field

procedure(moveBin(scrField dstField)
let((scrList dstList)
    scrList = hiGetListBoxValue(scrField)
    dstList = dstField->choices
    foreach(ele scrList
        dstList = cons(ele dstList)
    )
    dstField->choices = dstList
    scrList = setof(x scrField->choices !member(x dstList))
    scrField->choices = scrList
))

Thanks

Ramakrishnan

Loading ocean rdb results back into ADE XL GUI history tab

$
0
0

I am using a script to copy many versions of parent ADE XL state and schematic with subtle changes for each schematic. Each child ADE XL ocean is run  and their results I would like to load as a history tab back into the original parent ADEXL GUI. All the child copies can then be deleted once results plotted.. Anyone know how to create history tabs in ADE XL that point to ocean results?

Unable to execute run() command in ocean

$
0
0

Hi,

   Below is the ocean script 

simulator( 'spectre )
hostMode( 'distributed )

----

  design ,analysis & simulator options 
---


run(?jobName "job1" ?queue "invglobal" ?lsfResourceStr "rusage[mem=2048]" ?lsfNoOfProcessors "4" )

The run command written above is throwing error shown below.

ERROR (49) : Job Submission Error : Job submission failed; LSF Error 120 - Request aborted by esub
Try to submit a LSF job from the command line using the same setup. Resolve any
LSF issue found in this step before submitting the job to LSF through ADE DP
job1001

When run() command arguments are changed as shown below,  LSF job is submitted successfully. 

run(?jobName "job1" ?drmsCmd "bsub -n 1 -M 2 -q invglobal -P gpio")

Now, I understand that former run() command isn't given project name in it's arguments but latter run() command , which has successfully submitted job, is given project name. The question is how to provide project name in the former run() command?

is there a way to know what is the shell command former run() command is executing ? If we can know the equivalent shell command of former run() command then we will come to know what options of bsub command are missing.

Thanks,

Prasad

Estimating abe function run time before it starts

$
0
0

Hi,

We have some ABE based scripts in which abeLayerToCellview is used to extract layers from all hierarchies. Is there any way to stop the program if the number of shapes are more than a specified limit? One way to do is using length(current_cellview~>shapes) as limiter. But how to do this across hierarchy?

Thanks

-Ramakrishnan


How to choose different section-endsection with a Global Variable in ADEXL?

$
0
0

Hi,

I am trying to run corner simulations(more than 100 let's say) and have more than one dspf files(extracted netllist) but I want to include only one of them depending on a Global variable.

Example: I have 2 vcos: one is LC-VCO and other is Ring-VCO  and I am muxing the output of these. I have vco_sel for mux control as Global variable. Depending on vco_sel, I want to choose to include either LC-VCO or Ring-VCO so that simulation runs faster.

I know that I can create different sections which include dspf files separately but I need to enable and disable corners separately and create many corners. And I can't run sweep for vco_sel in one simulation.

Is there a way to pass VAR("vco_sel") to the section/endsection of corner setup like a condition. I am open to any other solutions 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

bug in dbTransformPoint()?

$
0
0

Anyone ever notice the bug in dbTransformPoint() when the orient is "R90" or "R270"?

I wrote skill code to place a poly via on Pcells automatically. But when I wanted to get the relative offset of the xy of a poly via (child of device) to the device's xy,
I found that dbTransformPoint gives different results based on the orientation.
Or am I somehow using dbTransformPoint() incorrectly?
The code below works except the values are minus'ed (negative values are positive, and visa-versa) when the orient is "R90" or "R270".
 

(foreach obj geGetSelectedSet()
    (foreach via (setof s obj~>children s~>objType=="stdVia")
           (printf "%6s (%6s) => %L\n"
obj~>name
obj~>orient
dbTransformPoint(mapcar('difference via~>xy obj~>xy)
list(0:0 obj~>orient 1.0)))))
    I1 (   R90) => (-2.15 -2.05)
    I2 ( MYR90) => (2.15 2.05)
    I3 (  R180) => (2.15 2.05)
    I4 (    MX) => (2.15 2.05)
    I8 (  R270) => (-2.15 -2.05)
    I0 (    R0) => (2.15 2.05)
    I5 (    MY) => (2.15 2.05)
    I7 ( MXR90) => (2.15 2.05)



Working with Virtuoso 6.17-64b

Merging prBoundary

$
0
0

Is there a way to merge prBoundary objects non-interactively? I understand that the prBoundary is rather an object then a shape and therefore the leMergeShapes command would not work.

Thanks

  Hans

exiting skill execution started in CIW (Virtuoso) window

$
0
0

Hi all,

I'm executing some Spectre simulations using Skill code (Ocean) from the CIW (Virtuoso) window and would like to stop the execution from within the script when some condition is not fulfilled.

Skill offers an "exit" command but that ends the complete Virtuoso session, not just the execution of the script.

I now "solved" it by simply executing x= 1.0 / 0 ending the script by creating an error.

Anybody know how I can end the execution in a graceful manner?

groet

Hans

Create couple of layer combo box

$
0
0

How to create two layer combo box like in 6.1.7 with two separate set of layers.
I'm using leCreateLayerField command to get the combo box fields, but unable to modify choices independently.
I've verified that using fieldName1->choices=list("layer purpose") can be used, but somehow fieldName2->choices also gets updated.

Summary
Basically I want to segregate available layers into two combo layer field (with filtering as in 6.1.7)

writing into file using skill

$
0
0

Hi ,

I want  to  write manual data into a new/existing  file based on condition met in program. Is there any available command or script to do this ?

Thanks,

Raghu

Non-number number argument for x-axis of awvPlotList()

$
0
0

Hi,

In Ocean awvPlotList, is there a way to pass string list to x-axis instead of numbers? Sth like below

awvPlotList( window( 2 ) list( list( 1 2 3 ) list( 2 3 4 ) ) list( "c1" "c2" "c3" ))

If not possible, is there any other procedure to do this job?

Thanks

yayla


Decrypting a SKILL context file

$
0
0

Hi,

Please let me know if it's possible to decrypt a SKILL context file.

Thanks,

Mallikarjun

Taking User inputs not from CIW window

$
0
0

Hi,

Is there option to take input from user while the window other than CIW is active/selected?

In my case I want to take integer input from user while working on layout editor without requiring to type in CIW window i.e when I press bind-key and then the value with enter,the value should be stored in the variable defined in my bind-key.

Thanks in advance.

'mod'operation on two floating point numbers

$
0
0

Hi, 

Please tell me how a 'mod' function can be written for two floating point numbers. 

Thanks, 

Mallikarjun

can multiple functionality's assigned to same bindkey

$
0
0

Hi,

Is there any way so we can assign multiple functionalities to the  same bindkey

For eg :

on selecting metal 1  & pressing( ctrl + 1 ) it is converted to metal2 .if (ctrl+1) is pressed i.e; twice  again it should change to metal3 & so on...

Note : I am not doing the above one . I am doing something similar. Please let me  know how to approach this

Thanks,

Raghu

fprintf() works before run() but not after

$
0
0

There must be some peculiarity with our tools setup but if a file is created with file=outfile("filename") then i can write to a file until a run() statement is encountered. Any fprintf() after the run() gives error;

 ocean> *Error* fprintf: argument #1 should be an I/O port (type template = "ptg") - "/user/xxxxxxxxxxxxxxxxx/LIB/skill/ArtistKitNetlister.al"

xxxxx - some path

IC6.17-64b.500.21

spectre sub-version 17.1.0.270.isr5

Viewing all 5075 articles
Browse latest View live


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