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

Pcell Creation in Virtuoso 18.1

$
0
0

Hi all,

I wanted to create pcell in cadence v18.1 i am bit stuck with the flow creating I1~>Master~>SubMaster. Can anyone help me with creating a Pcell flow and adding Parameters.

I know CDF and callback functions which i have created a pcell in higher technologies and not working the same in lower technology node.

Thanks


VIVA Function for Getting X and Y axis Values of Viewable Area

$
0
0

Hi,

Is there an inverse function for awvZoomGraphXY?  I'm interested in extracting the X and Y axis values of a zoomed in waveform for a few quick "on-the-fly" calculations (i.e average, frequency, min, max, etc.).  The thought here is that I would clip the waveform based on the X-axis window and then plot or place a marker with the scalar of interest.  Thanks!

Regards,

kienhuy

auto-fit output field width in Explorer Maestro

$
0
0

Hello all.

When inspecting the outputs in the Maestro "Results" tab, the output, if nameless (which are most of them), shows the full hierarchical pathname of the signals.

However, if 1-2 hierarchies levels exist, then the text is only partially shown. One can adjust the width, after every run, but it is a bit annoying.

Is there a way to make the width to automatically adjust.to the text's length?

Happy holidays, and a happy, safe, healthy new year.

Get netnames connected to a Macro terminals

$
0
0

Hi,

Is there a way to get the nets connected to a specific Macro's terminals using SKill?

Thanks 

Utkarsh

geToggleAreaSelectOption( ) - want to be able to set without cycling

$
0
0

There are 3 selection modes - "enclosed", "crossed", "enclosedAndCrossed"

I want to set the current mode to a variable then set the mode to "enclosedAndCrossed" perform a function then set the mode back to original.

There does not appear to be a way to set it other than cycling thru the choices.

I checked for env settings and there is none that I can see.

Replace library name and cell name of standard cells in schematic

$
0
0

Hi 

we are trying to write one skill script to replace the library name and cell name of an instant in the schematic i.e. we have standard cell with instant name  as "I1" it is from the library "STANDARDCELL_1" and cell name is "INV_F1", this instant library name should replace with "STANDARDCELL_2" and cell name should append with  "AB", that is cell name should replace with  "INV_FIAB". i have many instances like this with different cell names,  please help with this problem. 

Regards 

Naresh 

exiting let block early due to errors opening files

$
0
0

The documentation for let and prog says that let is generally preferred for performance reasons but prog allows you to break out of the prog block early using a return() call, whereas let does not have this functionality.  My question is: if I want to use let for performance reasons, how would I break out of the entire procedure if I encounter an error due to a file that can't be opened, copied, written, etc.?  For example, suppose I have the following:

procedure(foo(libName cellName)

    prog(()

        cv = dbOpenCellViewByType(libName cellName "layout" "maskLayout" "r" )

        if((scv == nil) then

            printf("ERROR: Unable to open lib %L, cell %L, view layout, viewType maskLayout for read, exiting...\n" libName cellName)

            return()

        )

    )

)

Suppose I used let instead of prog in the example above and dbOpenCellViewByType returned nil.  How would I break out of the procedure foo given that return() is not available in a let() block?

possible for "virtuoso" command line SKILL script execution to output to STDOUT?

$
0
0

Suppose I have the following command to call a SKILL script:

virtuoso -nographE -nocdsinit -replay mywrapperscript.il

mywrapperscript.il contains the following:

(load "myscript.il")

(foo "arg1" "arg2" "arg3")

exit

When I run the virtuoso command at the top of my post, nothing is printed to STDOUT, regardless of whether or not the script runs successfully.  The only way I know to get any output is to add the "-log <filename" option to the virtuoso call above.  Is there a way to have the virtuoso command print everything to STDOUT?  Running "virtuoso -help" doesn't show any such option, but I just wanted to ask here in case I was missing something.


How can I get waveforms from item in OCEAN ?

$
0
0

Hi

I'd like to get waveforms from item in OCEAN script.

The "nth" syntax is only able to get as strings not as waveforms.

Is there a another way to get them?

