• 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 SKILL
  3. How to use a custom netlist procedure (and OSSHNL-116 error...

Stats

  • Locked Locked
  • Replies 13
  • Subscribers 143
  • Views 19830
  • 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

How to use a custom netlist procedure (and OSSHNL-116 error)

PatrikOsgnach
PatrikOsgnach over 8 years ago

Hello,

I would like to ask some information on how to desing and use a custom netlist procedure.

I have this scenario

A cell called mycell_1 (of library mylib) has a schematic view. In the schematic, I instance the cell mycell_2 (from the same library) and mycell_2 has a schematic and a symbol view.

Then, I add a config view to mycell_1 and select to use the schematic view for both cells.

Finally, I try to create a spectre netlist through adexl and all is fine.

Next, I add a new view to mycell_2, called "customnetlist" and of type "text". I don't fill in this view, I just want it to exist.

Then I call this function in the CIW:

(almSetNetlistProcedure "mylib" "mycell_2" 'NetlistTextNetlist ?view "customnetlist")

In the config view of mycell_1 I choose to use customnetlist view for mycell_2.

Now, when I netlist mycell_1, I get this error:

ERROR (OSSHNL-116): Unable to descend into any of the views defined in the view list, 'customnetlist veriloga ahdl spectre schematic av_analog_extracted av_extracted netlist', for the

instance 'I1' in cell 'mycell_1'. Either add one of these views to the library 'mylib',

cell 'mycell_2' or modify the view list to contain an existing view.

So, I must have forgotten to specify some other options. Can you help me?

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    The issue is that when you switch into a view with the normal OSS-type netlisters, they need to have what's called a "shadow" database to contain the information about the I/O (the terminals) of that block plus any hierarchy within (to allow the hierarchy to be traversed). That's not the case here because it's just a text view. 

    This will be coming soon with support for SPICE and spectre text views being added in an upcoming IC617 ISR (I believe), but for now you may need to simply create a stopping view (e.g. called "spectre" which is a copy of the symbol view) and then have your custom netlist procedure know to look alongside for a particular view name and include that text. Something like that.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • PatrikOsgnach
    PatrikOsgnach over 8 years ago
    Thanks for the explanation. Can I "create" this shadow database with SKILL so that the netlister will not complain? It doesn't have to make sense because my netlisting function does two things:

    1) it writes an "include" statement pointing to an extracted netlist which defines mycell_2 entirely
    2) it instantiates mycell_2 by writing the proper connections, including the supplies

    the point of this step is that our designers do not want to have the whole definition of mycell_2 inside the netlist of mycell_1 and they do not want to use av_extracted views.

    Today, for unknown reasons, I get a different error message (well... more than one) stating

    ERROR (OSSHNL-913): Netlisting failed because terminal 'abc' of instance 'I1' in cellview 'mylib/mycell_1/schematic'
    does not exist in switch master 'mylib/mycell_2/netlist3'

    If I set simCheckTermMismatchAction to "ignore" before making the netlist then everything works as expected, but this seems a dangerous thing to do

    Best regards,
    Patrik
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Hi Patrik,

    I think you should be able to do:

    cv=dbOpenCellViewByType("mylib" "mycell" "mytext" "netlist" "ac")
    a=dbCreateNet(cv "a")
    dbCreateTerm(a "a" "input")

    etc. The idea is that you're creating the database as a non-master database (that's what the "c" is for in the access mode) and the viewType is "netlist". Then you just need to create all the terminals in the database (which you would expect to correspond to the terminals on the symbol).

    Note that I've not tried doing this with a text view, but I think it should work... probably.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • PatrikOsgnach
    PatrikOsgnach over 8 years ago
    Hello Andrew,

    thank you, this solved all of my problems

    Best regards,
    Patrik
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • PatrikOsgnach
    PatrikOsgnach over 8 years ago

    Hello all,

    sorry for upping this discussion, but I have found a related annoyance.
    I have a cell A, which instantiate a cell B, which instantiate cell C. I use my netlist procedure only to netlist instances of C.
    If I netlist and instance of A without using my procedure (so I use schematic view for C in A's config view), I get this:

    subckt C a b inh_lSup
    R0 (b a) resistor r=1k
    C0 (a inh_lSup) capacitor c=1p
    ends C

    subckt B a b inh_lSup
    I3 (a b inh_lSup) C
    ends B

    I3 (P1 P2 VSS!) B

    but if I use my procedure to netlist C (so I use customnetlist view in A's config view) I get this:

    subckt B a b
    include "C_definition.spi"
    I3 (a b inh_lSup ) C
    ends B

    I3 (P1 P2) B

    I assume my procedure is not telling the default netlister that C needs inh_lSup and the definition of subcircuit B does not include it.
    I defined 3 terminals for C using dbCreateTerm and, in this case, inh_lSup is an inherited supply.

    Thank you and best regards,
    Patrik

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Patrik,

    This is very hard to answer without seeing the database and your netlist procedure. So I suggest you contact customer support if you can't share it here.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • PatrikOsgnach
    PatrikOsgnach over 8 years ago
    Hello Andrew,

    the procedure itself is not secret. I have uploaded it here http://pastebin.com/2qvWEsSp

    How can I upload the database?
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    My guess is that you don't have the netExpr on your terminals in the shadow database for your text view; because of this, the netlisters don't know that there is an inherited connection to your cell, so they don't bother netlisting the connections through the hierarchy.

    You can upload files using the Insert/Edit Media icon in the rich text editor when posting here (this is next to the increase indent icon). However, bear in mind that this is not customer support - I'm away this week and so can't guarantee to respond, whereas customer support should be more responsive.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • PatrikOsgnach
    PatrikOsgnach over 8 years ago
    Ok. How can I add the netExpr? With dbCreateTermNetExpr?

    Maybe I should contact the support, but I wanted to ask here first so other users, who might have the same issues, can read how I proceeded

    Best regards,
    Patrik
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago
    Yes, that SKILL function could be used.
    • Cancel
    • Vote Up 0 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