cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
2,095 Views
Registered: ‎10-10-2017

Setup time violation, total slack very high

Hello, I am  a recently minted electronic engineer, currently working on a project derived from Simulink through SysGen.

 

After implementation, the attached document (Timing Report) represents what we are getting in terms of timing report.

 

When facing such a huge malfunction, what kind of procedures should I start adopting?

0 Kudos
7 Replies
Highlighted
Moderator
Moderator
2,085 Views
Registered: ‎01-16-2013

Hi,

I only checked the 1 violation in your report.
Number of logic levels 999, requirement is 5ns and it's impossible you can meet that.

You need to re-visit your design and work on it. You need to divide the logic in small sections and make it pipeline to achive 5n requirement.

With present design it's impossible that tool can meet this requirement.

Thanks,
Yash
0 Kudos
Highlighted
2,064 Views
Registered: ‎10-10-2017

Thanks Yash,

 

I am currently in the process of dividing the project into smaller unit, and getting them analyzed and synthesized one by one.

 

At one point, around half the chain, my timing starts to be violated (albeit much more lightly than before).


I attach here the new report, hoping i've understood what you suggested.


I feel like I need synchronized inputs on that block which gives slack errors?

0 Kudos
Highlighted
Guide
Guide
2,056 Views
Registered: ‎01-23-2009

I am not familiar with simulink, so I don't know how to advise you directly, but the issue is with architecture. Regardless of the tool you are using you need to architect a solution. Generally this means deciding what needs to be done in each clock cycle. In your example you are attempting to do an immense amount of computation in one clock cycle - it just doesn't work that way.

 

You need to architect a design that breaks the computation you need to do into smaller chunks, where each chunk is done on a consecutive clock cycle - you need to pipeline the design. In many computationally intensive design, this is relatively straight forward - you can take many clocks to perform the computation you need. However, if your computation has any amount of feedback (where the result of one operation becomes the input to the next), then pipelining becomes a problem.

 

Ultimately it is up to you to design (architect) a system that can perform the computations you need in the right number of clock cycles, and you then need to describe that architecture to some tool (be it RTL directly, or through another tool like simulink). But unless  you do so, you will not succeed. It also needs to be pointed out that not all ideas are implementable at a given performance; if your design has tons of computation with a feedback path, then there is an inherent limit to how fast it can run.

 

Finally, there are other problems with your design. The check_design shows tons of flip-flops that are clocked by the output of other flip-flops. This is very bad design practice - all clocks in your design should come from clocking resources; clock buffers driven either by clock capable pins or clock modifying blocks (PLL/MMCM). Locally generated clocks like we are seeing here can create all kinds of problems...

 

Avrum

0 Kudos
Highlighted
2,036 Views
Registered: ‎10-10-2017

At Simulink level, we design the Whole architecture by using macro-blocks (the most in-depth we can go, it is Register, but for example you cannot ever insert latches explicitly).

 

The flip flops you are likely seeing, are derived by Vivado.

 

Currently we are using a different kind of approach to the transfer of the whole architecture to Vivado.

We have divided the architecture into smaller block, and even the timing issues have become far less Dangerous and prevalent, compared to the previous stages.

 

I am attaching here the current state of timing report.


There are still failing paths, but , correct me if I am wrong, most of the negative slack comes from the IP of CLOCKING WIZARD. Is that possible? It seems very very strange.

 

Percorso Critico Delay.PNG

0 Kudos
Highlighted
Moderator
Moderator
2,032 Views
Registered: ‎01-16-2013

Hi,

The value you have highlighted in snapshot (i.e. -6.234) does not represent the violations. This is the deskew value, MMCM has capability to deskew the clock for better phase alignment.

You can read about MMCM functionality in clocking resource user guide.

Thanks,
Yash
0 Kudos
Highlighted
2,027 Views
Registered: ‎10-10-2017

Oh, I see. My worst negative slack is now -0.9ns, compared to a clock of 5ns (200MHz from the clocking wizard).

 

I have some paths which are 12 logical levels... I have read your responses in other topics, and I feel like such a situation might be improved by modifying the logic and lightening the amount of logic levels?

 

Is it correct for me to check the procedures indicated in UG906? pages 117 and following?

0 Kudos
Highlighted
Moderator
Moderator
2,024 Views
Registered: ‎01-16-2013

Hi,

UG906 is for timing closure, you can always refer those document if you feel it helps in your use case. Also check UG949 methodology user guide in your free time for better usage.

Thanks,
Yash
0 Kudos