1
\$\begingroup\$

When I compile my project in QUARTUS, it provides me with information about "internal fmax" Info: Clock 'clk' has Internal fmax of 39.37 MHz between source register <...> (period= 25.4 ns)

What does it mean exactly? Won't my program work on a frequency higher than fmax? I've seen a working project that runned on 50 MHz and had internal fmax of only 12.99 MHz. Should I care about it? Can I optimize it?

\$\endgroup\$
3
\$\begingroup\$

There is no simple answer to your question.

Basically, the tool is telling you that it has identified the longest path between any two registers in your design as having a total path delay of 25.4 ns, including register propagation delay and setup times. Note that 1/25.4 ns = 39.37 MHz.

There are any number of reasons that the design might actually run faster than this. First of all, this is a worst-case estimate over process, voltage and temperature extremes. Secondly, the path that the tool has identified may in fact be a "multi-cycle path" — one that doesn't need to propagate in a single clock cycle.

Yes, you can optimize your design. The first thing you need to do is read up on applying timing constraints to your design. Doing this will allow the synthesis tool to pick options that are more likely to meet your constraints. This is a broad topic with many subtleties, but one basic thing you can do is tell the toolchain what you need the clock period to be, rather than letting it tell you what it thinks it is. The synthesis tool will do its best to meet your requirement, and if it can't, it will tell you exactly where the problem is.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.