Quantcast
Channel: Cadence Technology Forums
Viewing all 63289 articles
Browse latest View live

Forum Post: RE: auto sim with multiple dspf files for the same block

$
0
0
Kevin, To use a DSPF view, you have to be using IC617 ISR8 (or ICADV123) or later; prior to that the view existed, but the support to create the supporting database to allow netlisting wasn't enabled. With that version, the contents of the DSPF file has to be pasted into the view (so it being gzipped wouldn't work either). As I said, support for multiple such views is only coming in a future release (due mid-March). Support for the advanced options to set bus delimiters hasn't been added yet - that's requested in CCR 1397832. Kind Regards, Andrew.

Forum Post: RE: Highlighting a group of nets which match a particular regular expression

$
0
0
It's not quite a regular expression, but it does have a fair bit of flexibility - I'd suggest using the navigator assistant to do this. Bring up Window->Assistants->Navigator and then (in IC617) click on the Nets link. At the top you can enter "monitor" and it will filter to show all nets with that in the name (the drop down next to the search box allows you to have some control over case sensitivity and various other search choices). Then select all the matches in the navigator and use Right Mouse->Probe->Add. Click in blank space on the schematic and everything will be probed clearly in different colours. In IC616 and earlier IC61X versions it's similar, but rather than have categories there's a filter drop down at the top that allows you to narrow it down to Nets rather than searching everything. You can use this to search for names lower in the design hierarchy too. Regards, Andrew.

Forum Post: RE: Finding of polygons SKILL.

