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

errset.errset always returns nil?

$
0
0

I'm trying to use the errset function but I can't seem to get it to return the error message.

The docs give the following example:

errset( 1+"text" ) => nil
errset.errset =>
("plus" 0 t nil
      ("*Error* plus: can't handle (1 + \"text\")"))

But this is what I get when I type it into the CIW.

(errset (1 + "text"))
nil
errset.errset
nil

I'm on IC 6.1.6. Any ideas?


I've written a small unit testing framework for SKILL

$
0
0

I've written a small framework based on python's built in unit testing module.

I've included the source code here www.dropbox.com/.../src.zip

I'll put it on github at some point but I figured I should just put it out there for the moment and see if anyone has any feedback.

This is an example of a testbench to test two functions.

(qtest::runSuites
  (qtest::TestSuite ((f qub:::join_lists))
    (qtest::TestCase join_three_lists
      (qtest::assertEqual (list "X" 2 3 4 5 6)
                           (f (list (list 1 2) (list 3 4) (list 5 6))))))
  (qtest::TestSuite ((f qub::flatten_list))
    (qtest::TestCase normal_use
      (qtest::assertEqual (list 1 2 3 4 5 6 7)
                           (f (list 1 2 (list 3 (list 4 (list 5 6) 7))))))))

When the file is loaded, it would have the following output (I've intentionally edited the first one to fail):

(load "./code/src/std/test_lists.ils")
1 of 2 tests passed (1 failures) (0 skipped) (0 expected failures)
Test: join_three_lists
Result: Fail
 Message: No msg.
 Inputs: (list("X" 2 3 4 5 6) (f list(list(1 2) list(3 4) list(5 6))))
 Evaluated Inputs: (("X" 2 3 4 5 6) (1 2 3 4 5 6))

Each test is represented by the TestCase macro. It creates a list containing the test's name and the test function object. This prevents the test from polluting the global namespace. Using a keyword arg you can also mark tests to be skipped or that you expect them to fail. Each test case must return the output of an assertion function.

The test cases are grouped up into suites which are typically used to evaluate a single object (usually a function). A suite is just a list to group the tests. Each suite is put into the body of a runSuites macro which flattens the the suites into a single list and runs them when the module is loaded. I've also included a function to recursively find and load all modules beginning with a test_ prefix.

The unit tests themselves have an automated test system to make sure that they're working. There are probably a few bugs hiding in there but it works for most common cases.

The code uses two namespaces, qtest and qub. It was written in IC 6.1.6.

If you've any suggestions I'd like to hear them.

Problem in coping symbols through skill code in other new schematic window

$
0
0

Hello Cadence,

I was trying to make the multiple copy of symbol in a new schematic design through skill code. But when trying to do that, it is copying only dummy symbol (only the outline of the symbol without any function of circuitry) . Please let me know if there is any mistake in code? . I am sharing the code here. please help me.

If there is any other reference material available to make automatic schematic through code(or the commands use to make schematic through skill), please provide that too.


First i am opening the new cellview in cadence and then running the command to run this file.


procedure(ishu(Design_Lib_Name cell_Name row col)

new_design = geGetEditCellView()
cellCV_Name = dbOpenCellViewByType(Design_Lib_Name cell_Name "symbol")
orientation="R0"
for(i 0 row-1
for(j 0 col-1
cellInst = dbCreateInst(new_design cellCV_Name "cellInst" list(8*i, 8*j) orientation)
dbFlattenInst(cellInst 1 t)
)
)
for(j 0 col-1
wireId=schCreateWire(new_design "draw" "full" list(-0.5+8*j:-2 -0.5+8*j:2+7*row) 0.05 0.05 0.0)
)

)

Print coloured text in the CIW?

$
0
0

I see the CIW can print coloured text. Is there any way for a user to do the same when printing data?

probeDisplayStyle default value can be changed?

$
0
0

Hi all,

I'm using IC614 and trying to make a net probe in schematic by geAddNetProbe() command. I know it has a property called "probeDisplayStyle" and its default value is "object".

Then is it simply possible to change the default to "flight" with submitting geAddNetProbe?  If not, is there any other way to realize adding net probe with probeDisplayStyle="flight" ?  

I like to submit this from bindkey.

BR,

Starview 

Questions about using EIP mode

$
0
0

I was wondering if there is some sort of function or enviroment variable which tells my skill code that I am currently in EIP mode versus working currently in hierarchy level 0.

So far I was able to just check hiGetCurrentWindow()~>topcell==hiGetCurrentWindow()~>curCell .

Also , wondering , since I can't obviously use hiGetPoint()  when in EIP mode since that returns top level coordinates, I have to use (I think without looking) its hiGetEditToWindowPoint()

but I also noticed that hiGetWindowToEditPoint() does the reverse which (I think again without looking) you would pass to a child subcell coordinates from top level , but I cannot figure out

why someone would pass top level coordinates to a subcell.  What use would that be ??

Thanks for your consideration.

How to avoid to re-evaluate ADE-XL result tab when a custom function is used for simulating more than one design point (corners, sweep parameter or MC simulation)?

$
0
0

Hi,

I have created a custom skill/Ocean function with the aim to be used in ADE-XL as a measure ouput. Everything works fine when I have only one simulation data point, however if I have corners or a sweep variable or MC simulation, the result for that custom skill/Ocean function is "eval err" just when the simulations finish, then I have to re-evaluate the "Result" tab in order it function works.

The custom function starts with:

openResults(asiGetPsfDir(asiGetCurrentSession()))

selectResult( 'tran )

... some calculations here

Do you know what are the requirements to avoid re-evaluating the "Results" tab in ADE-XL when a custom skill/Ocean function is used in more than one simulation data point?

Thanks.

Do you know what are the requirements to aovid re-evaluating the "Results" tab in ADE-XL when a custom skill/Ocean function is used?

Thanks.

SKILL: Need to detect Duplicate Coincident Instances in Hierarchy

$
0
0

Hi Guys,

I've been using leSearchHierarchy to find duplicate coincident instances (instances overlaid on top of each other). Of course this command only gives a list of candidates. And for level-0 instances the job is easy: just compare if inst1~>transform & inst2~>transform are the same.

However, transform information is *relative* to the instance's level of hierarchy. How would I transform the transform info from instances lower down the hierarchy to make them directly comparable to the same transform from instances at level-0?

Thanks ahead of time,

Edward


How to fetch the "pass/near/fail" state from other expressions?

$
0
0

Hi All

I'd like to know where there is a function to fetch the "pass/near/fail" status for other expressions in the same run.

Currently, I have a setup like

expr1    spec1

expr2   spec2

expr3   spec3

And then I want to have the fourth expression to give me the summary, it has "pass" status when expr1~3 are all passed.

simply like the "pass/fail" results in a corner sweep for a signal expression.

Best Regards

Yi

How to check the XL status using SKILL

$
0
0

Hi,


Is it possible to use SKILL for checking following things:

  • Is a layout instance bound?
  • Is the correct master used in layout?

Data conversion between Python scipy and numpy and SKILL

$
0
0

Hello all,

I'm new  programmer of SKILL and wanted to ask if it is possible to stream data between scipy and numpy library operations from python (like vector and Matrix operations ) and SKILL codes  and vice versa.
I already implmented succefully the IPC solution on the Forum post:
https://community.cadence.com/cadence_technology_forums/f/48/t/20072#
but I Need to Interface the 2 languages on a much larger scale of data

thanks in advance

BR

Invoke Callbacks in Pcell and PVS

$
0
0

Hello,

I am building a PCell which includes a transistor of a PDK and to invoke the callbacks I am using the CCSinvokedCallbacks function recommended in "How to call CDF callbacks procedurally from SKILL?".

I am loading the CCSinvokedCallbacks file:

load("CCSinvokeCdfCallbacks.il")

    I call the CCSinvokedCallbacks in my PCell code and when I include my PCell in the layout, it works!


    But when I am now using PVS to check for drc errors I get the following errors:

    *WARNING* (DB-270001): Pcell evaluation for TESTS/test/layout has the following error(s):

    *WARNING* (DB-270002): ("eval" 0 t nil ("*Error* eval: undefined function" CCSinvokeCdfCallbacks))

    *WARNING* (DB-270003): Error kept in "errorDesc" property of the label "pcellEvalFailed" on layer/purpose "marker/error" in the submaster.

    ERROR (XSTRM-231): Pcell evaluation failed for 'TESTS/test/layout' because the pcell SKILL code contains either a syntax error or an unsupported XStream function. Check the standard output or the Virtuoso log file for more information. Either correct the pcell SKILL code or ignore the error by enabling the 'ignorePcellEvalFail' option for XStream Out.

    INFO (XSTRM-273): Translation failed. '1' error(s) and '6' warning(s) found.

    What is the recommanded way to get around this?
    Thank you in advance.

    Best regards

    Tobias

    Ocean: Reduce Spectre verbosity

    $
    0
    0

    Not sure if this is the right forum to post this in. I'm starting to use ocean for parametric analyses and it seems to run a bit slower than using ADE. This thread from 2013 said reducing the CIW output from Spectre may speed up using ocean. Does anyone know how to do this?

    Display name of a cell child on schematic

    $
    0
    0

    Hi,

    I have a design with generic cells with identical symbols. These cells contain different devices but always a single one (blackbox). 

    I would to know if it was possible to display the name of the device inside my cells. Something like an Interpreted Labels. The point being to do this automatically as soon as the child is modified. So ideally having a callback with a skill script modifying what my top cell is displaying.

    Thanks in advance,

    alg

    Using toplevel('ils) in an ocean script causes undefined variable errors

    $
    0
    0

    I'm trying to run a load pull test using Ocean. If I set the toplevel environment to Scheme mode (ils), the script generated by ADE breaks due to scoping errors. Is there any way around this?

    This is valid ocean code.

        constantPowerContours = cPwrContour(...)
        plot( constantPowerContours ?expr '( "Constant Power Contours" ) )

    while this code breaks

        toplevel('ils)

        ...

        constantPowerContours = cPwrContour(...)
        plot( constantPowerContours ?expr '( "Constant Power Contours" ) )

    and gives the following error on IC 6.1.6

        *Error* eval: unbound variable - myVar1

    Any ideas?


    Creat blockage from polygon?

    $
    0
    0

    Hi,

    In virtuoso i'm wondering if its possible to create a routing blockage from a set of polygons? I have tried the auto feature however it only creates the boundary box of the selected set, not individual polygons.

    I'm using IC6.1.7-64b.500.8

    Thanks in advance,

    Brian.

    Limitation of evalstring and ML text field

    $
    0
    0

    Hi,

    I have written a GUI where I let the users to write/paste skill script in a ML text field. I see people pasting very large text files inside the field. This concerns me. I want to know when does this method break? Which one overflows first? The ML field or evalstring/errset?

    -Ramakrishnan

    Layout to schematic connectivity

    $
    0
    0

    What is command to define layout to schematic connectivity reference?

    Paul

    SKILL Q: Auto Create Row Objects

    $
    0
    0

    Hi Guys,

    Right now to create rows I choose VXL->Create->P & R Objects->Row...

    From there I fill out the options:

    1) Site Definition Name

    2) Row Orientation

    3) Options -> "Flip Every Other Row"

    4) Create Method -> "Area Fill", "Partition", "prBoundary"

    The SKILL documentation does not seem to provide a command that takes these options as arguments. Nor is there a SKILL command to auto-create row objects using these options to fill the prBoundary. Apparently this is not a one-step solution, but requires more knowledge of the row-creation API, perhaps an entire routine. Does anybody know if I missed a single-command solution or if there's a short routine that would do what I'm asking about?

    Thanks in advance for your consideration.

    Edward

    Searching for the best way to rasterize layout data, i.e. generate a bitmap

    $
    0
    0

    We would like to generate a single-bit ('black-and-white') raster / bitmap from a certain cell in Virtuoso Layout for each of a set of layers.

    The cell size / grid size / pixel size for us would be 2.625 x 2.625 microns, but that may change.  We would generate the raster over some area of our top level layout, so, we're looking at potentially low thousands of pixels in each dimension.

    Criteria would probably be simple; maybe as simple as "if that cell contains any (>0%) of the layer in question, the pixel value will be 1, otherwise it will be 0".

    We would like to create a separate raster for metal1, a raster for via1, a raster for metal2, a raster for via2, and a raster for metal3... the point being, we have a small fixed set of layers and we'd like one raster per layer.

    SKILL might not be the best fit... maybe Diva or Dracula or Assura or Calibre, or an external program looking directly at the GDS data?  An idea or solution in SKILL or any one of those other tools would be very helpful.  This forum seemed like the best venue for the question

    Viewing all 5074 articles
    Browse latest View live


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