• 0
infpgaadv

Advanced topics

Question

Hi, I am interested in fpga for a long time. I created beautiful projects on my own and gained quite a lot of experience.

Now, I want to move them a little further and I want to learn topics like cdc, timing, speed optimizasyon,critical path, constraints etc.

But, I don't know where to begin learning them and in which order should I learn? I really need advice on this.

I would also be very happy if you could provide books and documents of interest these subjects.(including practical examples if possible).

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

one recommendation, but check out whether it works for you:

Keshab K. Parhi "VLSI Digital Signal Processing Systems: Design and Implementation"

It's a very old (pre-FPGA) book, but it'll be as relevant in 20 years since the theory does not change.

You can find a condensed version in the lecture slides. Pick what appears interesting:
https://www.win.tue.nl/~wsinmak/Education/2IN35/Parhi/

-------

Reading through the Xilinx documentation might be a good idea. There are those people who read manuals and those who don't. Usually it's easy to tell the difference... I'd skim quickly over parts that don't seem relevant at the moment (which may be 99 %, definitely too much material to read cover-to-cover) and spend time with those parts that seem interesting or immediately relevant.

------------

For a practical example regarding timing, speed optimization, critical path, you can try this simple project: implement a pseudorandom sequence (e.g. 9 or 24 bits) and compare against a same-size number that is an input to the block (not hardcoded, e.g. set by switches). This is a simple AD-converter and you can test with a LED that it works. Then try to run at as high clock speed as you can manage e.g. 300 or 400 MHz. Understand all the warnings, fix those that are relevant (some are not but you should understand why), especially the ones related to inputs ("switches") and outputs ("LED").

Share this post


Link to post
Share on other sites
  • 0
2 hours ago, xc6lx45 said:

one recommendation, but check out whether it works for you:

Keshab K. Parhi "VLSI Digital Signal Processing Systems: Design and Implementation"

It's a very old (pre-FPGA) book, but it'll be as relevant in 20 years since the theory does not change.

You can find a condensed version in the lecture slides. Pick what appears interesting:
https://www.win.tue.nl/~wsinmak/Education/2IN35/Parhi/

-------

Reading through the Xilinx documentation might be a good idea. There are those people who read manuals and those who don't. Usually it's easy to tell the difference... I'd skim quickly over parts that don't seem relevant at the moment (which may be 99 %, definitely too much material to read cover-to-cover) and spend time with those parts that seem interesting or immediately relevant.

------------

For a practical example regarding timing, speed optimization, critical path, you can try this simple project: implement a pseudorandom sequence (e.g. 9 or 24 bits) and compare against a same-size number that is an input to the block (not hardcoded, e.g. set by switches). This is a simple AD-converter and you can test with a LED that it works. Then try to run at as high clock speed as you can manage e.g. 300 or 400 MHz. Understand all the warnings, fix those that are relevant (some are not but you should understand why), especially the ones related to inputs ("switches") and outputs ("LED").

Thanks for your advice. The documents on the link are great. I've already started reading. And also thanks for the practical example.

Share this post


Link to post
Share on other sites
  • 0
19 hours ago, infpgaadv said:

Now, I want to move them a little further and I want to learn topics like cdc, timing, speed optimizasyon,critical path, constraints etc.

I certainly won't argue against reading the available literature form Xilinx or Intel; tutorials, reference manuals, etc. A problem with diving into "advanced topics" is that it's hard to wrap your mind around everything by trying to absorb complicated information in a vacuum. It certainly doesn't hurt to be familiar with material on timing closure and constraints. Don't just stick with one vendor. I highly advise that you understand how Intel's or maybe even Actel's timing analysis tools work.

Getting into trouble, as it were, is pretty easy. Dealing with it is probably easier with a structured approach.

So, one idea for a structured approach is to browse the many Application Notes that are available from the vendors. Often they come with design files demonstrating concepts. This might be an easier way to dip your toes into deeper waters without your eyes glazing over. The reality is that simple designs often don't require much attention to timing and placement constraints but complex high clock rate designs often do. Quite a few application demo delve into advanced concepts. The nice things with this path is that you usually get some sort of analysis and explanation of the theory behind ways of dealing with complexity.

One easy path to complication is, as has been pointed out above, understanding pipelining to achieve substantially higher data rates for a given design. This will introduce you to timing closure concepts, latency, valid data scope, and other issues quickly, but with specific issues to resolve. First you need to understand the AC switching specifications for your particular device so as to make the project feasible. For real FPGA design situations what takes place beyond the IO pins is critical; but this is no longer FPGA development but digital design. Ideally, one would start with understanding digital design before trying to do FPGA development; but the is no right or wrong path to enlightenment.

If you aren't competent at doing high level simulation and writing useful behavioral and RTL testbenches the you aren't ready for the other advanced topics.

Well, for now that's my 2 cent contribution.

Bon Voyage!

Edited by zygot

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