Thanks,

Ichiro

leBalloonToggleOnOff( ) = need to turn on or off, not toggle

$
0
0

This is similar to my previous request (geToggleAreaSelectOption) but the solution for that does not work in this case.

1. I want to get the status of the info balloon and turn it on if it is off.

None of the following work:

hiGetCurrentWindow()~>balloonOn=t

leSetEnv( "balloonOn" t )

Mimicking the form does work but it is probably not recommended:

odcDisplayForm->odcInfra_InfoBOn_->value=t

_hiFormApplyCB(odcDisplayForm)

Using a look-up-table LUT based calibration in maestro assembler

$
0
0

Dear community,

is there a royal-road to implement a look-up-table (LUT) based calibration in maestro assembler?

At this moment, I do a pre-cal simulation of a 6-bit-DAC and generate a 4-bit LUT by comparison with desired values.
LUT values are used with calcVal in a post-cal simulation.
My open issue is that the LUT values are still in 6-bit and not equidistant.
I would love to map the LUT values to 4-bit and equidistant.

I believe there must be a more easy way of LUT-based calibration.

Can you please help me?

Soenke

Layout SKILL - ungroup

$
0
0

Hi everyone, 

Do you know if there is a way to ungroup a FigGroup in layout in SKILL? 

I could not find it so far. 

Thanks in advance,

Rodrigo

Is there a way to selectively Blank items?

$
0
0

Is there a way to Blank currently selected items?  By blanking I mean make it no longer visible but not deleted.  Layers can be turned off and cells can have their visibility dimmed but if I have 2 particular pieces of metal2  and a cell selected I  want to blank those while leaving other metal2 visible.    The work around is to write all selected objects to a file, delete selected, then read the file to replace the objects.  We just don't want to continually risk deleting data.  Thanks

Kerry

Make local procedures to use in pcell code?

$
0
0

I want to make local SKILL procedures, so they can be used inside pcell code.

I have made some custom Pcells, that use a set of custom procedures. Is there a way to easily embed these procedures inside the pcell code, so that they can still be used by calling the procedure with it's arguments, but that they only exist inside the Pcell?

How to access to the inside node signal

$
0
0

Hi, 

I'd like to know how to access the inside node signal in monte carlo script.(MDL)

Although I tried "sig=V(NEW_SW.Gate)" and "sig=V(NEW_SW:Gate)", it didn't work well (error).

Can I access lower node voltage?

Thanks,

Ichiro 


skill GUI radio button

$
0
0

Hi, I have problem on the radio button. The AddField and DeleteField doesn't work when I create multiple RadioField.

Anyone can help? The code work well for single RaioField.

