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

how to sleep 1 between two runICRP when ADE submit to LSF

$
0
0

Hi all,

our IT  guies told me that many analog designer submit a lot of runICRP jobs to LSF,

it will affect and slow down LSF performance because there are many request deliver to LSF  at the same time.

so, IT  suggest our whether can spcify sleep 1 during two runICRP task?

It looks like there is no good idea use LBS or Command mode.

it there any skill function to call LSF  API  to do it? 

or Command mode to fulfill this requirement?


envSetVal trimEnable not working

$
0
0

envSetVal("layout" "trimEnable" 'boolean t)
envSetVal("layout" "trimEnable" 'boolean nil)

Neither of these are toggling the Trim setting off/on.  Is this a known issue or am I doing it wrong??

I created a toggle on/off script for a bindkey, but I haven't been able to use it.

Prevent Window GUI to become current window

$
0
0

Hi All,

I created a quite complex GUI that I need as a window (with toolbar, no buttons, a specific icon etc.)

(hiOpenWindow ?type "form" ?form my_custom_form)

However this window (which is not attached to any session) is becoming the current one and prevents me from accessing current cellview (from the CIW)

1> geGetSelectedSet
*WARNING* (GE-2015): There is no cellview assigned to window(5) because the window is not a graphic editor window, or because it has been corrupted.
Make sure that your current window is a valid graphic editor window or contact customer service to investigate this issue.
nil

1> css
*WARNING* selectedSet: No current cellView.
nil

Is there any mean to prevent my custom window from becoming the current one instead of a design cellview one?

I guess I can still write my own get_current_window,get_current_cellview and get_selection functions and filter the session windows but can I easily retrieve the top bottom order of the windows (instead of the index order)?

Cheers,

Aurel

How to make a default for Plugins Simulation as other

$
0
0

Hello,

I want to let schematic menu "Launch-->Plugins-->Simulation-->Other" as a default active for "Simulation". 

While I open a new schematic, the number of "\&Simulation10" will be changed if I check "schematicTools->PluginSlider->??" in CIW. 

Is there any way to trigger it while open any schematic view?

Thank you!

Open Layout Instance in New Tab doesn't work in Ic 6.1.8.500.13

$
0
0

Hi all,

I am using Ic 6.1.8.500.13 and I am a little bit frustrated because a skill script from Cadence support - CCSOpenCellViewInTabWindow.il - doesn't work at all under this Ic version.

When I am looking at a layout with subcells I want to open one of subcells in an new tab and actually a new tab appears with the wanted layout BUT there is no Layout Menus at all !!

I get this message in CIW : *Error* (Default-writer-method) generic:__de_set_installing class:_DEWindow

In the earlier IC versions this has worked !

Is there a workaround/fix for this error ?!

Thank you & regards

CPH ID and soft block ID

$
0
0

How to find CPH ID and soft block ID when using cphSbSetRectangularBoundary() SKILL API

Rename all labels of an instance in a schematic

$
0
0

Is it possible to change all label names of an instance using skill script?

For example, when I add instance in a schematic and hit "space" bar then it creates all the labels based on port name of an instance. I would like to add a suffix "_sv" to all these labels.

Is there an easy way to change all label names and add this common suffix to all labels?

Thanks.

Gradual Aging Simulations not passing variables correctly

$
0
0

Hello,

I'm having an issue with gradual aging (reliability analysis) for 2, 4, 7, and 10 years where if I define a variable through a .scs model file the variable gets passed on correctly to fresh/stress/2 year simulations but at 4, 7 and 10 years the variable returns nil. Attached are my settings:

If I create an empty design variable the same thing happens. Only when I define a global variable with a value does it get passed onto the 4, 7 and 10 year simulations. However my variable changes depending on my PVT and therefore I need to define it through my model file:

simulator lang=spectre

...

parameters VOL=0.45 VOH=1.35

...

My output expression is delayMeasure(VT("/vout") VT("/vout") ?edge1 "rising" ?edge2 "rising" ?nth1 3 ?nth2 3 ?value1 VAR("VOL") ?value2 VAR("VOH"))  which works fine for fresh, stress, and 2 year but returns 0 for 4, 7, and 10 year as VAR("VOL") and VAR("VOH") returns nil

Thanks
 


the behavior of operator (inplace operator & binary operator)

$
0
0

Hi all.

I'm using Virtuoso IC6.1.8-500.19 and my SKILL script returns unintended results when I use the inplace operator (+=, in my case).

A toy example of the case is as below.


a = 1

b = 3

c = 2

a += b - c


In this case, the expected value of 'a' is 2, I think, but the actual value is 4.

I checked the operation by SKILL IDE and I found that it is translated as (a = (a + b)) - c.

I know that I can get the intended value if I change the line 4 to a += (b - c), but I wonder this unexpected result comes from the nature of SKILL language, which is unlike any other programming languages.

Furthermore, when the binary operator is used with no blank with the secondary argument, it also returns unexpected value.


a = b - c    ; the value of a is 1

a = b-c      ; the value of a is 1

a = b -c     ; the value of a is 3


The last operation treats '-' operator as unary, I think, and it also differs from my expectation.

Will these behavoir be fixed later or is it just the rule for the SKILL?

I cannot find the guideline of it in the SKILL manual.

Thanks.

Can I change the bind key for the "_le" command?

$
0
0

Hello,

I am using Virtuoso 6.1.8

using the QuickAlign function with a bind key, and I found the hidden command.

I set the s key to "geScroll (nil "s" nil)" (with Enter Function too)

When the f key(QuickAlign) is in the Enter Function state, press the S key to activate the "_leHiQuickAlignCycleSnap()"

Could not find "_leHiQuickAlignCycleSnap()"  ANYWHERE even with Googling..

I want to erase that function from the bind key "s", but I can't find the way.

Please let me know. Thank you

How to modify variable in simrc

$
0
0

Hi all,

I want to modify a variable "hnlHspiceLVSNetlist = t " for LVS export netlist. And change it to nil while do schematic "simulator".

It was defined as hnlSetDef( 'hnlHspiceLVSNetlist nil) in set_sch.ile that loaced at "intall_dir/tools/dfII/local/"

And in ".simrc" , simSimulator = "set_sch" 

Now I have a request on the Layout view, it can temporary change its boolean to "t" for LVS usage. 

My understanding is if I directly set  hnlHspiceLVSNetlist = t in ".simrc" will override nil status for "simulation" purpose. 

Is there a way to get it or write any procedure in simrc to contol this function?

My tool version is IC6.1.8. Thank you!

Save data for each iteration Monte Carlo using OCEAN

$
0
0

Hello,

I'm doing serveral simulations regarding a circuit that has a large number of instances. Using ocean I create a script that runs a Monte Carlo simulation. My problem is that it only stores the data from the first iteration (?mcNumPoints). I wanna save each iteration data in a different file, for example "MCit1" for the first, "MCit2" for the second and so on, so later I can use these values separately in Matlab.

I have been saving my data in ".txt" files, I will share mi script right here. My version of cadence is 6.1.8-64b (2018).

;====================Set to Maestro mode explorer =============================
ocnSetXLMode("explorer")
...

;====================== Tests setup ============================================

....
simulator( 'spectre )
design( "...")
modelFile(
'("...")
)
analysis('tran ?stop "31m" ?errpreset "conservative" )

desVar(...)

envOption(
...)
option( ...
)
option( ...
)
temp( 27 )

MC1it = outfile("Iteration_1.txt" "w")
MC2it = outfile("Iteration_2.txt" "w")
ocnxlEndTest() ;

;====================== Sweeps setup ===========================================

;====================== Model Group setup ==========================================

;====================== Corners setup ==========================================

;====================== Checks and Asserts setup ============================================
ocnxlPutChecksAsserts(?netlist nil)

;====================== Job setup ==============================================
ocnxlJobSetup( '(
"blockemail" "1"
"configuretimeout" "300"
"defaultcpuvalue" "1"
"defaultmemoryvalue" "1000"
"distributionmethod" "Local"
"jobruntype" "ICRP"
"estimatememoryvalue" ""
"estimationsimulationmode" "0"
"lingertimeout" "300"
"maxjobs" "1"
"name" "Maestro Default"
"preemptivestart" "1"
"providecpuandmemorydata" "1"
"reconfigureimmediately" "1"
"runpointsvalue" "5"
"runtimeout" "-1"
"scaleestimatedbycpu" "100"
"scaleestimatedbymemory" "100"
"showerrorwhenretrying" "1"
"showoutputlogerror" "0"
"startmaxjobsimmed" "1"
"starttimeout" "300"
"usesameprocess" "1"
"warndisklow" "0"
"warnthresholdvalue" "100"
) )

;====================== Disabled items =========================================
ocnxlSetAllParametersDisabled(t)

;====================== Run Mode Options ======================================
ocnxlMonteCarloOptions( ?mcNumPoints "2" ?mcYieldTarget "99.865" ?mcNumBins "" ?samplingMode "random" ?wcdMinYieldSigma "3.0" ?dumpParamMode "yes" ?mcYieldAlphaLimit "0.05" ?mcStartingRunNumber "1" ?mcSigmaTarget "3" ?monteCarloSeed "12345" ?sssNumPoints "7000" ?highYieldExpectedYieldSigma "3" ?mcMethod "all" ?wcdInitialPoints "200" ?wcdMaxIterations "10" ?saveAllPlots "1" ?highYieldUseHistoryMC "0" ?saveProcess "1" ?wcdAutoNumPoints "1" ?mcStopEarly "0" ?highYieldCreateCorners "0" ?saveMismatch "1" ?wcdSkipLowYieldSpecs "1" ?wcdEnableVarReduction "1" )

;====================== Starting Point Info ======================================

;====================== Run command ============================================
ocnxlRun( ?mode 'monteCarlo ?nominalCornerEnabled t ?allCornersEnabled nil ?allSweepsEnabled t)

sum = 0
for(i 1 16384
sum = sum + 1
sprintf(g "/I%d/Vp" sum)
ocnPrint(?output MC1it value(VT(g) 30m 'iteration 1))
)

sum = 0
for(i 1 16384
sum = sum + 1
sprintf(g "/I%d/Vp" sum)
ocnPrint(?output MC2it value(VT(g) 30m 'iteration 2))
)

ocnxlOutputSummary(?yieldSummary t ?exprSummary nil ?specSummary nil ?detailed nil)
ocnxlOpenResults()

;====================== End XL Mode command ===================================
ocnxlEndXLMode("explorer")
close(MC1it)
close(MC2it)

The highlighted part is what I want to solve, this command doesnt work for me and I dont really know if it is because the line itself "ocnPrint(?output MC1it value(VT(g) 30m 'iteration 1))" is wrong and should be written differently, or if it isnt possible to achieve this way and I have to use different commands. I have ommited small parts in the beginning for cofidential reasons. Thanks,

Yassin

When ddGetObj is used for a constraint file, it appears to do more than just getting the object

$
0
0

This is what I put in a script:

; sv is the schematic cell view

cobj = ddGetObj(sv~>libName sv~>cellName "constraint" nil nil "r")

I need the object to get various data within the constraint file.

My intent is NOT to change the file or the constraints in any way.

Yet when this happens it appears as if the constraint manager wakes up and finds problems with the constraints and puts the constraint cache in edit mode.

I don't want this to happen, so I added the following code:

if(cobj then
  cc = muffleWarnings(ciCacheGet(sv))
  if( cc then
    muffleWarnings(ciCacheDiscardEdits(cc))
    muffleWarnings(ciCacheMakeReadOnly(cc))
  )
)

I am concerned that there would be problems for users when actually attempting to make changes in the constraint or might undo changes they had made previously.

what is the best way to access constraint data without waking up the constraint manager?

How Can i distinguish the mouse click and drag in enterfunction???

$
0
0

HI, Sir 

I have a question about input by mouse click.

I'm using the following function (using enterfunction).

"(command --> Mouse Click X 2 (objects select) --> Auto Property Change )"

But I want to add a new function. 

after entering the command, if you select an area by dragging the mouse rather than clicking the mouse, 

i want to you to do a different action on teh objects in the area.(It's a different behavior than the input through the mouse click.)

So I need to know How can i distinguish the mouse click and drag in enter function.

Please, Can i get some hint?

"(command    --> Mouse Click X 2 (objects select) --> Auto Property Change1

                      --> Mouse drag Input(area select)     --> Auto Property Change2)"

ARUGUMENTS error

$
0
0

Hello,

I facing an issue

path_enter=hiCreateStringField(
?name 'path_enter
?defValue "Hello 321"
)

info=hiCreateHypertextField(
?name 'info
?callback "Info"
?value "<body style='background-color:#F0F0F0;font-family:Roboto Mono;font-size:11px'><a href='skill:view(Doc)'>Notes</a><br></body>"
?shadowed nil
?hasVerticalScrollbar nil
?hasHorizontalScrollbar nil
)

procedure(Info(fieldSymbol hyperlinkName hyperlinkRef)

path = form->path_enter->value
printf("%s" path)

)

when am running code (ofcourse not above code...it is some part of code)

am getting issue as *Error* fprintf/sprintf: format spec. incompatible with data - "Format is '%s', argument #1 is nil"
why its taking arugment  as nil as form->path_enter->value as defined value??

drake


viaMinNumCuts Expected Behavior

$
0
0

I've set the minimum number of cuts cdsEnv variable to 2 but it only seems to take effect after I open the wiring assistant window which is a little bit annoying. Is this the expected behavior? As an example below you can see a wire I created on the left before opening the window and a wire created on the right after opening the wiring assistant (but not editing any settings).

Coordinates from instance layers

$
0
0

Hi everyone,

I've seen that in this two post  layer-coordinates & how-to-get-coordinates-of-layers this commands were recommended to get the layers coordinates. 

lpId = car(setof(lp geGetEditCellView()~>lpps lp~>layerName == "metal1" && lp~>purpose == "drawing"))
lpId~>shapes~>bBox

M1 = car(exists(lpp instId~>master~>lpps lpp~>layerName=="Metal1" && lpp~>purpose=="drawing"))
M1~>shapes~>bBox




but neither of those gave me the coordinate of the end of the Wire, I was thinking that maybe the coordinates are not from the cellview reference but from instance's, but neither of those calculations gave me the correct one.

I'd appreciate if anyone can tell me what I'm doing wrong.
or if there is another way to get the end of the M1 within the instance terminals.

  

Regards.
R. Gómez



Custom Instance properties

$
0
0

Hi everyone,

I'm struggling finding information about instance properties, as all my searches lead me to how to change CDF parameters as Width, length, etc.


Is there a way of linking this user properties with a function?

I created by skill those selected wires (overlapping default M1 wires) and those properties, but I'm trying to sync the value on that property to the wires width, is this possible?



I really don't understand which is the reason of having those if it looks like we are not able to use the same way as the common cell parameters.
I would appreciate if someone explain me this or point me where I can found something about those cells properties.



Regards.
R. Gómez

Create multiple Instances with multiple variables

$
0
0

Hello,

I'm an eng. student so i'm fairly new to the Virtuoso environment.

my question is following: community.cadence.com/.../create-the-multiple-instance-in-parallel

My goal is to simulate image sense using multiple current sources.

To accomplish that in a schematic, I am trying to create multiple instances (using bus notation) with an individual variable for each instance (and later make a symbol to implement in top level circuit).

for example, 3 current sources with 3 different current variables:

instance:  idc<0:2>  ( create  3 current sources using bus notation)

i want the variables to be set in the following manner:

idc<0> DC Current = i_in0

idc<1> DC Current = i_in1

idc<2> DC Current = i_in2

Until now I entered the variables manually, but it's not practical for multiple instances.

is there a way to create said instances with individual variables in Cadence Virtuoso?

I would appreciate your advice,

Thanks

valid vias skipped in viaSetDefaultValidViaDefs setting

$
0
0

I have a user defined constraint group "DFM".   Setting the list of valid vias in the command results in VIA-3232 warnings when selecting the constraint group in the 'create via' gui.

Why can I not set the list of valid vias for this CG?  Why do these warnings appear?  How can I get viaSetDefaultValidViaDefs to function properly?

the skill code:

techdb = techGetTechFile( ddGetObj("tsmc13rf"))

techcstGroup = cstCreateConstraintGroupIn(techdb "DFM")

viaSetDefaultValidViaDefs("tsmc13rf" "DFM" list("M6_M5" "M5_M4" "M4_M3" "M3_M2" "M2_M1" "M1_SUB" "M1_PACTIVE" "M1_NWELL" "M1_NACTIVE" "M1_NPOLYG" "M1_PPOLYG" "M1_PO" "M1_OD"))

the CIW warnings:

*WARNING* (VIA-3232): The specified via definition 'M1_NWELL' is skipped because a default has already been
set for transition 'METAL1/OD'.
*WARNING* (VIA-3232): The specified via definition 'M1_OD' is skipped because a default has already been
set for transition 'METAL1/OD'.
*WARNING* (VIA-3232): The specified via definition 'M1_PACTIVE' is skipped because a default has already been
set for transition 'METAL1/OD'.
*WARNING* (VIA-3232): The specified via definition 'M1_PO' is skipped because a default has already been
set for transition 'METAL1/POLYG'.
*WARNING* (VIA-3232): The specified via definition 'M1_PPOLYG' is skipped because a default has already been
set for transition 'METAL1/POLYG'.
*WARNING* (VIA-3232): The specified via definition 'M1_SUB' is skipped because a default has already been
set for transition 'METAL1/OD'.

the technology definitions:

customViaDefs(
;( viaDefName libName cellName viewName layer1 layer2 resistancePerCut)
;( ---------- ------- -------- -------- ------ ------ ----------------)
( M2_M1_via tsmc13rf M2_M1 via METAL1 METAL2 0.0)
( M3_M2_via tsmc13rf M3_M2 via METAL2 METAL3 0.0)
( M4_M3_via tsmc13rf M4_M3 via METAL3 METAL4 0.0)
( M5_M4_via tsmc13rf M5_M4 via METAL4 METAL5 0.0)
( M6_M5_via tsmc13rf M6_M5 via METAL5 METAL6 0.0)
( AP_M6s tsmc13rf AP_M6 symbolic METAL6 AP 0.0)
( MD_M6s tsmc13rf MD_M6 symbolic METAL6 MD 0.0)
( M6_M5s tsmc13rf M6_M5 symbolic METAL5 METAL6 0.0)
( M5_M4s tsmc13rf M5_M4 symbolic METAL4 METAL5 0.0)
( M4_M3s tsmc13rf M4_M3 symbolic METAL3 METAL4 0.0)
( M3_M2s tsmc13rf M3_M2 symbolic METAL2 METAL3 0.0)
( M2_M1s tsmc13rf M2_M1 symbolic METAL1 METAL2 0.0)
( M1_NACTIVEs tsmc13rf M1_NACTIVE symbolic OD METAL1 0.0)
( M1_PACTIVEs tsmc13rf M1_PACTIVE symbolic OD METAL1 0.0)
( M1_ODs tsmc13rf M1_OD symbolic OD METAL1 0.0)
( M1_POs tsmc13rf M1_PO symbolic POLYG METAL1 0.0)
( M1_NPOLYGs tsmc13rf M1_NPOLYG symbolic POLYG METAL1 0.0)
( M1_PPOLYGs tsmc13rf M1_PPOLYG symbolic POLYG METAL1 0.0)
( M1_NWELLs tsmc13rf M1_NWELL symbolic OD METAL1 0.0)
( M1_SUB tsmc13rf M1_SUB symbolic OD METAL1 0.0)
( via5 tsmc13rf via5 symbolic METAL5 METAL6 0.63)

( via4 tsmc13rf via4 symbolic METAL4 METAL5 0.63)

( via3ts tsmc13rf via3ts symbolic METAL3 METAL4 1.02)
( via3 tsmc13rf via3 symbolic METAL3 METAL4 1.02)

( via2ts tsmc13rf via2ts symbolic METAL2 METAL3 1.02)
( via2 tsmc13rf via2 symbolic METAL2 METAL3 1.02)


( via1 tsmc13rf via1 symbolic METAL1 METAL2 1.02)
) ;customViaDefs

) ;viaDefs

;********************************
; CONSTRAINT GROUPS
;********************************
constraintGroups(

;( group [override] )
;( ----- ---------- )
( "virtuosoDefaultSetup" nil

interconnect(
( validLayers (METAL6 METAL5 METAL4 METAL3 METAL2 METAL1 POLYG ) )
( validVias (M6_M5 M5_M4 M4_M3 M3_M2 M2_M1 M1_PO ) )
) ;interconnect

) ;virtuosoDefaultSetup

;( group [override] )
;( ----- ---------- )
( "virtuosoDefaultExtractorSetup" nil

interconnect(
( validLayers (PDKREC METAL6 VIA56 METAL5 VIA45 METAL4 VIA34 METAL3 VIA23 METAL2 VIA12 METAL1 CONT POLYG OD NWELL ) )
( validVias (M6_M5 M5_M4 M4_M3 M3_M2 M2_M1 M1_SUB M1_PACTIVE M1_NWELL M1_NACTIVE M1_NPOLYG M1_PPOLYG M1_PO M1_OD ) )
) ;interconnect
) ;virtuosoDefaultExtractorSetup

;( group [override] )
;( ----- ---------- )
( "LEFDefaultRouteSpec" nil

interconnect(
( validLayers (METAL1 METAL2 METAL3 METAL4 METAL5 METAL6 ) )
( validVias (M2_M1 M3_M2 M4_M3 M5_M4 M6_M5 ) )
) ;interconnect

Viewing all 5093 articles
Browse latest View live


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