cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Participant
Participant
460 Views
Registered: ‎06-04-2020

Hold Violations on the clock path

I have hold violations on the following clock paths. How do fix the clock path.

 

hold.PNG
hold_violations.PNG
0 Kudos
Reply
5 Replies
Teacher
Teacher
431 Views
Registered: ‎07-09-2009

A few questions here
why are you putting a clock into a Data input ?

Are the two clocks related in phase to each other ?
if not they are asynchronous , and you are doing a cross clock synchroniser,
and a SRL is not the way to do that.

Look up CDC ( Cross Domain Clocking )

https://www.xilinx.com/support/answers/64995.html
<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
Participant
Participant
427 Views
Registered: ‎06-04-2020

As they are outputs of MMCM so they are synchronous and timed safely.
0 Kudos
Reply
Participant
Participant
413 Views
Registered: ‎11-21-2020

If they both are from the same MMCM, they are perfectly synchronous and therefore when you sample one clock signal with the other clock signal, you sample a signal which is also going at this exact time from 0 to 1 or 1 to 0. So you have a hold violation.

But what an idea to do such a design... I can't figure out what you're trying to achieve.

0 Kudos
Reply
Teacher
Teacher
409 Views
Registered: ‎07-09-2009

may be you could draw for us where the clock comes from and how its synchronised to the clock your using as data .
<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos
Reply
Guide
Guide
390 Views
Registered: ‎01-23-2009

This question has basically already been answered. You have the D input of a flip-flop (or in this case SRL) driven by a clock. This is a violation of normal synchronous design practices that causes all kinds of static timing problems.

In general we don't do this - there are almost always ways of accomplishing what you want to do without using structures like this.

But, without knowing what the goal of this structure is, there is no way for us to advise you. In general the two options are to:

  • Replace this with a synchronous structure that accomplishes what you need
    • We need to know what it is supposed to do in order to do this
  • Determine that this path warrants some kind of timing exception and applying the exception
    • Again, we need to know what this circuit is doing in order to determine if an exception is appropriate, and, if so, what kind of exception is required

As you have already told us that this is not your design, and you have no idea what this thing does, there is no way anyone is going to be able to help you - no matter how you rephrase the question or which aspect of this illegal structure you ask about (setup, hold, structural violation).

There is no other choice - you either need to find the person that wrote this and find out what it supposed to do or reverse engineer the design to figure out what it is supposed to do. Without this, no one can solve this problem and you need to simply throw the design away.

Avrum