cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
ssampath
Voyager
Voyager
1,139 Views
Registered: ‎10-12-2016

how to overcome hold violation due to skew ?

Hi Friends, 

I am getting hold violation due to clock skew. this skew is due to gated clock. pls help me on this.

hold_LUT.PNG

 

NOTE : any help or suggestions are highly appreciated. 

Thank You 

S Sampath 

-Sampath
0 Kudos
2 Replies
patocarr
Teacher
Teacher
1,124 Views
Registered: ‎01-28-2008

@ssampath

  Avoid using that structure for gated clocks. Instead, use a synchronous clock enable on the destination FFs (preferred) or use a BUFGCE to gate the clock making sure to account for it in static timing analysis. The hold violations you're seeing are known using combinatorial clock gating.

Thanks,

-Pat

 

Give kudos if helpful. Accept as solution if it solves your problem.
https://tuxengineering.com/blog

1,160 Views
Registered: ‎01-22-2015

@ssampath

I agree with patocarr’s recommendations for gating a clock.

By routing a clock through a LUT, you are doing is called “pulling a clock from the clock-tree” or “routing a clock through the FPGA fabric”.  This usually causes large clock-skew and problems with timing analysis. Generally, you want clocks to be routed only to the following:

  • clock-management-tiles (eg. MMCM or PLL)
  • clock buffers (eg. BUFG, BUFGCE)
  • the clock-pins of digital components (eg. C-pin of a register)

Here are other situations where you might want to “pull a clock from the clock-tree” - and what you should do instead:

  • Sending a clock out an FPGA pin/port: DON’T simply connect the clock to the port. DO use the ODDR (see Fig 3-7 in UG903)

  • Creating a really slow clock: It is usually best to have all clocks in your design be an output from an MMCM or PLL. However, the MMCM and PLL have a minimum output frequency (about 4.7MHz for MMCM and about 6.2 MHz for PLL). So, if clocks slower than these minimums are needed, then:  DON’T route the clock to a counter in the FPGA fabric and use the output of the counter as a clock. DO use a FPGA fabric counter to toggle the clock-enable pin of a BUFGCE or BUFHCE as shown in <this> post. You might also find the discussion of the “toggle” in <this> post to be helpful.

Mark