• 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. deepprobe to a bussed net in AMS

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 125
  • Views 19707
  • 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

deepprobe to a bussed net in AMS

paguirre78
paguirre78 over 6 years ago

Hi,

I'm trying to use a deepprobe instance from analogLib to probe a bused net inside one of the circuits in an AMS simulation. I found some rather old posts on this issue (deepprobe with AMS) and documentation on deepprobe when it was added to the analogLib not too long ago.

Since I couldn't make it work in my rather complex and large circuit, I set up a simple circuit to test what I was doing.

I created a test circuit with a bused net inside of it named Vint<4:0>.

Then I tried to reach Vint<2> from the test bench where the test circuit was instanced as I0.

If I do a spectre simulation, the deepprobe argument should be: I0.Vint\<2\> and it works perfectly.

In AMS simulation, buses in the netlist are noted with square brackets: 

wire [4:0] Vint;

Therefore, as this post suggest the deepprobe argument should be I0.Vint\[2\].

However, the resulting AMS netlist has this:

iprobe IPRB0 (I0.\Vint[2] , Vprobed);

which doesn't work due to the \ in front of Vint, which was added out of nowhere by the netlister. If I manually remove the \ from the netlist, it works!

It is worth noting that I tried using <> with or without \ and it doesn't work either (as expected) in AMS. I have also tried other combinations with no luck.

Am I doing something wrong? 

By the way, I'm running everything from ADE, using UNL netlister for AMS sims, and these are the tools version I'm using:

  • virtuoso IC6.1.7-64b.500.20 
  • ncsim(64) 15.20-s005
  • spectre 17.1.0.307.isr6

Thanks!

-P

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    This is a challenge, because the mapping performed to convert between spectre syntax and Verilog syntax for the bus gets in the way. There was an earlier discussion that I was party to in CCR 1544227 and I don't think there was really a way then - although there was sort-of a suggestion that I0.Vint\<2\> would work (from my experiments though, it doesn't). I was using IC617 ISR23 (so slightly newer than you) and an XCELIUM release, but I think it's a limitation of deepprobe (I created deepprobe in the first place, so blame me...)

    The workaround I suggested in the earlier CCR was to place an instance of patch in the lower level cell to alias the Vint<2> net to something which wasn't a bus (e.g. Vint_bit_2) and then  you can deepprobe to that instead. Not ideal, but better than nothing.

    You probably should contact customer support to see whether we can do anything to fix this properly (especially now that deepprobe is in analogLib rather than being AE-ware).

    Thanks

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • paguirre78
    paguirre78 over 6 years ago in reply to Andrew Beckett

    Thank you very much for you answer Andrew!

    I'll contact customer support as you suggest.

    Best,

    -P

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • paguirre78
    paguirre78 over 6 years ago

    Update:

    After working with customer support on this issue, I can confirm that this issue is solved after INCISIVE 15.20.022 (i was using 15.20.005).

    It is also worth mentioning that from this version on, the same deepprobe argument as in Spectre should be used in AMS sims: I0.Vint\<2\> 

    The resulting AMS netlist is the correct one with square brackets:

    iprobe IPRB0 (I0.Vint[2] , Vprobed);

     

    Best regards,

    -P

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to paguirre78

    Odd. It doesn't work for me! I was using a newer XCELIUM version but just tried again with 15.20-s070. I get:

    iprobe IPRB0 (\I0.mid<2> , midPoint);

    I wonder whether it is something to do with my test case using the inv cells from the sample library (not sure why). 

    Anyway, glad you got it working - if I had more time I'd dig a bit further!

    Andrew. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • paguirre78
    paguirre78 over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    That's odd indeed. Customer support (case 46349376) reported that it worked for them using IC6.1.7 ISR20 (as mine) and INCISIVE 15.20.071. They then tried different INCISIVE versions and apparently it worked for them from 15.20.022 and up.

    In my case, it worked with IC6.1.7 ISR20 and INCISIVE 15.20.026.

    I hope it helps!

    Best,

    -P

    • 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