AMS Designer & nlAction

Discussion in 'Cadence' started by Erik Wanta, Oct 30, 2003.

  1. Erik Wanta

    Erik Wanta Guest

    I am trying to get a component not to netlist in AMS Designer but
    still netlist for assura. I added an nlAction ignore property to the
    symbol and it doesn't netlist for AMSD but Assura doesn't netlist it.

    I was able to get layoutXL to bring in the testpoints with
    envSetVal("layoutXL" "ignoreNames" `string "vxlIgnore lvsIgnore
    ignore"). That is I removed the nlAction from the ignore name list.
    I can't find the equivalent for assura. I would think assura would
    use lvsIgnore instead of nlAction anyway.

    Does anyone know of a way to get Assura to not use the nlAction
    property?
     
    Erik Wanta, Oct 30, 2003
    #1
  2. Hi Erik,

    Actually the problem here is really AMS Designer. This is something that has been
    resolved in the IC5033 release by support for AMS Netlist Procedures - I have
    a solution somewhere which explains how to do this (it was suggested by R&D
    when I reported a similar problem).

    Normally for most netlisters you wouldn't put nlAction=ignore on the symbol
    unless you wanted it ignored in all tools - you'd put the ignore on
    the stopping view. The trouble is with AMS Designer is that the netlisting of
    each cellView is done independently, and so the switch list type info is
    not used until elaboration time.

    So you end up having to write a netlisting procedure to explicitly support
    a special property to prevent netlisting in AMS Designer - and netlisting
    procedures for AMS are only supported from IC5033 onwards.

    As I'm out of the office on vacation until next week, I can't easily look this up,
    but I'm sure somebody in support could find the PCR which asks for an
    ignore - just found a record in my notes that it was PCR 601739.

    Andrew.
     
    Andrew Beckett, Oct 30, 2003
    #2
  3. Erik Wanta

    Erik Wanta Guest

    Andrew:
    I got the following in response to PCR 601739. Am I supposed to use
    amsDirect initFile in ams.env or am I supposed to specify Proc1 as an
    ams netlist procedure. I don't see any documentation on ams netlist
    procedures. spectre netlist procedures just take inst, correct? Any
    ideas would be appreciated.

    ;; Get the netlister object
    Netlister = amsGetNetlister()

    ;; Get the Verilog formatter object
    Vlog = Netlister->vlog

    ;; This netlist procedure looks for a property "amsIgnore" on the
    ;; instance (of corrPoint) and if the value is ignore, does not
    netlist
    ;; the instance.

    (defun Proc1 (formatter cellview inst)
    ;; Make sure that the master is res
    (if (equal inst->masterName "res")
    ;; Check for property amsIgnore on the instance, netlist only
    ;; if the value is not "ignore" ...
    (unless (and inst->id->amsIgnore
    (equal inst->id->amsIgnore "ignore")
    )
    ;; Not to be ignored ...
    (amsPrintInstance formatter cellview inst)
    ) ; unless
    ;; The else part: master is not corrPoint
    (amsPrintInstance formatter cellview inst)
    ) ; if
    ) ; defun

    Vlog->instanceProc = 'Proc1
     
    Erik Wanta, Oct 31, 2003
    #3
  4. Erik Wanta

    Erik Wanta Guest

    When I specify Proc1 as the netlist procedure in the ams simInfo I get
    errors that Proc1 is not callable. It returns t for
    isCallable('Proc1) however. Any ideas?
     
    Erik Wanta, Nov 1, 2003
    #4
  5. Erik Wanta

    Erik Wanta Guest

    I am able to get the netlist procedure to work in 50 33 when
    netlisting with CIW->Tools->AMS->Netlist. I am UNable to get it to
    work from HED->AMS->Design Prep as I don't think the netlist procedure
    is not getting loaded. I am told that there used to be an option
    called amsDirect initFile that could be placed in the ams.env to load
    a file prior to netlisting but it doesn't seem to work. Any ideas on
    how to load the netlist procedure so that it gets used by
    HED->AMS->Design Prep?

    (defun AMSNLPROCDoNotPrintInstance (formatterId cellViewId instanceId)

    ; do not print the instance, simply return

    t

    ) ; defun
     
    Erik Wanta, Nov 1, 2003
    #5
  6. Take this up with customer support. Realistically the only person watching this
    news group who would be able to answer this is me, and you shouldn't rely on
    me to reply in a short time frame (especially as I'm on vacation at the moment...)

    Andrew.
     
    Andrew Beckett, Nov 2, 2003
    #6
  7. Erik Wanta

    Erik Wanta Guest

    Andrew:
    I have taken this up with customer support and am told that you are
    the initiator of PCR 601739. Support can't get this to work. They
    are telling me that they are waiting to contact you. I figured I
    would try to go right to the source and see if there is an easy
    solution to this problem that you were aware of. I am not relying on
    a response and don't mean to put pressure on you or bother you on
    vacation. I just thought I would post in the hopes that maybe others
    are having the same problem and might be interested in the problem and
    have ideas for a possible solution. It seems like a common issue that
    one would want to not netlist a component for simulation and still
    netlist for LVS. I would have thought that nlAction ignore would have
    worked. I am surprised that nlAction is used by assura instead of
    lvsIgnore. Why does ams designer netlist only the symbol? Why
    doesn't it use the spectre view? What if I have 2 models for the same
    component and want to use the view name to specify which model to use
    (in spectre I could use componentName)? Why does amsd dumpt the
    verilog.vams netlists into the library instead of a netlist directory?
    I load the netlist procedure to not netlist the instance for ams
    designer since the nlAction approach won't work, but amsdirect doesn't
    see this loaded function when I run HED->AMS->Design Prep. It is my
    understanding that amsdirect doesn't use SKILL. How does it work from
    CIW->Tools->AMS->Netlist? What is the mechanism to get amsdirect
    aware of loaded SKILL?

    Please don't feel a need to respond. I am just posting the above
    questions so that I get them out in a public forum in the hopes that
    others are tackling the same issues.
     
    Erik Wanta, Nov 2, 2003
    #7
  8. Erik,

    OK, I'll look at this when I get back into the office tomorrow. I think another
    customer has hit the same problem in my absence and one of my colleagues is
    dealing with it.

    Anyway, I'll answer some of the questions below:

    I'll have to dig out my notes - I can't remember if I actually tried the solution,
    since the software wasn't available when R&D proposed the solution.
    I agree - however, AMS Designer netlisting is rather different from
    other netlisters (see below):
    All netlisters honour nlAction - it's a fundamental OSS capability, so
    each netlister doesn't have to do anything special to support it.
    The idea with AMS Designer is that each cellView creates its netlist
    independently - this is to avoid extensive netlisting time when you want
    to run a simulation. Each cellView can be netlisted, and even compiled,
    at check-and-save time, and so when any user wants to simulate, all
    that needs to be done is elaboration (if not up to date), and running the
    simulation. No netlisting at all! Even if you change the view switching in
    the config, all you need to do is re-elaborate and run. None of that
    lengthy partitioning and re-netlisting that needed to be done with
    spectreVerilog.

    The consequence of this is that view switching makes no difference at
    netlisting time. Normally you'd put nlAction=ignore on the stopping view - but
    since stopping views are not used for AMS netlisting - they only get used
    to guide the elaboration - it can't have an impact on netlisting.

    This is why it needs to be done with a netlisting procedure - either
    a specific netlisting procedure for that component, or by overloading the
    standard one so that it supports a property to control ignoring of the component.
    For the reasons I said above - the netlist is just another representation of the
    cellView - and so it makes sense that this derived bit of data goes along
    with the cellView. If done at check-and-save time, it can be used by
    any user of the cellView, rather than each user having to netlist their own copy.
    That I don't know, and will have to research. I've not seen any emails asking
    me yet, but perhaps they're waiting becausing they know I'm on vacation...
     
    Andrew Beckett, Nov 2, 2003
    #8
  9. Erik Wanta

    Erik Wanta Guest

    Andrew:
    I got this to work by adding the following to my ams.env:
    amsDirect initFile string "/path/mynetlistprocedure.il"

    Note I don't see amsDirect initFile documented on sourcelink anywhere.

    So, one can add netlist procedures to 50 33 for amsd. It is too bad
    that assura crashes with 50 33 so we can't move to it. Any ideas on
    how to get the netlist procedure working with 50 32?
     
    Erik Wanta, Nov 3, 2003
    #9
  10. Didn't get to this today, sorry.

    But that looks like what I'd have expected to work.

    netlisting procedure support for AMS Designer was only added for IC5033 (it was quite
    a big change, so wasn't added in an IC5032 ISR). So you can't do it in IC5032, sorry.

    Andrew.
     
    Andrew Beckett, Nov 3, 2003
    #10
  11. Erik,

    I've been testing this, and it all works fine, as you've seen.

    It's documented (Chapter 13 of AMS Environment User Guide in IC5033).
    It wasn't on sourcelink a few days ago, but is now.

    I've also just written up a solution for sourcelink which should (hopefully) get
    published on sourcelink after review.

    Andrew.
     
    Andrew Beckett, Nov 7, 2003
    #11
  12. Erik Wanta

    Erik Wanta Guest

    Andrew:
    I noticed that some versions of ldv delete my amsDirect initFile
    option in the ams.env file when I run design prep. ldv 50.s007
    removes my initFile option and doesn't work but ldv 51 doesn't and
    works.
     
    Erik Wanta, Nov 7, 2003
    #12
  13. Erik Wanta

    Erik Wanta Guest

    On the topic of ams netlist procedures, is there a way that I can just
    return t? That is, if I don't want to netlist an instance, I have to
    define a procedure that just returns t. Why can't I put t as the
    netlist procedure so that I don't have to use the initFile option?
     
    Erik Wanta, Nov 7, 2003
    #13
  14. Hi Erik,

    I'm quite surprised by this, because I wouldn't have thought that the LDV bit
    actually reads or touches the ams.env file. I was using ldv 50.s010 and this
    was fine - can't easily check an older version anytime soon because I'll be out
    of the UK office for a week or so (and I'd have to specifically get hold of
    an old version which I don't have installed).

    If this bothers you, I'd take it up with support (perhaps via the SR you have
    already for the netlisting stuff).

    Regards,

    Andrew.
     
    Andrew Beckett, Nov 8, 2003
    #14
  15. Hi Erik,

    Well, it needs to be the name of a function, which accepts 3 arguments.
    So t won't help. In fact, it doesn't matter what the netlisting procedure
    returns.

    So one crafty trick (I just tried this) is to set the netlist procedure to
    (say) "list" or "progn" - both of which are builtin SKILL functions
    which will handle three arguments, and are benign - the arguments
    don't really make the function do anything.

    Not especially meaningful names, for the purpose of netlisting, but
    hey, why not?

    Andrew.
     
    Andrew Beckett, Nov 8, 2003
    #15
  16. Erik Wanta

    Erik Wanta Guest

    Andrew:
    I hand edit the ams.env file. It seems that if I don't have the exact
    whitespace that it is expecting it deletes the line when design prep
    is run. That is if I add include files in the HED GUI and generate an
    ams.env file it works. If I create the ams.env file manually and
    don't make the whitespace the same as the way the HED makes it then it
    gets deleted. Has anyone else seen the case where lines added to the
    ams.env file get deleted when running design prep?
     
    Erik Wanta, Dec 2, 2003
    #16
  17. Erik,

    I've not seen that, but then I've not tried doing what you suggested. If you can
    reproduce this, I suggest logging this as an SR, because it sounds like a bug
    to me.

    Andrew.
     
    Andrew Beckett, Dec 9, 2003
    #17
  18. Hi!

    I am having some problems with Aptivia and I think that the problem
    might be that I don't have e new enough version of Cadence. Does anyone
    know what version I need to have? At the moment I am using subversion
    4.4.6.100.29

    Regards Anna Klevbrink
     
    Anna-Charlotta Klevbrink, Apr 26, 2004
    #18
  19. Aptivia is quite new, and that's quite old. I'd go for the latest MSR, MSR11, I
    think. MSR12 is due out soon, if I remember rightly.

    Andrew.
     
    Andrew Beckett, Apr 26, 2004
    #19
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.