procedure(Form()
let((libName LayerRadio ViaRadio sep1 sep2)
libName=hiCreateStringField(
?name 'libName
?prompt "Library Name"
?callback "ddsUpdateSyncWithForm()"
)

sep1=hiCreateSeparatorField(?name 'sep1)

LayerRadio=hiCreateRadioField(
?name 'layerradio
?prompt "Layer Options"
?choices list("Copy" "Replace" "Remove" "none")
?value "none"
?defValue "none"
?callback list("oferLayerRadioButtonCB()")
)

sep2=hiCreateSeparatorField(?name 'sep2)

ViaRadio=hiCreateRadioField(
?name 'viaradio
?prompt "Via Options"
?choices list("Copy" "Replace" "Remove" "none")
?value "none"
?defValue "none"
?callback list("oferViaRadioButtonCB()")
)


hiCreateAppForm(
?name 'oferExampleForm
?formTitle "Ofer's example form"
?callback 'oferExampleForm
?fields list(libName sep1 LayerRadio sep2 ViaRadio)
)
); let
); procedure Form

procedure(oferLayerRadioButtonCB()

oldLayer=hiCreateStringField(
?name 'oldLayer
?prompt "old Layer"
)
newLayer=hiCreateStringField(
?name 'newLayer
?prompt "new Layer"
)
oferExampleForm->extraFields=list(nil 'oldLayer oldLayer
'newLayer newLayer)
oferExampleForm

let( (radioVal)
radioVal=oferExampleForm->LayerRadio->value

when(radioVal=="none" && oferExampleForm->oldLayer
hiDeleteField(oferExampleForm 'oldLayer))

when(radioVal=="Remove" && oferExampleForm->newLayer
hiDeleteField(oferExampleForm 'newLayer))

when(radioVal=="Copy" || radioVal=="Replace" || radioVal=="Remove"
unless(oferExampleForm->oldLayer
hiAddField(oferExampleForm oldLayer)))

when(radioVal=="Copy" || radioVal=="Replace"
unless(oferExampleForm->newLayer
hiAddField(oferExampleForm newLayer)))


)); procedure oferLayerRadioButtonCB

procedure(oferViaRadioButtonCB()

oldVia=hiCreateStringField(
?name 'oldLayer
?prompt "old Via"
)
newVia=hiCreateStringField(
?name 'newLayer
?prompt "new Via"
)
oferExampleForm->extraFields=list(nil 'oldVia oldVia
'newVia newVia)
oferExampleForm

let( (viaradioVal)
viaradioVal=oferExampleForm->ViaRadio->value

when(viaradioVal=="none" && oferExampleForm->oldVia
hiDeleteField(oferExampleForm 'oldVia))

when(viaradioVal=="Remove" && oferExampleForm->newVia
hiDeleteField(oferExampleForm 'newVia))

when(viaradioVal=="Copy" || viaradioVal=="Replace" || viaradioVal=="Remove"
unless(oferExampleForm->oldVia
hiAddField(oferExampleForm oldVia)))

when(viaradioVal=="Copy" || viaradioVal=="Replace"
unless(oferExampleForm->newVia
hiAddField(oferExampleForm newVia)))
)); procedure oferViaRadioButtonCB


procedure(BEOL()
unless(boundp('oferExampleForm)
Form()
)

hiDisplayForm(oferExampleForm)
)

custom skill function to assign a global variable in explorer

$
0
0

Hi, I am trying to program a voltage source to have a dc value from a file based on a combination of some other variables in explorer.

Something like: vsource=MySkillFunction(simVariable1,simVariable2)

My understanding is that we can assign a skill function to a global variable. When I tried using existing skill some other functions like vsource= atoi('44") +sqn_fc (that is sweeped later on from 0 to 1)  it did work, my source get the assigned value of 44 and 45, but when I try using my custom function ReadVariableFromFile() I couldn't manage to get the value passed to the vsource variable in the same way and I get sim error. 

When I launch launch the skill function in the CIW it does return the value as expected. 

any help is appreciated. 

Thanks

Lorenzo

Why couldn't I get the evaluation result?

$
0
0

Hi, 

I could get NANs result with the below message.  

WARNING (MDL-360): line `41': MDL expression for identifier 'Iq_avdd' can not be evaluated, because 'I(V_avdd:MINUS)' is invalid.

where,

41: exportreal Iq_avdd = I(V_iavdd:MINUS)@500u

V_avdd is a instance name that is kind of "vdc" set 0V

Why couldn't I get the evaluation result?

Best regards,

Ichiro

How to get the skill function about creating a new pcell?

$
0
0

Recently,I need to create the pcell using skill in virtuoso.

I want to know where I can understand these function,eg:dbOpenCellViewByType,dbCreateParamInst.

I have queried many docments,eg:SKILL Language Usere Guide,SKILL Language Reference.but its useless.

I also try to open 'the skill finder' from virtuoso,but its no response,maybe my cadence is not intact. 

And,I find that maybe the doc 'Design Framework II SKILL Functions' is useful for me.But i don't find it.

Thanks for your help.

Order of let() and procedure()

$
0
0

Is there a recommended order of let() and procedure()?

I have seen it both ways:

procedure(myFunction()
let( (x y z )
...code...
);let
);procedure


let( (x y z )
procedure(myFunction()
...code...
);procedure
);let

it seems that with let() first you can have more than one procedure in the code that can share the variables defined in let()

Viewing all 5101 articles
Browse latest View live


Latest Images