• 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. Including dspf file in Spectre and back-annotation of transistor...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 125
  • Views 8846
  • 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

Including dspf file in Spectre and back-annotation of transistor's parameters and fingers

Ron M
Ron M over 7 years ago

Hi,

Up until now, we were either using calibre/extracted view or included dspf file as a regular netlist.

Due to issues with both approaches (large dspf with wrong pin order), we want to check using DSPF back-annotation.

From the documentation, it quite clear that by default, Spectre does back-annotates transistor's parameters from the instance section of the DSPF file, however, it is not clear how it handles transistors fingers and multiply:

  • Does Spectre recognizes the cases where transistors in DSPG are split due to fingers or m factor?
  • If it does, how does it handle this case? Does it internally split the transistor or does it combine them back the single transistor statements with all RC between the pins shorted?

Thanks,

Ronen

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

    Hi Ronen,

    The way you should include DSPF is via the DSPF fields on the Setup->Simulation Files form. You should not set that view to be a stopping view - so the netlist would include the schematic description. Doing it this way includes the file using the "dspf_include" construct in spectre, and the default behaviour is to use the port information from the subckt definition and map it to the pins of the DSPF - so this means you don't need to worry about port ordering (none of that messing around with CDF termOrder).

    There's no back annotation performed here - it's simply using the devices (both designed and parasitics) fromm the DSPF. If there are parasitic resistances between the multiple fingers, APS will only combine them internally if the resistances are very small (i.e. below the threshold of shorting resistors anyway), so it's unlikely.

    I assume you're asking about the "stitching" capability that spectre can do when you're talking about backannotation. In general that's not something we really promote and isn't on the forms in ADE (by default; it's hidden behind an environment issue).

    If you include DSPF as a regular netlist, you have to take care of port ordering, plus there are some syntax challenges too - there's certain additional info in the DSPF which won't be honoured. So you shouldn't do it that way.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Ron M
    Ron M over 7 years ago in reply to Andrew Beckett

    Hi Andrew,

    The dspf_include is a great solution, on one hand, it doesn't require messing with CDF and creating spectre view for the extracted block and on the other hand, it completely replaces the pre-layout circuit with the subckt in DSPF.

    I have further question regarding dspf_include. We also use, in some cases, black-box flow where we do not extract one or more sub-circuits (digital sub-blocks). The documentation of blackbox option is not very clear, especially since we do not use QRC:

    I understand that when you add the blackbox option to the dspf_include, Spectre uses the pin order in the black-box subckt inside the DSPF and the content from the original input.scs file. This is the exact behavior that we require.

    However, our RC extractor does not output the  .subckt of the black-box. I know how to copy it from the cdl netlist, however, it is not clear where it should be. It would be very helpful if you can provide an example of such DSPF.

    When I put the empty black-box in the DSPF after the .ends of the top extracted cell, Spectre output a message that the black-box subckt was replaced by the subckt in the DSPG file. When I put it inside the top-level subckt (before the .ends) it doesn't say anything about the black-box.

    And lastly, how do I had multiple black box? I used blackbox="bb1 bb2". Is it correct?

    Thanks,

    Ronen

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Ron M
    Ron M over 7 years ago in reply to Andrew Beckett

    Hi Andrew,

    The dspf_include is a great solution, on one hand, it doesn't require messing with CDF and creating spectre view for the extracted block and on the other hand, it completely replaces the pre-layout circuit with the subckt in DSPF.

    I have further question regarding dspf_include. We also use, in some cases, black-box flow where we do not extract one or more sub-circuits (digital sub-blocks). The documentation of blackbox option is not very clear, especially since we do not use QRC:

    I understand that when you add the blackbox option to the dspf_include, Spectre uses the pin order in the black-box subckt inside the DSPF and the content from the original input.scs file. This is the exact behavior that we require.

    However, our RC extractor does not output the  .subckt of the black-box. I know how to copy it from the cdl netlist, however, it is not clear where it should be. It would be very helpful if you can provide an example of such DSPF.

    When I put the empty black-box in the DSPF after the .ends of the top extracted cell, Spectre output a message that the black-box subckt was replaced by the subckt in the DSPG file. When I put it inside the top-level subckt (before the .ends) it doesn't say anything about the black-box.

    And lastly, how do I had multiple black box? I used blackbox="bb1 bb2". Is it correct?

    Thanks,

    Ronen

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to Ron M

    Hi Ronen,

    I've never used the blackbox option with dspf_include so I'd have to construct an example which uses this (and uses two blocks to check that too). I'm on vacation this week so won't have the time to experiment - so perhaps the best bet would be to contact customer support and follow it up that way?

    If I have a moment when I return next week (if  you've not got an answer by then) I'll try it - but didn't want to keep you waiting.

    Regards,

    Andrew.

    • 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