How to unload a skill script from CIW window?
Merging the list of lists
dbGetTrueOverlaps - abutting layers
Hi,
I'd like to make a layout cellview with CB layer for pad opening and its own pad pin from original layout so I'm using dbGetTrueOverlaps function.
There is an issue I cannot get full size of CB layer by using the function. Whole CB layer is octagonal shape but it is made of two shapes which are seperated with rectangle inside and rest of it outside. The shapes are abutting each other without any gap. But I only can get rectangle CB layer by using dbGetTrueOverlaps.
Do you have any good idea I can get whole CB layer?
Thanks,
Jungyoon
Undefined function ipcBeginProcess error during XStream Out
Dear all,
I have created a PCell whose callbacks invokes functions from the ipc family. During the instantiation there are no errors or evaluation fails, but when I try to run Xstream Out the following error rises:
*Error* eval: undefined function - ipcBeginProcess
ipcBeginProcess is the first call of the ipc family.
The recommended solution from strmOut.log states to "either is a syntax error or an unsupported XStream function." and to "Either correct the pcell SKILL code or ignore the error by enabling the 'ignorePcellEvalFail' option for XStream Out."
Is there a way to use the ipc family without 'ignorePcellEvalFail' by custom fixing this issue or bypassing the support to these functions?
If that it is not possible, is there any other way to use the functionalities of the ipc family without using directly its functions?
In addition, streaming out from virtual memory does not apply to my project as a solution.
Many thanks,
Chris
SKILL command to access the database ID of a marknet result in layout?
When does le1ViaForm get created?
I have some bindkey code that cycles through the a specified list of via types (potentially all the via types in the technology) while the Add Via enterfunction is active. The code sets le0ViaForm->viaSingleModeScrollView->viaDefName->value.
I noticed that it stopped having any effect, but I could still change the via type the original way by bringing up the via form using F3 during the add-via command, then setting the via type value in the GUI using the cyclic field. However, looking at the CIW when I did this, I noticed it was setting le1ViaForm->...... . I changed the code temporarily to affect le1ViaForm instead of le0ViaForm and it works as expected.
I couldn't find any reference to le1ViaForm in Cadence help or in the forums. What creates it and when? What's the right way to modify the bindkey code to deal with the new form? Just check for le1ViaForm, or could there also be le<n>ViaForm? Should I set all of them from 0 on up, or just the one with the highest number?
Thanks
How to give net name while creating path from skill?
PVS custom window title in gnome/kde taskbar?
Is there some way to define a custom window title or icon bitmap for the PVS windows in the gnome or kde taskbar? The taskbar shows all the PVS windows as "PVS 15.23-64b" followed by "L..." for LVS, "D..." for DRC etc. Is it possible to drop the "15.23-64b" from the taskbar title, to make the different PVS windows more readily identifiable, e.g. "PVS LVS" "PVS DRC".
Using Callbacks
Hello,
I have seen callbacks in action in some scripts but never grasped the concept of how callbacks really work.
An example is given:
;; Post-simulation callback. Called after each run.
define( RunFinishedCallback(session runID)
printf("Run ID %L has finished" runID)
)
; Run simulations
history1 = maeRunSimulation(?session session1 ?callback "RunFinishedCallback")
How are session and runID passed to the RunFinishedCallback function? and what passes them?
Best regards,
Karam
skill code for finding the pin which is not in the pitch
Hi,
I have bunch of pins in the layout and suppose to be in the pitch, I have written skill code for finding the pin which is not in the pitch. My code is not working and I have observed that " if " function is problem in below code, I have seen that few pins are selecting( geSelectFigs(pin) is used inside if function) in the layout even if condition is not satisfied.
Could anyone help me on finding the problem in below code.
procedure(flatten( numberlist )
foreach( mapcan element numberlist
element
) ; foreach
) ; procedure
procedure(trMakeSublists( numberlist )
foreach( mapcar element numberlist
list( element )
) ; foreach
) ; procedure
procedure( findPinPitch()
let( (cv allPins count )
cv=geGetWindowCellView()
allPins=setof(x cv~>shapes x~>pin)
bBoxList=allPins~>bBox
inputlist=foreach( mapcar bBox bBoxList
xCoord( lowerLeft( bBox )))
orderlist=sortcar( trMakeSublists( inputlist ) 'lessp)
new_list=flatten( orderlist )
k=length(new_list)
pitch=0.456
i=1
m=k-2
count=0
for(j 0 m
a=(nth(i new_list)-nth(j new_list))
if( a != pitch then
pin=setof(sh cv~>shapes sh~>objType=="rect" && cadr(sh~>lpp)=="pin" && xCoord(car(sh~>bBox))==nth(i new_list))
geSelectFigs(pin)
printf("\n Isolated %L pin with net %s found at %L\n" car(pin~>lpp) car(pin~>net~>name) car(pin~>bBox))
count++
); end if
i=i+1
); end for
printf("\n %n isolated pin(s) selected in cell %s\n" count cv~>cellName)
) ;let
) ;procedure
SKILL code to create form to select instance from schematic and then rise form with selection result
Get PRBoundary coordinates for a PCELL instance
HI,
Sorry if this question is asked before.
I am trying to find the coordinates of PRBoundary for a PCELL instance.
Any one knows how to get this ?
If I try inst->master->bBox it gives the coordinates of the pcell evaluated with default parameters.
But I want coordinates of the pcell evaluated with modified parameters.
Thanks,
Mihir
Bindkey to open direct plot/Main Form window in ADE XL
Hi all,
Is there a way to create a bindkey for ADE-XL that can directly open the "direct plot -> main form" menu related to the currently selected corner?
Let me try to explain better with the help of an example: I have the results of a multi corner simulation and I want to plot a set of waveforms which are saved but are not set as outputs for ADE-XL. What I do now is to RMB on the corner of interest, than direct plot>main form, and finally click on voltages/currents/etc on the schematic that I want to plot. I'd like to have a bindkey that opens the main form window of the corner, in order to skip the RMB/direct plot/main form procedure.
Do you have any idea of a skill code that can do this?
Thanks in advance
Need to transform co-ordinates to current hierarchy
Connect pin to instance terminal
Dear Cadence Family,
I am begineer at SKILL scripting. I have a basic question for which i am unable to find any solution.
I have a schematic where i have symbol of an NMOS transistor. I want to connect pins to it.
For simplicity, i have created only 1 pin and now i want it to be connected to the drain (terminal) of NMOS transistor (instance).
Following is my sample code:
cv = dbOpenCellViewByType( libname cellname viewname viewname "a")
pin_cvid = dbOpenCellViewByType( "basic" "ipin" "symbol" "" "r" )
inst = nthelem(1,cv~>instances)
pin_net_id = dbMakeNet(cv "dn0")
pin_inst_id = dbCreateInst(cv pin_cvid "" 0:0 "R0")
dbCreateConnByName(pin_net_id inst "d")
pin_id = dbCreatePin(pin_net_id pin_inst_id)
dbSave(cv)
dbClose(cv)
In the schematic, created pin can be seen but it is not connected to the drain terminal.
Can anyone guide me a bit. The function dbCreateConnByName is right but i believe i am making some other mistake. Cant seem to pin-point it.
Any help would be much appreciated.
Regards,
Haris
creating pin and direction table for schematic
Hi,
I am trying to create a list of lists for pin and corresponding direction using "Pin_And_Dir=foreach(mapcar term cv~>terminals list(term~>name term~>direction)". Its crating as below
pin1 input
pin2 input
pin3<0:1> input
pin4<3:0> output
The problem is when there is a bus for some pins. But i want them separated as below:
pin1 input
pin2 input
pin3<0> input
pin3<1> input
pin4<3> output
pin4<2> output
.....
I tried to use dbProduceMemName for pin names. But its expanding only pin names but direction is not replicating to them.
Could you please help on this to make pins and directions as list of lists or table format?
Unable to delete cell because of maestro view
Hello,
I created a schematic and a maestro test bench to simulate my schematic. After finishing my simulations and extracting my results, I deleted the cell (right-click -> delete)
The cell views are deleted but the cell remains, and I get the following messages:
*WARNING* Window 1 does not exist
*WARNING* ddDeleteObj: Failed to unlink $PWD/myLib/myCell/maestro/results/maestro/.nfs0000000000f7efb90000133d - Device or resource busy
*WARNING* ddDeleteObj: Failed to remove directory $PWD/myLib/myCell/maestro/results - Directory not empty
*WARNING* ddDeleteObj: Failed to remove directory $PWD/myLib/myCell/maestro - Directory not empty
*WARNING* ddGetOAObject: Couldn't find an OA cellview object for view 'maestro' in lib 'myLib', cell 'myCell'
*WARNING* ddDeleteObj: Failed to unlink $PWD/myLib/myCell/maestro/results/maestro/.nfs0000000000f7efb90000133d - Device or resource busy
*WARNING* ddDeleteObj: Failed to remove directory $PWD/myLib/myCell/maestro/results - Directory not empty
*WARNING* ddDeleteObj: Failed to remove directory $PWD/myLib/myCell/maestro - Directory not empty
*WARNING* ddDeleteObj: Failed to remove directory $PWD/myLib/myCell - Directory not empty
The problem is that I can no longer open a maestro cell view in that cell (but I can create one). I can't do "rm -r" to the directory either.
Any help would be highly appreciated.
Best regards,
Karam
select block view in ocean script
hello exports,
think I have behavior models developed for my design. then I want to swap one block/cell at a time by real transistor level block/cell with all rest behavioral models. How can I pick such transistor/behavioral view in ocean script so that I can run these tests in a batch?
I know I can use Hierarchy Editor to create many config to use different views, but that could be very messy once I have so many configs.
thanks a lot,
David
Cleaning up a layout view
Hi,
I looking for a reliable way to clean up the layout for that following needs
1. Delete orphaned nets => Remove nets that are not attached to any physical shape
2. Delete orphaned terminals =>Remove terminals that are obsolete (not connected to any physical shape, mostly the old name of a renamed terminal)
3. Fix cell extent boundary => Sometimes some ZoomToFit fits to a boundary which is much zoomed out than the actual layout. Which is mostly because of steiners or some unknown object (in non streamout layer) presence.
The following is the current solution I have but not sure if it is reliable
1. mapcar('dbDeleteObject setoff(x cv~>nets !x~>pin))
3. mapcar('dbDeleteObject cv~>steiners)
-Ramakrishnan
How to view easier the netlists set in Assura Netlisting Options Form
Hi,
We use a lot of CDL/etc. netlists for our Assura LVS run. In the daily work we have to change some of them and then we would like to have some possibility to view and check if all netlists are correct.
At present there is only one way to do it is by using this small view area at the bottom of the Assura Netlisting Options Form.
This is a bad joke from the GUI designer of this Form :-(
We find it very difficult to use it for checking of set netlists.
Question : is there no other way to present the used netlists to the Assura user, some GUI like a viewfile window ?!?
Or is it possible to put a new button on the Assura Netlisting Options Form that will pop up a viewfile ?
Regards
Laurent