• 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. simulating pulse width variation

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 15137
  • 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

simulating pulse width variation

svilen
svilen over 14 years ago

 Hi,

I have a circuit that basically produces pulses with a pulse width depending on a control voltage. I use spectre to simulate it. I need to simulate the variation of the pulse width w.r.t. power supply variations. My idea was (and I may be wrong here) to perform pss-pac simulation having an ac voltage at the supply. For that I created a veriloga block which I included in the circuit. That block measures the pulse-width and outputs that value as an output voltage. The problem is that if I use last_crossing in combination with @ cross for better accuracy, pss doesn't like it and says there are hidden states. If I use only last_crossing then simulation goes through but the pulse-width the pss extracts is wrong.
I would appreciate if someone can suggest a way to perform that pulse-width measurement.
Thank you in advance.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    A couple of thoughts. First of all seeing the code would help, because there's no reason why @cross necessarily causes a hidden state problem - it depends what you do inside the @cross.

    Anyway though, the pss result would not change dependent on the ac source - this is because the PSS is only done on the large signal conditions - and so the small signal would not impact the PSS results.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • svilen
    svilen over 14 years ago

    Andrew, tanks for the reply. Here is that part of the veriloga code that performs the pw measurement: 

      tr=last_crossing( V(pw_dac)-V(vdda09)/2, 1);  // time of the rising edge of charge
      @ ( cross( V(pw_dac)-V(vdda09)/2,1 ) ) begin
      
        crossing=crossing+1; 
       
      end 
     
      tf=last_crossing( V(pw_dac)-V(vdda09)/2,-1);   // time of the falling edge of charge
      @ ( cross( V(pw_dac)-V(vdda09)/2,-1) ) begin
       
           if (crossing  == 4 ) begin
        
            chrg_pw=tf-tr;    // find charge pulse-width
            $fstrobe(pw_file, "%-.4g", chrg_pw);
     
          end
      end
     
      V(pulse_width) <+ transition(chrg_pw, 0, 100p);

     

    Do you have any suggestion how to measure the pulse-width variation caused by variations in th epower supply?

     

    Thanks 

     

    • 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