mapping number of segments of rppo resistance from one technology to another
Variable number of dialog box fields
I am trying to construct a dialog box with a variable number of fields, however, the hiCreateStringField ?name parameter is supposed to be a single-quoted symbol reference so I cannot simply assign the result of hiCreateStringField to an array and then reference it. I must have the wrong approach.
Does anyone know how to construct a form with a variable number of fields? If so, can you point me in the right direction? I want to be able to create fields in an indexed loop and read their values that way.
Script to make visible dummy layer of those metal layers visible in LSW selection
Hi can any one show some light on how to perform the solution. For example if i have "M1 drawing layer" visible in LSW , then if i press some bindkey the M1 dummy layer should get vissible. I have tried some code but it isnt working. Copied for reference below
procedure(showDummySet()
for(i 1 10
z="M"
layer=(concat(z,i))
x=leIsLayerVisible( list("layer" "drawing") )
if( x == "t" then (
leSetAllLayerVisible(nil)
leSetEntryLayer(list(\"layer\" \"drawing\"))
leSetEntryLayer(list(\"layer\" \"dummy\"))
hiRedraw()
)
)
)
)
hiSetBindKey("Layout" "Ctrl<Key>8" "showDummySet() ")
pass data between perl and skill
Hello all,
Im trying to use the ipcbeginprocess command to pass data between skill and perl. it works , but I do get some issues.
Im doing the next :
procedure( MLultraSimPerlGui()
lunching the perl script from a button in my schematic with the next skill script :
msgHandler = lambda( (cid data) printf("\n[CCSbla bla: %s]\n%s" cid data))
errHandler = lambda( (cid data) printf("\n[CCSbla1 bla2: %s]\n%s" cid data))
PinList = nil
cid= ipcBeginProcess("/home/menyl/UltraSimPerl.pl" "" msgHandler errHandler)
ipcWaitForProcess(cid 5 )
)
MLultraSimPerlGui()
than the perl script pop up a gui with buttons, and a press on one of the buttosn shoud print to the CIW the data from the perl
script, along with the ipc id ( should be ipc:xx \n hello meny) . the thing is that it doesnt happen , no matter how many times I press
on the button. i tried to ipcReadProcess the cid. I got: " ". the only I get the data on the CIW is when I close the perl GUI - than I see exactly the string Im expecting , and in the same number of times I press the button - so the work get done, but from some reason the data transfer get blocked . or maybe I just dont use the ipc protocol right.
thx
Meny
SKILL code to change text/net name in extract mode
Hello all.
I've got extract view (for generating netlist from layout) generated by Synopsys StarRC.
There is a problem, which causes certain net names to be uppercase (when in the layout and in the subcircuit interface are lowercase).
I want to find all net names in the extract view, and workaround the problem (by changing them to lowercase, via a certain flow).
Trying to find labels, as done in layout view yielded 0 matches (using setof).
I am using IC 6.1.5 500.7
Any feedback is more than welcome.
-Lior
How to get the lower level shapes in skill?
I want to get the lower level shapes in an area.Also,I saw a post in forum.
Code writing like below:
******************************************************
procedure(abGetOverlapShape(overlap)
if(listp(overlap) then
abGetOverlapShape(cadr(overlap))
else
overlap
)
)
cv=geGetEditCellView()
figList2= dbGetOverlaps(cv list(car(pts) car(pts)) list("M2" "drawing") 32 t)
flattenendFigList2=foreach(mapcar overlap figList2
srcShape=abGetOverlapShape(overlap)
dbCopyFig(srcShape cv dbGetHierPathTransform(overlap))
)
******************************************************
But 'dbGetHierPathTransform' is used for IC6.1.How can I replace it in IC5.1?Thanks!!
A question about parameter in skill.
Dynamically update a form
I am trying to dynamically update a form so that when you enter text into one text box other things on the form, like other text boxes change. This is such a common thing to want to do it seems like it ought to be easy but for some reason I haven't found the solution I tried things like
set(car(TheForm->fieldList) "Test")
Here TheForm was a variable set to the form ID. I got the field list because in my form I have a variable number of fields and don't necessarily know the ID of each field. In this example I was just trying to set the first text box field on the form to "Test". That didn't work - the CIW echoed "Test" but the form didn't update.
Can anyone help show me how to update a form dynamically so that when one text field is changed by the user, another text field has its value changed?
Script for finding same Metal type Shape Overlapping a Trace
Dear All,
I want to find whether same metal type shape is overlapping another shape of the same metal.
If it is overlapping, then the overlap area should blink.
Basically this I need for finding SHORT with undesired trace.
For example: I have a trace ( may be a Rectangle/Path). I select this. Then an enabled SKILL script should find a same metal type shape overlapping with the trace and highligting the overlapped area with the trace.
Can anybody show me some light for this.
Kind Regards,
how to get the window number
captab bind with monteCarlo
Hello,
did anybody try to get the capinfo during the monte carlo analysis? I have done a simulation from ADE, I can see the capacitance variation in spectre output file(logfile), there is a captab output in each iteration, but why I can just get the nominal simulation results when i perform a simulation from command "spectre input.scs" where I modify the info statement in the netlist ( capInfo info what=captab where=file file="%C:r.info.what" save=all threshold=0 detail=node sort=name), there is only the capacitance of the nominal transient simulation in the file "input.info.what" . where am i wrong?
How to access parameters of an instance?
Hi,
I want to access the parameters of an instance in a layout and then compare it with conditions to print and output. Following is the code I am trying:
cv =geGetEditCellView()
cv~>instances
instanceParam=cv~>instances~>parameters~>??
The last line of code gives result as nil in CIW.
Would like help regarding the same.
Thanks
Vijay
problem with starting the script in skill
ANDing 2 lists
Hi All, I have 2 lists below. I am looking to AND them together to get a 3rd list containing only the coordinates of bslist2 that correspond to the values of 't' in bslist1. What is the best way to go about this?
Thanks,
Brian.
p, li { white-space: pre-wrap; }
bslist1 = (nil nil nil nil nil t t t t)
bslist2 = ((106.64 64.105) (106.64 69.895) (117.09 69.895) (117.09 63.54) (111.135 63.54) (111.135 67.755) (114.9 67.755) (114.9 66.35) (113.045 66.35))
Nested foreach loop
In an attemt to make parametric simulation scripts a bit more readable, I wrote a macro that allows foreach loops to be nested. I have not tested it fully, but I would like the readers' input on my code. The code generates a string containing the foreach loop, before evaluating it. It feels a bit clumsy, but I was unable to think of an simpler way to do this. Any suggestions?
TOForeachNestFunc=lambda( (Symbols Lists Commands) let(((DeclareLoopVars nil) (DeclareLoopHead "") (DeclareLoopBody "") (DeclareLoopTail "") (MainLoop "foreach( (") (LetStringHead "let((") Result ) ;We'll need to create a loop that declares the expanded sweep lists, ;before creating a main loop that runs through all the expanded sweep lists and ;executes the commands. foreach((List Symbol) Lists Symbols DeclareLoopVars=cons(sprintf(nil "%sS" Symbol) DeclareLoopVars) DeclareLoopBody=strcat(DeclareLoopBody sprintf(nil "%sS=cons(%s %sS) " Symbol Symbol Symbol)) DeclareLoopHead=strcat(DeclareLoopHead sprintf(nil "foreach(%s '%L " Symbol List )) DeclareLoopTail=strcat(DeclareLoopTail ")") MainLoop = strcat(MainLoop Symbol " ") ) MainLoop = strcat(MainLoop ") ") foreach(Var reverse(DeclareLoopVars) LetStringHead=strcat(LetStringHead "(" Var " nil) ") MainLoop = strcat(MainLoop Var " ") ) LetStringHead=strcat( LetStringHead ")") MainLoop = strcat(MainLoop "\n" Commands "\n) ") Result=strcat(LetStringHead "\n" DeclareLoopHead "\n" DeclareLoopBody "\n" DeclareLoopTail "\n" MainLoop "\n" ")") ) )
defmacro(TOForeachNest (Symbols Lists @rest Commands) ;Executes a nested foreach loop ;Symbols: A list of variables that are used in the commands. ;List:A list of lists that contain the values to be swept ;Example: ; TempL= '(-40.0 27.0 85.0) ; VSupplyL= '(3.2 3.3 3.4) ; ; TOForeachNest('(Temp VSupply) list(VSupplyL TempL) ; printf("Temperature: %e, Supply Voltage: %e", Temp VSupply) ; ) ;expands to: ; foreach(Temp TempL ; foreach(VSupply VSupplyL ; printf("Temperature: %e, Supply Voltage: %e\n", Temp VSupply) ;) ;) let((CommandString) CommandString=sprintf(nil "%L" ,Commands) CommandString=substring(CommandString 2 strlen(CommandString)-2) `let((Result) Result=funcall(,TOForeachNestFunc ,Symbols ,Lists ,CommandString) evalstring(Result) ) ) )
using CCSchangeReflib.il
Hi ,
When I'm using CCSchangeReflib.il in CCSfuncs.zip download from cadence.
cv = dbOpenCellViewByType("myWorkLib" "myWCell1" "schematic")
CCSchangeReflib("myRefLib" cv)
Collecting data from the 'tran' analysis for specific time
Hi,
I am interested in collecting the data from the spectre 'tran' analysis for a particular instant of time, the variable I am interested in plotting is from the behavioural model(verilog-a) and it is for a array of instance. I tried 'value' function from the calculator, it works only on a single Instance/Curve and not for the whole family of curves. I find it very difficult when my number of instances/Curve goes high.
Am I wrong anywhere?
Can someone help
Thanks in Advance!
Aarthy
I am sorry about posting in this forum! I am not able to delete the post or move it to "Custom IC Design"
find global variables in a SKILL procedure
Hi..
I have a long SKILL procedure, with a set of local variables defined using prog() and a few global variables. I would like to know if there is any easy way to check if I have added all the variables, which I want to be local, in the prog() list. In other words, is there any way to get a list of global variables in the procedure?
Regards,
Hrishikesh
symbol property question
Can I have a SKILL function call a C or C++ function (and not an executable)?
Hi, is there a mechanism (through SKILL++ or other, but haven't found that in the doc so far) which would allow a SKILL function to call a C or C++ function from e.g. a shared library?I have a set of data-manipulation functions written in C, which I'd like to leverage on the dfII side for being possible to call from SKILL code, but don't want to have to re-code the existing functions in SKILL since they are also used through other languages and I'l like to maintain a single set of source code for them. Each of the C function is currently not available as a distinct executable either.
Thanks for any advice!