Programmable version of leHiCreateBus
Run Assura SVS from command line
Hi,
I am trying to run the assura SVS(Schematic Vs Schematic) from the command line using the below command.
"assura <svs rsf file>"
However I am not sure about the RSF file format. I did the same for assura LVS and DRC earlier. As am new to the SVS, please help me to do this.
Tool : Cadence 6.1.7
Thanks & Regards,
Amar
Auto-via function using skill
Get Run Mode of Previous ADE-XL Simulation using SKILL
Hello,
I am trying to retrieve the Run Mode (e.g. "Single Run, Sweeps and Corners", "Monte Carlo Sampling", etc.) of a simulation that has completed. There is a function axlGetCurrentRunMode() but it fulfills this task for the current Setup and not for older runs. Is there a similar function that can get the Run Mode using the results DB or previous history?
Any hints would be highly appreciated.
Best regards,
Karam
How and where to find DRC highlight information.
SKILL function to create parametric set
How to delete Via in layout?
I draw my layout. When I use the function deleteAllObjectsInLayout( cvid ) to delete the layout, all instances and metals are deleted except the Vias I created.
the function is defined below, How should I modify my code for deleting Vias? Thank you!
procedure(deleteAllObjectsInLayout( cvid )
let((propName inst)
dbDeleteAllNet( cvid )
foreach( inst cvid~>instances
dbDeleteObject( inst ))
foreach( inst getSGq( cvid shapes )
dbDeleteObject( inst ))
t);end let
);end procedure
SKILL to walk library looking for dependency
XML Parser
What's the best way to parse an XML file into a SKILL or SKILL++ data structure?
I found an old post, listed below, on parsing xml files using xsltproc. However I am receiving errors about the xslt file when I test it on an example xml file. Is there an updated version of this xslt file available?
I've also seen suggestions that a LISP xml parser be used. Does anybody have any experience with going this route? Have you tried to use the closure xml parser for it?
-Curtis
Need help in writing Skill for routing between two different MOS
Hi,
I am starting with skill learning. Please help me with below mentioned query
*******
Two different mos have been spaced apart having their sources common. I want to join these sources using dbcreatepath(). How to extract co-ordinates of these two sources ? So i can use them to connect them using path.
Thanks,
Raghu
The creation of customVia failed
Hello all,
I'm trying to put another via on the top of an existing one (here called "obj") by this command:
dbCreateVia(obj~>cellView techFindViaDefByName(techGetTechFile(obj~>cellView) "M2M3") obj~>origin obj~>orient list(list("cutRows" 2) list("cutColumns" 2)))
It worked well in several technologies but not in the actual one. Now I'm getting this warning:
*WARNING* (DB-220810): dbCreateCustomVia: The creation of customVia with a cdsGenViaDef is not supported.
Shall I use a different function to do that? I've already spent some time investigating, but without success.
Please, can anybody give me an advice? I use Virtuoso 6.1.7.
Adam
Set a permute rule with SKILL
How to use auto-abutment in custom Pcells
How to invoke the geSaveAllForm?
I work on a team that generates test pattern layouts in Virtuoso programmatically with SKILL. We have found that new users to Virtuoso are regularly surprised that, when they run DRC, what they see in the Virtuoso Layout Editor window doesn't always match what Calibre DRC sees in the GDS! When this happens (and it happens to everyone eventually), I have to explain to them that Virtuoso is not WYSIWYG: streaming out to GDS uses what's on the disk, not what's on the screen, so one must remember to dbSaveall of one's layouts before running verification, lest one experience "ghost markers" in Calibre RVE; i.e. DRC error markers that don't have any relevant shapes under them. Since this behavior regularly surprises people, as most applications are of course WYSIWYG nowadays, my fellow CAD support engineers and I decided that we should try to come up with an automated solution--some way to warn users when the layout they are about to stream out contains one or more modified-but-unsaved cellviews.
I noticed that, in this situation, the XStream Out GUI brings up exactly the kind of form I am looking for after the Translate button is pressed, listing the modified-but-unsaved cellviews for the current design being streamed out only (I verified that it does not include extraneous modified-but-unsaved layout cellviews, which is excellent), and allowing the user to select some cellviews to save just before streaming out. I noticed that this same form is also used in the ciwHiExit command (which explains why it says, "Save the following data before closing", which is not entirely applicable in the context of XStream Out, but nobody reads those forms that closely anyway, right? :)). I can see from the log that the form of interest is called geSaveAllForm, and I can see in the Virtuoso Design Environment SKILL Reference that there is a function called geRegSaveAllTrigger to set the trigger callback for that form (though when exactly one would want to do that is not entirely clear to me...?), but I can't figure out how to actually invoke the geSaveAllForm from my own code! Any ideas?
--tom
How to corrupt a GDS with dbCreateParamInst
Recently one of our new SKILL programmers (lets call him Obi Wan) discovered a way to update a pcell such that it streams out "successfully" (i.e. 0 errors), but the resulting GDS cannot be opened by Calibre DRC/DRV. (I did not attempt to stream it back in to Virtuoso, but presumably that would have failed as well.)
After careful debugging, he narrowed the problem down to this line:
dbCreateParamInst( pcCellView cvDbShapeStaggered nil origin "R0" 2 pcellParamList )
Obi Wan had copied this pcell code from another pcell so that he could make a small change. In the original pcell (which streams out without issue), the corresponding line is the same, save for one tiny detail:
dbCreateParamInst( pcCellView cvDbShapeStaggered nil origin "R0" 1 pcellParamList )
I.e. the "numInst" parameter was 1 in the working pcell, and accidentally setting it to 2 broke streamout!
That mysterious "numInst" parameter to dbCreateInst, dbCreateParamInst, etc. has always bothered me. What does it do, exactly? Apparently, if you dare to set it to something other than 1, it silently corrupts your GDS! :P The documentation doesn't say what's supposed to happen when numInst> 1 (do I get two instances on top of each other?), but it does say it works with the instance name (e.g. "I3<1:0>"), so I'm guessing this parameter is meaningful for schematics, but not for layouts?
Anyway, it's troubling that XStreamOut generated a garbage GDS without throwing an error, or even a warning about it! Can anyone from Cadence reproduce this on their end, or would you like a testcase?
Multiple gds expot method
How to get X corresponding to max Y of a waveform in ocean ?
Hi there,
I have a waveform vd , and I need to identify the ymax and the corresponding X .
If there are multiple peaks with the same ymax , first X has to be found.
What is the best/safe way to get X?
Based on the documentation I'm using now something like this:
xOfMaxY = xmax(peak(vd ?ytol peakToPeak(vd)))
Is this OK?
Thanks,
Marcel
Change color/width of selected net via SKILL code
Hi all,
I'm working with multi voltage designs and I would like to use color/width coding in the wires of the schematic to illustrate low,medium and high voltage domains. The idea is to change the width and color of a selected net (not only the wire segment) with via a hotkey after having selected it with a mouse click. Essentially it would be something as highlighting a net but instead of temporarily changing its properties, do it permanently.
Has anybody done this successfully?
Regards,
Sense gate metal1 in pcell(lowest hierarchy) and draw metal1 path to connect all gates in a row of 10 pcells in current hierarchy(1 hierarchy above than the lowest hierarchy).
Hello all,
I have instantiated ten units of basic nfet instance P-cells, arranged in 1 single row, all are aligned in y-axis, all are abbuting each other. I want to write a skill code that if i select all ten nfet instances, it should sense the metal1 over gate of the nfet instances and make a M1 metal path to connect all the gates of the ten nfets in my layout level, with a press of some key. Also, i cant desend into p-cell since access is denied. How can i do this?
Thanks
SkillGakusei