Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/23/06 05:58
Read: times


 
#122824 - FPGA clock skew
Responding to: ???'s previous message
Jez Smith said:
The problem was a large logic design successfully placed and routed into an Altera cyclone fpga,both the behavioural and functional simulations looked good,the static timing tool showed that the setup and hold times where being met, there were no asynchronous signals and yet the thing gave incorrect answers when it was tried out in a live FPGA, so what was going wrong ?
The answer was clock skew, which is where the clock shared between adjacent registers is delayed by more than the propagation delay of the logic between the source register and the sink register, the clock was arriving late at the sink register so corrupt data was being read by the sink register.


Waitaminute ...

Are we talking about source and sink registers inside the FPGA?

Is the clock on a low-skew clock line, or is it using local routing?

Didn't the static timing analyzer tell you that you weren't meeting skew requirements?

most static timing tools cannot calculate clock skew so setup/hold times are going to be misleading at higher clock frequencies.


Quartus' STA certainly does!

There are several ways to prevent clock skew causing reliability problems in fast logic, the first and simplest is to insert delays into the logic between the source and sink registers so that the propagation delay matches the clock skew,but estimating clock skew between registers isnt easy and is highly dependant on things like supply voltage,temperature,device technology and so on.


... and then you have to ensure that the delays you've added don't get optimized away. Bad practice!

A second solution is to clock source and sink registers with different clock phases which does give you about half a clock cycle more time for the clock to sort itself out.


Actually, no, it cuts your timing in half. Say you clock the source register on the rising edge of the clock; your signal appears some clock-to-out time later. It then has to meet the setup and hold requirements around the rising edge of the clock, which occurs half a period later. If skew's really the problem, you've just made it worse!

A third solution is to arrange the clock tree so that the clock source feeds the sink register before the source register, this is something which isnt always easy to achieve in practice.


Impossible in an FPGA, unless you're a total floorplanning freak.

the fourth solution,and possibly the best is where they are available use clock phase locked loops which automatically adjust the clock phase to compensate for clock skew throughout the entire device, most FPGA manufacturers include some form of clock manager module which includes a phase locked loop or delay locked loop and it was this which sorted out the problem device which is now running happily with no problems.


Of course the PLL or DLL requires that the clocks be put onto a global clock network.

I really think your problem was that your clock was originally on local routing resources (which can incur a large skew penalty); using the PLL forced it onto the proper global routing resource. Routing very high-speed clocks on local resources is a recipe for disaster? What was your clock frequency?

I don't have Quartus installed here, as we're a Xilinx shop. However, I remember that it certainly complained if you put a clock onto a non-clock input pin or if you used local routing. Xilinx gives you a clock skew report, and when you use a global clock net, skew is on the order tenths or hundreds of nanoseconds, even without the DLL.

-a

List of 70 messages in thread
TopicAuthorDate
stand alone fpga            01/01/70 00:00      
   Whose FPGA?            01/01/70 00:00      
      thanks            01/01/70 00:00      
         The answer is...            01/01/70 00:00      
            needed to hear it from the horse's mouth            01/01/70 00:00      
               Who is the horse in this instance?            01/01/70 00:00      
                  The Stallion            01/01/70 00:00      
         or if you are feeling brave..            01/01/70 00:00      
         which Altera            01/01/70 00:00      
            No Altera or Xilinix yet            01/01/70 00:00      
               the first book to teach by            01/01/70 00:00      
                  Altera development boards            01/01/70 00:00      
                     Jez, Mahmood If you want            01/01/70 00:00      
                        ive got baseband version 10.2            01/01/70 00:00      
                  Logic book            01/01/70 00:00      
                     It assumes you know about that            01/01/70 00:00      
                        Skahill's VHDL book            01/01/70 00:00      
                           Exactly!            01/01/70 00:00      
               Why not yet?            01/01/70 00:00      
                  Deadline            01/01/70 00:00      
   RTFDS            01/01/70 00:00      
      datasheet for what device?            01/01/70 00:00      
         There are "family" data sheets that are adequate            01/01/70 00:00      
      Kittens are cute, but ...            01/01/70 00:00      
         awww poor Tiddles            01/01/70 00:00      
            The best cat            01/01/70 00:00      
               ha ha didnt work            01/01/70 00:00      
                  He didn\'t do anything to stop me when...            01/01/70 00:00      
   Why oh why didn\'t the Horse tell me?            01/01/70 00:00      
      This particular horse thought you knew            01/01/70 00:00      
      This "horse" doesn't want you to notice            01/01/70 00:00      
         This horse won the race!            01/01/70 00:00      
            Every bit of it is on their website!            01/01/70 00:00      
         been there, done that            01/01/70 00:00      
            do they still make FPGA's that small?            01/01/70 00:00      
               Small FPGAs            01/01/70 00:00      
                  a colleague said, \"the gates are free\"            01/01/70 00:00      
                     maybe for small parts            01/01/70 00:00      
                        depends on where you get pricing            01/01/70 00:00      
                     yield            01/01/70 00:00      
                  small fpga---try altera acex            01/01/70 00:00      
                     What I like to compare is a 33-bit AND gate            01/01/70 00:00      
                     CycloneII is the way to go            01/01/70 00:00      
                        Well, most 805x's run at 5 Volts ...            01/01/70 00:00      
                           well, nope            01/01/70 00:00      
                              depends on how you use 'em.            01/01/70 00:00      
                                 do you read the posts or just the titles?            01/01/70 00:00      
                                    Yes, I read 'em, but that doesn't make it so ...            01/01/70 00:00      
                                       rubbish            01/01/70 00:00      
                                          Don't be so sure ...            01/01/70 00:00      
                                             ...are you?            01/01/70 00:00      
                                                we've drifted            01/01/70 00:00      
                                             FPGA usage            01/01/70 00:00      
                                 how many do you need?            01/01/70 00:00      
                           High speed logic woe            01/01/70 00:00      
                              seen them all            01/01/70 00:00      
                              FPGA clock skew            01/01/70 00:00      
                                 I agree...but            01/01/70 00:00      
                                    WOW            01/01/70 00:00      
                        yeah well            01/01/70 00:00      
               other choices            01/01/70 00:00      
                  and there's Altera's MAX-II, too            01/01/70 00:00      
                     all different manufacturers            01/01/70 00:00      
                        ah ha well portablitly yes and no,            01/01/70 00:00      
                        crawl before you walk            01/01/70 00:00      
                           I'd get the belly even closer to the floor            01/01/70 00:00      
                              the problem with them is programming            01/01/70 00:00      
                        Multibrand HDL is like multiplatform in C            01/01/70 00:00      
                        code portability            01/01/70 00:00      
      since the beginning of time            01/01/70 00:00      

Back to Subject List