No video

How to fix Timing Errors in your FPGA design during Place and Route, meeting clock constraints

  Рет қаралды 28,155

nandland

nandland

Күн бұрын

Пікірлер: 52
@adamtheld
@adamtheld 3 жыл бұрын
Glad to see a new video! I’ve been playing around the go board, and it’s a great dev board for a hobbyist like me!
@jaspritamsingh9178
@jaspritamsingh9178 3 жыл бұрын
That is absolutely spot on. Perfect, short, crisp just like all your content. Thank you so much for all this content and keep this up, always looking forward to your content. All the best and thanks.
@TheAnilmaddala
@TheAnilmaddala 3 жыл бұрын
Was worried because it's been 6 months since your last video. Good to see new video!
@prolixescalation1932
@prolixescalation1932 2 жыл бұрын
Just leaving a comment for extra oganic traffic under the video and to express gratitude. Thank you for this video, addressing the issue straightforward in beginner-friendly manner. Quality content!
@briancooper2737
@briancooper2737 3 жыл бұрын
I would have never thought that such a simple math problem would have caused that kind of trouble. The fix was easy and intuitive, when you think about it. I guess that is the thing though, you have to figure that out first. Thanks for the help. Nice to see some new content.
@WisseSpring
@WisseSpring 3 жыл бұрын
I recently did my first ever FPGA project targeting Kintex 7 where I of course encountered timing errors. In my case it started failing when trying to do 34-bit division @ 100 MHz. After seeing this wonderful video, I'm very surprised that I almost got away with comparatively much more complex operation. Was not aware that there's such difference between FPGA hardware! Maybe it came down to something else? Just for reference: I later learned about how expensive division is and reworked my code using different approach in combination with fixed point math where you multiply with "fractions" to divide.
@HalfLife2Beta
@HalfLife2Beta 2 жыл бұрын
Thanks for your video it really made me understand quickly the concept, much clearer than my course I followed during my studies!
@ewanwordsworth1592
@ewanwordsworth1592 2 жыл бұрын
This is a fantastic video. Thanks so much for putting this up. Simple concept, but immediately helped me work on timing closure of my complex design, which I was struggling with.
@wunan9879
@wunan9879 Жыл бұрын
This problem really confused me for a long time! Very helpful video, thank you a lot !
@sumukhabharadwajmohanrao853
@sumukhabharadwajmohanrao853 3 жыл бұрын
Just brilliant! You explained it in a very simplistic manner and that's what really needed. Thank you so much. Hope you also explain adding different timing constraints to the SDC file. :-)
@_pilly
@_pilly 3 жыл бұрын
Thank you so much!!! Been looking for a video just like this one!
@pavanhegde1933
@pavanhegde1933 3 жыл бұрын
First comment. Your explanations are easy to follow 👍👍
@muniswamy100
@muniswamy100 2 жыл бұрын
Bang on target. Great effort, practical demonstration. Truly appretiate it.
@ufester27
@ufester27 2 ай бұрын
Thanks for the video. It is always helpful to be able to glean insight from experience.
@rishabhsinha8140
@rishabhsinha8140 3 жыл бұрын
Brilliantly explained !! I regularly learning from your videos.. Thanks.
@shreshthadeshpande7043
@shreshthadeshpande7043 2 жыл бұрын
A good insight of Timing Analysis. Helpful!
@quackquackwalabattak4689
@quackquackwalabattak4689 3 жыл бұрын
Welcome back to KZfaq !
@messiweltmeista
@messiweltmeista 3 жыл бұрын
thank you very much, I'm in the middle of my bachelor tesis programming an FPGA. I haven't met the timing contraints too serious yet, but I'm sure the time for it will come soon
@ismailb4334
@ismailb4334 3 жыл бұрын
I am in the exact same situation. Working on my bachelor thesis, and trying to pipeline my design to reach 50 MHz.
@messiweltmeista
@messiweltmeista 3 жыл бұрын
@@ismailb4334 are you having issues already with 50Mhz?
@ismailb4334
@ismailb4334 3 жыл бұрын
@@messiweltmeista Yes lol, I have a big combinatorial circuit that perform encryption. But I think I will parallelize it now to make the critical path shorter. Where are you from and what do you study?
@messiweltmeista
@messiweltmeista 3 жыл бұрын
@@ismailb4334 that's really interesting, yes parallelism always helps. I'm from Germany, currently studying electrical engineering
@ismailb4334
@ismailb4334 3 жыл бұрын
@@messiweltmeista Also Electrical Engineering here, in TU Delft, the Netherlands
@ahmedamraniakdi2143
@ahmedamraniakdi2143 2 жыл бұрын
this is the type of content i like, thanks
@bilalhabib2001
@bilalhabib2001 Жыл бұрын
Excellent demo, love it.
@efeberkayyitim2435
@efeberkayyitim2435 3 жыл бұрын
Good to see you Russell
@timonix2
@timonix2 2 жыл бұрын
Very often you can do a much cruder version of pipelining. Just add a pipeline stage which does not do anything at all. The synthesis tool can see that the in-between data is not used and will move around the logic to get faster timing. No thinking required.
@zigajavornik1026
@zigajavornik1026 Жыл бұрын
Kind of sad that you stopped making videos. Hope you are doing well!
@Calphool222
@Calphool222 3 жыл бұрын
Thanks so much for this video. I've got an FPGA design I've built and have been selling to friends (basically for cost), and I've struggled with timing stuff because I didn't really understand how to set up the constraints file, or how to fix timing errors. My design has 3 clock domains and video lines for input. I could get it working on the bench, but then when it was in the field I'd get weird reports of the video flaking out. Eventually through trial and error I basically *accidentally* fixed most of it with pipelining (though I didn't understand why that fixed it). Now I have a better theoretical understanding. Is the syntax for the constraints file the same for all synthesis/dev tools? I use Quartus on my Cyclone IV board (when I'm not working on the Go board of course), and I've gotten really confused on the syntax for the SDA file. I did discover that there were some "derive" commands that I didn't really understand, but they cleared up a number of timing errors. Anyway, thanks for your videos. They are much appreciated. For whatever reason this kind of training (basic context setting stuff) is very difficult to find elsewhere. Everything wants to throw you into the deep end of the pool before you even understand what swimming is.
@wi_zeus6798
@wi_zeus6798 2 жыл бұрын
Thanks a lot for the videos!
@jl3586
@jl3586 3 жыл бұрын
Thank you for another great video
@Alex-ri1zn
@Alex-ri1zn 3 жыл бұрын
Great video, thank you very much. By the way, do you usually use the "`default_nettype =none" directive in your verilog/systemverilog designs?
@mahmoudtantawi93
@mahmoudtantawi93 3 жыл бұрын
Great video! Thanks very much
@AbdAlhaleemBakkor
@AbdAlhaleemBakkor 3 жыл бұрын
Thanks a lot man , I learned a lot from you 🖤🖤
@andyhaas5366
@andyhaas5366 3 жыл бұрын
Thanks for the video, but I really hope you follow up with an example of the crossing clock domain timing errors you teased at the beginning. I have that problem, with a 60 and 50 MHz clock trying to pull from the same dp ram.
@Nandland
@Nandland 3 жыл бұрын
kzfaq.info/get/bejne/m99-iJme08WRZ5s.html
@andyhaas5366
@andyhaas5366 3 жыл бұрын
@@Nandland Thanks. I saw that video, and it's great. But there's a problem specific to timing analysis and clock domains I think, especially if the two frequencies are similar. Would the timing tools not give timing errors if you use stretching and the other techniques you use in that video?
@abhijeetchauhan4111
@abhijeetchauhan4111 2 жыл бұрын
Do we always need to register the inputs ?
@brad8122
@brad8122 2 жыл бұрын
6:31 before it was using 34 FFlip flops now it is 39. So it did simplify the design?
@shahrzadfeghhi4239
@shahrzadfeghhi4239 2 жыл бұрын
What tool are you using to do the timing analysis?
@shawnmirza325
@shawnmirza325 3 жыл бұрын
I did and FPGA design on a xc7a100tcsg324-1 and got it to successfully pass timing in Vivado, then I took this same Vivado project and reassigned the chip to a xc7a100tftg256-1 and my design does not pass timing...... Why would cause this?
@allhero4128
@allhero4128 Жыл бұрын
That the only way to slove this problem ?
@mikaelsworld6006
@mikaelsworld6006 2 жыл бұрын
How do you remove timing violation from a large register which is bitwise xored? Example: reg [7196:0] data; Always @(posedge clk) Data_out
@russellmerrick9761
@russellmerrick9761 2 жыл бұрын
Why are you doing a 7000+ bit XOR? That's... large.
@mikaelsworld6006
@mikaelsworld6006 2 жыл бұрын
@@russellmerrick9761 it's a requirement of the algorithm.
@QuantumDoja
@QuantumDoja 3 жыл бұрын
Hi Russell, My Go Board timing analysis has a "Target Frequency(MHZ)" of 111.36 - but the board should be 25MHZ. Do you know where I can change this in IceCube2? Thanks
@Nandland
@Nandland 3 жыл бұрын
Sounds like you need to add a .SDC file. Synthesis design constraint. ICEcube is a bit different, the clock gets set in the synthesis constraint file. Most other tools suggest doing it in the P&R constraint file.
@fernandoi8958
@fernandoi8958 3 жыл бұрын
Is there a way to place more pipeline stages between the LUT we get after synthesis?
@Nandland
@Nandland 3 жыл бұрын
You would have to break up the stages further. Here's one idea: shift left is the same as multiply by 2. Shift right one is the same as divide by 2.
@perakojot6524
@perakojot6524 Жыл бұрын
This example is pretty bad because dividing by 3 takes 10x more LUTs than addition and multiplication by 5 (two additions only). So you don't gain anything particularly by splitting addition and multiplication by 5, you only waste FFs.
Crossing Clock Domains in an FPGA
16:38
nandland
Рет қаралды 67 М.
Мы сделали гигантские сухарики!  #большаяеда
00:44
what will you choose? #tiktok
00:14
Анастасия Тарасова
Рет қаралды 6 МЛН
Zynq Part 1: Vivado block diagram (no Verilog/VHDL necessary!)
20:00
FPGAs for Beginners
Рет қаралды 22 М.
Understanding Timing Analysis in FPGAs
29:41
Altera
Рет қаралды 28 М.
before you code, learn how computers work
7:05
Low Level Learning
Рет қаралды 256 М.
What is a FIFO in an FPGA
17:47
nandland
Рет қаралды 73 М.
Where Does Bad Code Come From?
42:21
Molly Rocket
Рет қаралды 191 М.
ClockDomainCrossing
18:17
Paul Franzon
Рет қаралды 45 М.
stop doing tutorials. Learn to code like this...
6:49
Python Programmer
Рет қаралды 104 М.
Мы сделали гигантские сухарики!  #большаяеда
00:44