12 Replies Latest reply on Dec 7, 2012 6:06 AM by david.royle

    C-comp and output risetime

    david.royle

      We have discovered that with Hyperlynx 8.0 the output rising edge is dependent on the value of c_comp. From what I understand this is wrong.

      We are modeling an Altera Arria IIGX part (LVDS) and if we set c_comp = 0pf then its simulated rising edge matches precisely the measurement made with 12GHz scope (200ps).

      However, the Altera IBIS model calls out a 7pf c_ comp which slows the simulated rising edge down to 400ps. In other words it looks like Hyperlynx is double counting c_comp,  its effect has already taken into account in the V-T curve. I thought it was well understood that c_comp needs to be visible from the outside looking in, but invisible from the inside looking out. I have verified that 8.0 causes this behavior with other LVDS drivers as well (DS90LV049). Is this a bug in this particular version?

      I have attached a doc that does a reasonable job of describing why c_comp value should not alter launch waveform.

      Dave

        • 1. Re: C-comp and output risetime
          yu.yanfeng

          Good topic!

           

          C_comp value is very sensitive to Tr/Tf result and usually isn't enough accurate in IBIS file.  Different simulators may have thier methods and that's why you often see different Tr/Tf results from different simulators on one same circuit. I have seen many guys puzzled by diffrent results between Hyperlynx and Allegro SI(Spectraquest).  Hope this topic can be discussed further.

           

          Yanfeng

          • 2. Re: C-comp and output risetime
            weston_beal

            David,

             

            I agree that the simulator should not double-count C_comp. The effect of C_comp is already built into the rising/falling waveforms or ramp data. I was quite surprised by your finding that changing the value of C_comp changed the edge rate of the driver in HyperLynx, so I did some further investigation. I used a different model than you did, but I expect that we could find similar results with any well-made IBIS model. Here are my results.

            C_comp_compare.png

            The red, yellow and green curves are measured at the pin of the same model connected to a perfectly terminated transmission line. In each case I used the very same model, but edited the value of C_comp as indicated in the labels. I see that changing the value of C_comp changes the simulation results slightly. Now to see if the change was actually because the simulator double-counted C_comp, I created two more cases. I used the model with C_comp = 0.01p (essentially removed) and added capacitors outside the buffer model at the pin. If HyperLynx were double-counting C_comp, then the red curve would be the same as the orange curve, and the green curve would be the same as the cyan curve. Obviously, this is not the case.

             

            So, I conclude that HyperLynx could do a better job at de-embedding the effect of C_comp in a driver, but it does adjust the internal stimulus as expected to make C_comp "invisible from the inside looking out."

             

            The issue of your simulation and measurement being different probably has more to do with the process corner of your actual device under test.

             

            Regards,

            Weston

            • 3. Re: C-comp and output risetime
              david.royle

              Weston,

              Thanks for responding.

              You did not show horizontal scale on your waveforms. I am dealing with very fast 200ps signals.

              I have attached an LVDS driver IBIS model from NSC. It is simpler to model than FPGA and exhibits same behavior.

              I understand that there will be some variation between sim and scope, but I am seeing a 2x difference in risetime (200ps vs. 400ps)

              by adding 7pf of c_comp in my Altera part. Below I am showing the effect of changing c_comp from 2pf to 20pf on NSC driver.

              Dave

               

              ibis.bmpschematic.bmp

               

              waveform.bmp

              • 4. Re: C-comp and output risetime
                weston_beal

                David,

                 

                Thanks for sending your model file. With that I was able to reproduce the effect that you described in HyperLynx 8.0. We fixed a problem with rising/falling waveforms in HyperLynx 8.1.1 and it pretty well resolves your issue. Here are the results from HyperLynx 8.1.1.

                 

                compare_lvds.png

                The yellow, red and green curves are identical except for the C_comp values of 0.025pF, 2.5pF and 25pF, respectively. The orange and cyan curves show the effect of an extra 2.5pF and 25pF capacitor on the pin of the driver. So, you should upgrade your software to 8.1.1 and watch for update 3 to be released very soon that has an additional improvement for dealing with rising/falling waveforms. I don't expect update 3 to change the behavior of this model, but it might improve some of your other models.

                 

                Regards,

                Weston

                • 5. Re: C-comp and output risetime
                  david.royle

                  Thanks Weston,

                  We have an 8.1.1 upgrade in our purchasing pipeline because we need AMI model support. It is good to know that this will be fixed as well.

                  Dave 

                  • 6. Re: C-comp and output risetime
                    yu.yanfeng

                    I run a simple case on HL 8.0 Build 433 , HL 8.1 and HL 8.1.1 and found similar symptom same as your on HL 8.0 Build 433.  I think HL 8.0 may forget to consider eliminating c_comp's effect in it's KCL formular.

                    Yanfeng

                    • 7. Re: C-comp and output risetime
                      weston_beal

                      It is not obvious what the cause of the problem is because the algorithms that deal with the rising/falling waveforms take into account multiple things at once. Just to clarify, HyperLynx has always considered C_comp and tried to make it invisible from the inside looking out. Before version 8.1.1, HyperLynx did some smoothing of the waveform data to protect users from bad models. Now that IBIS model quality is generally much better than it was 10 years ago, that smoothing effect is removed in order to simulate more accurately. That is why the waveforms in 8.1.1 look very similar even when you change the value of C_comp, but looked different before.

                      • 8. Re: C-comp and output risetime
                        kirk.fabbri

                        I am seeing large differences in 8.2.1 when I vary Ccomp much like you show in the early version of HyperLynx.

                         

                        Thoughts?

                        • 9. Re: C-comp and output risetime
                          david.royle

                          Kirk,

                          I am not doing Hyperlynx work at the moment. Boy, I sure hope 8.2.1 did not break this again. Maybe you can post your waveforms like I did earlier and Mentor folks can chime in.

                          Dave

                          • 10. Re: C-comp and output risetime
                            david.royle

                            Kirk,

                            Are you still there? Are you still seeing C-comp vs. risetime issues?

                             

                            I am getting ready to begin some sims and I would be interested to know if this issue has resurfaced before I get started.

                             

                            Thanks.

                            • 11. Re: C-comp and output risetime
                              kirk.fabbri

                              Sorry I should have responded earlier.  I did another simulation to find hardly any difference between a 0.1pF and 50pF simulation.  Maybe I wasn't doing something right before but it appears that the simulator is not double counting Ccomp.

                               

                              I am using HyperLynx version 8.2.1 build 289389.