• 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. Issues with vector stimulus and spectre

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 126
  • Views 20894
  • 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

Issues with vector stimulus and spectre

itos
itos over 8 years ago

Hi,

Yesterday a friend told me about the VEC file option for spectre. It looks great! But now I spent many hours to get a simple shift register to work but I get unreliable results. Sometimes it works, sometimes not and by just making minor changes (e.g. adding a flip flop to the register) makes completely unpredctable results. This is one of my stimulus files:

radix 1 1 4 4 4 4 4 4 1
io i i i o
vname RST LOAD D<0:3> D<4:7> D<8:11> D<12:15> D<16:23> OUT
tfall 0.01
trise 0.01
vih 1.0
vil 0.0
voh 1.0
vol 0.0
tunit 1ns
; t     RST     LOAD    D1      D2      D3      D4      D5      D6      OUT
0       1       0       F       0       0       0       0       0       x
10      0       0       F       0       0       0       0       0       x
30      1       1       F       0       0       0       0       0       x
50      1       0       F       0       0       0       0       0       x

First and most importantly, do I understand correctly that an ideal voltage source with source resistance 10mOhm is connected to all the listed nodes (e.g. D0, D1, D2, ..., D23) and are either made 1V or 0V?

How can it then come that there are nodes (D4, D5) which go into a transistor gate and are 550mV?? I tried making "outz 0.000000001" (basically zero), so no matter what the circuit does (even if it's not a gate) there is no way this node can ever be 550mV. All lines D0 - D23 go into eactly the same cell (a 1:2 MUX) and two of them are just 550mV. This makes zero sense to me!

Furthermore I get unpredictable results when I use radix 8, 16, 21, 32. So I ended up splitting them into D<0:3> D<4:7> D<8:11> D<12:15> D<16:23>. Not nice. The manual says "alid vector sizes include 1 (binary), 2, 3 (octal), or 4 (hexadecimal)." which implies to me 16 or 32 or 21 would also be valid.

For example,

radix 1 1 16 1
io i i i o
vname RST LOAD D<0:15> OUT

gives the error

Error found by spectre during Digital Vector read-in.
    ERROR (USIMPRS-17704): The number of names do not match the number of vectors. Change the number of names to match the number of vectors and run the simulation again.
        
        **** Statement details for above warning or error ****
         Statement: vname RST LOAD D<0:15> OUT
         File Name: test1.vec
         Line Number: 3
        **** End of Statement details ****

But radix 8 works (which is not explicitely listed in the manual either). I would not see why 8 would work but not 16, 24 or 32.

On the other hand,

radix 1 1 111111111111111111111 1
io i i i o
vname RST LOAD D<0:20> OUT
tfall 0.01
trise 0.01
vih 1.0
vil 0.0
voh 1.0
vol 0.0
tunit 1ns
0       0       0       111111111111111111111   0

gives no error but the results make no sense (see above - 550mV although pin is only connected to a MOS gate).

Since the whole thing is so unpredicable I would like to know if this syntac is definitely valid or if it just results in unpredicted behavior without explicitely raising an error.

Any help would be greatly appreciated!

(Spectre  16.1.0.187.isr1 64bit -- 8 Dec 2016)

(a complete example that fails is hard to provide because first it includes proprietory standard cells and second it works perfectly with - say 4 flip flops - but just adding 5 messes up all results in a weird way ...)

(Using vdc and vpulse seems to work as well)

  • Cancel
Parents
  • itos
    itos over 8 years ago
    Hi Andrew,

    Wow, that explains a lot of unexpected behavior (and why it started working when I decided to leave "OUT" - seems spectre silently filled the "iiiii" in that case).

    I would have never guessed!

    Thanks!
    And thanks for filing the CCR.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • itos
    itos over 8 years ago
    Hi Andrew,

    Wow, that explains a lot of unexpected behavior (and why it started working when I decided to leave "OUT" - seems spectre silently filled the "iiiii" in that case).

    I would have never guessed!

    Thanks!
    And thanks for filing the CCR.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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