• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. Automation in Calculator

Stats

  • Locked Locked
  • Replies 19
  • Subscribers 125
  • Views 15821
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Automation in Calculator

ElectronLearn
ElectronLearn over 4 years ago

Hi,

I have a design which have 100 nets and same measurements have to be done on them. Manually doing it in Visualization & Analysis XL calculator and adding expression to the ADEL seems never ending task. How can I automate it? Please help.

Thanks

Sheenu

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    Sheenu,

    Probably the simplest (especially as you're using the elderly ADE L tool) would be to use Outputs->Export, then update the CSV file in a text editor or with a script, and then do Outputs->Import again,

    If you were using the newer Explorer tool you could use the maeAddOutput function to add output expressions using a loop to build the expressions you need.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ElectronLearn
    ElectronLearn over 4 years ago in reply to Andrew Beckett

    Is this function "maeAddOutput" available in ADEXL?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ElectronLearn

    No, but it is in ADE Assembler.

    ADE L/XL have been in "sunset mode" for a while, with no new developments. If you're using IC617 or later, you really should be adopting Explorer/Assembler if possible - there are all sorts of features, performance improvements, and automation that is possible with the newer tools that wasn't possible in the past.

    That said, if you're really constrained to ADE XL for some reason, in ADE XL there is the axlAddOutputExpr function which could be used instead.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ElectronLearn
    ElectronLearn over 4 years ago in reply to Andrew Beckett

    Thanks Andrew. It would be great if u can help me locate this function also.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • ElectronLearn
    ElectronLearn over 4 years ago in reply to Andrew Beckett

    Thanks Andrew. It would be great if u can help me locate this function also.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ElectronLearn
    ElectronLearn said:
    It would be great if u can help me locate this function also.

    What do you mean? I already told you the name of the function...

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ElectronLearn
    ElectronLearn over 4 years ago in reply to Andrew Beckett

    I meant to say where in the menu of ADEXL can I find functions. I hope this is not in calculator. Is it related to Ocean scripting?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ElectronLearn

    This is not a menu. This is a SKILL function that you could use to automate the creation of the outputs. Let me put together a simple example to show the principle. Are all the nets you are wanting to make these measurements at the top level of your testbench? So in other words, if I gave you a sample piece of code which created a bunch of similar output expressions (and you can adapt the code to change it to your desired output expression) based on the nets/wires selected in the testbench schematic, would that be OK? I'm trying to avoid you having to type a list of net names.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ElectronLearn
    ElectronLearn over 4 years ago in reply to Andrew Beckett

    Oh I see, as I have always used the GUI, so I was not much aware of the programming languages, by way of which we can run things in virtuoso. Now I got your point. Surely a sample code would help. So it goes like this, I have to make a file and write code in it and then can run(load) it in CIW which will populate the expressions in ADEXL/Assembler, right?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ElectronLearn

    OK, here's some sample code:

    procedure(CCFaddManyExpr(testName template 
        @key 
          (outNameTemplate "") 
          (session axlGetWindowSession()) 
          (nets geGetSelSet())
        )
      let((netNames netTable)
        ;--------------------------------------------------------------------
        ; this first bit is just to take selected wires, or a list
        ; of net names as strings, and uniquify and sort the list
        ;--------------------------------------------------------------------
        netTable=makeTable('netTable nil)
        foreach(net nets
          cond(
            (stringp(net) netTable[net]=t)
            (dbobjectp(net) && net~>net netTable[net~>net~>name]=t)
          )
        )
        netNames=sort(netTable->? lambda((a b) alphaNumCmp(a b)<0))
        ;--------------------------------------------------------------------
        ; Then loop through all the sorted net names and build expressions
        ; to add into the outputs
        ;--------------------------------------------------------------------
        foreach(netName netNames
          axlAddOutputExpr(
            session
            testName
            lsprintf(outNameTemplate netName)
            ?expr lsprintf(template netName)
          )
        )
        t
      )
    )
    

    I suggest you put this in a file, and then in the CIW, do:

    load("thefile") ; whatever file name you stored the code in is the argument (in quotation marks)

    Then having done that, have your ADE XL view open, and over the test name do right mouse->open design in tab. On the resulting schematic tab, select the wires on the nets you wish to add (you can also select in the navigator). Then if you wish to add an expression such as VT("/netname") then enter (in the CIW):

    CCFaddManyExpr("myTest" "VT(\"/%s\")" )

    The idea is that you use '%s' where you want the net name to be. The backslashes are do deal with embedded quotation marks within the string. So this could be something more complex, and you can also specify a name for the output too if you wish:

    CCFaddManyExpr("myTest" "settlingTime(VT(\"/%s\") 0 t 1e-07 t 1) - 5e-08" ?outNameTemplate "settling %s")

    In the above "myTest" is whatever test name you're adding the outputs for.

    Of course, if you don't like what it just added, you can select them all and delete interactively.

    Hope that help!

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ElectronLearn
    ElectronLearn over 4 years ago in reply to Andrew Beckett

    Thank u Andrew !

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ElectronLearn
    ElectronLearn over 4 years ago in reply to Andrew Beckett

    Hi Andrew, 

    When I am using this fucntion as, 

    axlAddOutputExpr("session11" "tb_usr1_clk:tb_driver_1440um_singleroute:2" "ttttdsfdt" ?expr "riseTime(clipX(v("/CLKP_120u" ?result "tran") 863.6E-12 5.0E-9 ) 0 nil VAR("supply") nil 10 90 nil "time" )")

    Its giving syntax error pointing at the ?result part. I have used this expression from calculator which is able to correctly evaluate this. The thing is the function should directly take whatever is in "" as string and should be able to put it in adexl.
    So I tried this,
    axlAddOutputExpr("session11" "tb_usr1_clk:tb_driver_1440um_singleroute:2" "ttttdsfdt" ?expr "abd")

    And it passed whereas "abd" didnt even mean anything.
    Why is this error then coming in the upper use case. How can I forcefully impose something as string?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ElectronLearn

    It's because the string contains quotation marks - and so the string will end as soon as the first quotation mark it finds within the sequence of characters unless you escape them. So you'd need to do:

    axlAddOutputExpr("session11" "tb_usr1_clk:tb_driver_1440um_singleroute:2" "ttttdsfdt" ?expr "riseTime(clipX(v(\"/CLKP_120u\" ?result \"tran\") 863.6E-12 5.0E-9 ) 0 nil VAR(\"supply\") nil 10 90 nil \"time\" )")

    You'd need to do the same if using the function I provided you with above:

    CCFaddManyExpr("tb_usr1_clk:tb_driver_1440um_singleroute:2" "riseTime(clipX(v(\"/%s\" ?result \"tran\") 863.6E-12 5.0E-9 ) 0 nil VAR(\"supply\") nil 10 90 nil \"time\" )" ?outNameTemplate "rt %s")

    So all embedded quotation marks need to be prefixed by backslash to escape them so that they are not interpreted as the end of the string (or the start of another one).

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • ElectronLearn
    ElectronLearn over 4 years ago in reply to Andrew Beckett

    Hi Andrew,

    Is there a function by which I can add spec(range or less than or greater than a value etc) to each of the measurements?

    Thanks

    Sheenu

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ElectronLearn

    Hi Sheenu,

    Yes, that would be axlAddSpecToOutput() . If you were using Explorer/Assembler, there's a simpler interface using maeSetSpec().

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information