$
0
0
You don't want to flatten the design, because that will create a huge cellView with lots of objects and will be slow and consume lots of memory. As I said, you want to recursively visit the instances throughout the hierarchy, and collect their transformations. Apologies for not replying to your earlier reply - there's a bug in the forums which affects some mail clients which means that sometimes you only see one of the responses not all of them (it should get fixed at some point, I hope, when we move to a newer version). Here's some code (not particularly thoroughly tested) which I think does what you want. The complicated part is dealing with mosaics (arrays) if you have any): /* CCFoutputPolygonCentres.il Author A.D.Beckett Group Custom IC (UK), Cadence Design Systems Ltd. Language SKILL Date Jan 18, 2017 Modified By This code traverses the hierarchy, collecting the transformations as it goes, and outputs the centre point of any matching object (you can search given the objType and/or layerName). If either are set to be nil, then it matches all objects or all layers. e.g. port=outfile("./report.txt") cv=geGetEditCellView() ; outputs all polygons on metal1 CCFoutputPolygonCentres(cv port) ; outputs all shapes on metal1 CCFoutputPolygonCentres(cv port ?objType nil) ; outputs all rectangles on metal2 CCFoutputPolygonCentres(cv port ?objType "rect" ?layerName "metal2") close(port) Handles mosaics (for OA releases only - decided not to include the code to cope with IC5141 mosaics which were represented differently in the database). *************************************************** SCCS Info: @(#) CCFoutputPolygonCentres.il 01/18/17.11:31:39 1.1 */ /*********************************************************************** * * * CCFoutputPolygonCentres(cvId myPort [?objType "polygon"] * * [?layerName "metal1"] [?transform transformation] * * * * Outputs the centre of matching objects. The ?transform argument will * * typically not be passed by the user - it's passed internally as * * it is called recursively. * * * ***********************************************************************/ procedure (CCFoutputPolygonCentres(cvId myPort @key (objType "polygon" ) (layerName "metal1" ) (transform list (0:0 "R0" 1)) ) ;---------------------------------------------------------------------- ; Print out the actual shape centres ;---------------------------------------------------------------------- foreach (shape cvId~>shapes when (!objType || shape~>objType==objType when (!layerName || shape~>layerName==layerName fprintf (myPort "\t%L\n" dbTransformPoint (centerBox(shape~>bBox) transform) ) ) ) ) ;---------------------------------------------------------------------- ; Recursively traverse the instances ;---------------------------------------------------------------------- foreach (inst cvId~>instances when (inst~>objType== "inst" CCFoutputPolygonCentres(inst~>master myPort ?objType objType ?layerName layerName ?transform dbConcatTransform (inst~>transform transform) ) ) ) ;---------------------------------------------------------------------- ; Recursively traverse the mosaics (arrays). This is the most ; complicated part because you have to visit each row and column ;---------------------------------------------------------------------- foreach (mosaic cvId~>mosaics let ((master orient xy newTransform mosaicTransform) master= car (mosaic~>instanceList)~>master orient= car (mosaic~>tileArray) mosaicTransform= dbConcatTransform ( dbConcatTransform ( list ( mapcar (' minus mosaic~>xy) "R0" 1) list (0:0 orient 1) ) list (mosaic~>xy "R0" 1) ) ;------------------------------------------------------------------ ; Iterate over the rows and columns, flattening each ; sub-instance in the simple mosaic ;------------------------------------------------------------------ for (row 0 mosaic~>rows-1 for (col 0 mosaic~>columns-1 xy=xCoord(mosaic~>xy)+col*mosaic~>uX:yCoord(mosaic~>xy)+row*mosaic~>uY ;-------------------------------------------------------------- ; Compute the transformation of the sub-instance ;-------------------------------------------------------------- newTransform= dbConcatTransform ( dbConcatTransform ( list (xy "R0" 1) mosaicTransform) transform ) CCFoutputPolygonCentres(master myPort ?objType objType ?layerName layerName ?transform newTransform ) ) ) ) ) t )

Forum Post: Insert a tangent line into a plot

$
0
0
Hi everyone, I want to know if it is possible to insert a tangent line into a plot, tangent to it, with a certain slope and at certain (x,y). Regards.

Forum Post: RE: Programmatically set y-axis in VIVA in Log Scale

$
0
0
Paolo, If you did a log sweep in the noise analysis, it should get plotted with a log x-axis automatically, and so what I'm suggesting below wouldn't be necessary (it gets the xScale hint on the waveform from how it was swept in the simulator - with spectre, anyway). Otherwise you can override the hint that's stored on the waveform object by using an expression like this: let(((in getData("in" ?result "noise"))) in~>xScale='log in) Yes, it's a piece of SKILL code, but you can put this in your output expressions or use it as part of another expression. What it's doing is getting the original result and storing it in a temporary variable, setting the xScale attribute on the waveform object, and then returning the waveform object. Regards, Andrew.

Forum Post: RE: ADEXL Test Setup using Skill and asiGetSession Failure

$
0
0
You're doing this the wrong way. You should look at this solution which gives an example of how to do this. It doesn't make sense to do asiGetSession() that way and then asiSaveState - what you should be doing is putting the test, and then something like this: testName="IDAC_SWEEP_MAIN" htest = axlPutTest( sdb testName "ADE") axlSetTestToolArgs(htest list( list("lib" libName) list("cell" cellName) list("view" "schematic") list("sim" "spectre"))) testsess=axlGetToolSession(axlSession testName) testSession=asiGetSession(testsess) (I tend to use sevEnvironment(testsess) for the last bit, but I don't think it matters). Then having got that you can do whatever you need to the test session, no need to save state or anything like that. Regards, Andrew.

Forum Post: RE: Insert a tangent line into a plot

$
0
0
How about using the tangent function in the calculator? Regards, Andrew.

Forum Post: RE: Highlighting a group of nets which match a particular regular expression

$
0
0
Thanks Andrew! That worked like a charm.

Forum Post: RE: Insert a tangent line into a plot

$
0
0
Hi Andrew, thank you for the suggestion. I have tried that and what I get is not a curve with the slope I want. I get a simple horizontal line with its y-value equal to the slope.

Forum Post: RE: Insert a tangent line into a plot

$
0
0
That wasn't how it behaved when I used it. You provide a waveform (signal) as the input so that it can use the same x-axis points, an x and y intercept point, and a slope - having done that, it worked perfectly for me. Which IC subversion are you using (what does getVersion(t) return in the CIW, or the Help->About window say?) Regards, Andrew.

Forum Post: RE: Footprint pads naming

$
0
0
I think I figured it out using the PACK_SHORT property. Thanks.

Forum Post: RE: Programmatically set y-axis in VIVA in Log Scale

$
0
0
Dear Andrew, thank you for your reply. Actually, the axis I want to be displayed in log scale is y-axis (not x). I tried to adapt your solution, using let(((in getData("in" ?result "noise"))) in~>yScale='log in) but it does not work, i still have input-referred noise PSD plotted in linear scale. Paolo --

Forum Post: RE: Finding of polygons SKILL.

$
0
0
Thenk you Anrew, it works how i want, but after the third time (after first and second time output file is empty, and after the third time report.txt got the coordinats repeated 3 times). Regards, Sergey.

Forum Post: RE: Insert a tangent line into a plot

$
0
0
I have tried that. The input, as for an example, is the mosfet Ids vs Vgs characteristic. Sub-version .500.12. Thanks.

Forum Post: RE: Insert a tangent line into a plot

$
0
0
There are probably at least 6 major versions with that subversion (spanning 10 years). What is the full subversion number? Then I'll check and put together a small example. Regards, Andrew.

Forum Post: RE: Finding of polygons SKILL.

$
0
0
Sergey, Did you close the file after each call to the function - i.e. call the close() function? The output is buffered in SKILL (as with C stdio) and so it may just be that the buffer doesn't get flushed until there is enough data in it. So in other words, call: port=outfile("./report.txt") cv=geGetEditCellView()| CCFoutputPolygonCentres(cv port ?objType "rect" ?layerName "metal2") close(port) each time you wish to try it out (pick the right argument values for ?objType and ?layerName). Regards, Andrew.

Forum Post: RE: Insert a tangent line into a plot

$
0
0
Sorry Andrew. It pasted only half of the text. This is the sub-version: IC6.1.6-64b.500.12. Thanks for your help. Regards.

Forum Post: RE: Programmatically set y-axis in VIVA in Log Scale

$
0
0
Hi Paolo, My apologies - I misread your question. Also, the way I suggested is not the best anyway - better to use the underlying vector objects (as this method works for both X and Y axes; there is limited support for the hint on the waveform object itself): let(((in getData("in" ?result "noise"))) drGetWaveformYVec(in)~>scale="log" in) Regards, Andrew.

Forum Post: RE: Insert a tangent line into a plot

$
0
0
No problem - it happens. I just tried in that version. To make it nicer, I used the value() at my desired intercept point so that it intersected the line (this is a DC sweep of VGS for a transistor): Regards, Andrew.

Forum Post: RE: Verilog Netlister compatible net-separator in OA ?

$
0
0
Hi Andrew, This is a great hint. By using your method for the netlist - setup and from within the native Virtuoso Verilog / SystemVerilog Integration Environment, I finally was able to receive the same result. I have to talk to engineers in my company to check the reason for the different setup. Many thanks to you for your great support. Kind regards, Gregor
Viewing all 63289 articles
Browse latest View live


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