• 0
Ahmed Alfadhel

Increasing the clock frequency to 260 MHz


Hi ,

I am using Arty 7 kit to implement my design. 

At first I used a clock frequency of 130 MHz, and the timing was "met" .

Then I increased the clock the clock frequency to 260 MHz , but the timing constraints were "not met" . 

Pls, see the attached picture.

I read about the issue and I found myself I have to do some floorplanning for my design. 

How to do floorplanning? What is the first step that I have to do with floorplanning ?



Share this post

Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0
Posted (edited)


reading between the lines of your post, you're just "stepping up" one level in FPGA design. I don't do long answers :)but here's my pick on the "important stuff"

- Before, take one step back from the timing report and fix asynchronous inputs and outputs (e.g. LEDs and switches). Throw in a bunch of extra registers, or even "false-path" them. The problem (assuming this "beginner mistake") is that the design tries to sample them at the high clock rate. Which creates a near-impossible problem. Don't move further before this is understood, fixed and verified.

- speaking of "verified": Read the detailed timing analysis and understand it. It'll take a few working hours to make sense of it but this is where a large part of "serious" design work happens.

- Once the obvious problems are fixed, I need to understand what is the so-called "critical path" in the design and improve it. For a feedforward-style design (no feedback loops) this can be systematically done by inserting delay registers. The output is generated e.g. one clock cycle later but the design is able to run at a higher clock so overall performance improves.

- Don't worry about floorplanning yet (if ever) - this comes in when the "automatic" intelligence of the tools fails. But, they are very good.

- Do not optimize on a P&R result that fails timing catastrophically (as in your example - there are almost 2000 paths that fail). It can lead into a "rabbit's hole" where you optimize non-critical paths (which is usually a bad idea for long-term maintenance)

- You may adjust your coding style based on the observations, e.g. throw in extra registers where they will "probably" make sense (even if those paths don't show up in the timing analysis, the extra registers allow the tools to essentially disregard them in optimization to focus on what is important)

- There are a few tricks like forcing redundant registers to remain separate. Example, I have a dozen identical blocks that run on a common, fast 32-bit system clock and are critical to timing. Step 1, I sample the clock into a 32-bit register at each block's input to relax timing, and step 2) I declare these register as DONT_TOUCH because the tools would otherwise notice they are logically equivalent and try to use one shared instance. This as an example.

- For BRAMs and DSP blocks, check the documentation where extra registers are needed (that get absorbed into the BRAM or DSP using a dedicated hardware register). This is the only way to reach the device's specified memory or DSP performance.

- Read the warnings. Many relate to timing, e.g. when the design forces a BRAM or DSP to bypass a hardware register.

- Finally, 260 MHz on Artix is already much harder than 130 MHz (very generally speaking). Usually feasible but you need to pay attention to what you're doing and design for it (e.g. a Microblaze with the wrong settings will most likely not make it through timing).

- You might also have a look at the options ("strategy") but don't expect any miracles on a bad design.

Ooops, this almost qualifies as "long" answer ...



Edited by xc6lx45

Share this post

Link to post
Share on other sites
  • 0
On 5/18/2019 at 6:08 AM, xc6lx45 said:

Don't worry about floorplanning yet (if ever)

Floorplanning is where you start before designing a new board. Once you've assigned pins and created a PCB your options for meeting timing for a particularly complex, dense, and high clock rate design are limited. Of course you will need to have a reasonably 'close to final version' of your FPGA design to start with so that the tools can select the best pin locations. For a general purpose development board like the one you are using only a few interfaces need to be 'optimized' for speed; and of course the speed grade of the parts on the board have a large impact on limiting the performance of any design.

It is not always possible to select an arbitrary clock rate for any application for a particular board and always meet timing.

On the other hand it's easy to create a design that doesn't have a chance to operate at a desired clock rate when a better conceived design might. Providing the tools with good guidance in the form of constraints is often the key to achieving a particular performance goal, though don't expect Vivado to turn a poor design into a greate design.

Share this post

Link to post
Share on other sites
  • 0
Posted (edited)

Maybe one comment: In the ASIC world, "floorplanning" is an essential design phase, where you slice and dice the predicted silicon area and give each design team their own little box. The blocks are designed and simulated independently, and come together only at a fairly late phase.

ASIC differs from FPGA in some major ways:

- ASIC IOs have a physical placement e.g. along the pad ring. We don't want to run sensitive signals across the chip, need to minimize coupling for mixed-signal etc. In comparison, FPGAs are probably more robust (a complex design will definitely consider the layout, especially on larger devices. But on smaller eval boards, the first restrictions I'll probably run into are logical e.g. which clock is available where, not geometrical).

- For ASICs, we need the floorplan to design the power distribution network as an own sub-project (and many a bright-eyed startup has learned electromigration the hard way).

- In the ASIC world, we need to worry about wide and fast data paths both regarding power and area - transistors are tiny but metal wires are not.

You might have a look at "partial reconfiguration", here the geometry of the layout plays some role.


Edited by xc6lx45

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now