Hi all, I am trying to compile a slightly modified version of tut4 for 850MHz ADC sampling rate. I am using bwrc branch of the casper_library as it was suggested that it has latest fixes for fft and pfb_fir blocks. I have deleted those blocks and re-dropped them from the latest bwrc lib.
I followed suggestions listed on the following thread: http://www.mail-archive.com/[email protected]/msg01804.html (Some of the suggestions do not really apply anymore) I was able to compile for 820MHz, but I still get timing errors on pfb_fir block when compiling for 860MHz. Has anyone been able to compile tut4 for higher clock rates? Any suggestions? Thanks, Mandana On 01/03/2011 2:44 PM, Danny Price wrote: Hey Daniel Things start to get sticky when you go above 200MHz FPGA clock with that tute 3 spectrometer, so you might have to tweak some things under the hood to get it working at 250MHz. Have a look at this thread: http://www.mail-archive.com/[email protected]/msg01804.html As Mark said, have a look at the detailed timing report to try and track down the rogue blocks. Also, make sure you're using an up-to-date git repository; Andrew made some useful changes to the pfb and adc blocks to make them behave nicer at higher frequencies (thanks Andrew!). In particular, these commits are a must: http://casper.berkeley.edu/git/?p=mlib_devel/bwrc.git;a=commit;h=d81d7523efbbb7668ea04a4b3ce3ddc3107ad875 http://casper.berkeley.edu/git/?p=mlib_devel/bwrc.git;a=commit;h=37c90e2b98da3a48a4d3f7b67980fdd28b32a6ce To summarize all this, to get the spectrometer working at 250MHz I would suggest: * updating to the latest git repository * deleting the PFB_FIR_REAL block and dragging in a new one from your newly updated library * deleting the FFT block too, and adding in a new one * changing to the settings mentioned here: http://www.mail-archive.com/[email protected]/msg01804.html Hope that makes sense! Cheers and good luck Danny On 01/03/2011 22:17, Mark Wagner wrote: Hi Daniel, From the Matlab command prompt, you can type dos('timingan') and then open the timing report ./XPS_ROACH_base/implementation/system.twx from the analyzer. You'll see where the timing issues are occurring (i.e. negative slack). You can then go back to your design and add registers or delays where appropriate to hopefully allow data to propagate in a reasonable time. This takes up resources though, and can sometimes make things worse. If you're unable to get the design to meet timing at this point, it may behoove you to use the floor planner. Mark 2011/3/1 Daniel Esteban Herrera Peña Continuing with the frequency problem... Now from CentOS I checked the same design, it's the spectrometer from tutorial 3 which I change freq from 800 to 1000MHz and I also change the User IP Clock Rate from 200 to 250MHz, the synthesis stops in the same error, but now I see that the numbers are slight different: ---------------------------------------------------------------------------------------------------------- Constraint | Check | Worst Case | Best Case | Timing | Timing | | Slack | Achievable | Errors | Score ---------------------------------------------------------------------------------------------------------- * PERIOD analysis for net "tut3_adc/tut3_ad | SETUP | -1.638ns| 5.638ns| 110| 45473 c/adc_clk_dcm" derived from NET "tut3_ad | HOLD | 0.102ns| | 0| 0 c/tut3_adc/adc_clk_buf" PERIOD = 4 ns HIG | | | | | H 50% | | | | | I don't know what else I need to do! any insight will be greatly appreciated! Cheers, Daniel. On Fri, 25 Feb 2011 16:46:45 -0300, Daniel Esteban Herrera Peña wrote: Hi Henry, Thanks for your quick response, as you thought, I indeed enter 2000... in the meantime I digest how ADC works, I tried to compile changing freq 800 to 1000 in the original design (no interleaving), and I receive this error: ---------------------------------------------------------------------------------------------------------- Constraint | Check | Worst Case | Best Case | Timing | Timing | | Slack | Achievable | Errors | Score ---------------------------------------------------------------------------------------------------------- * PERIOD analysis for net "spec_1ghz_adc/sp | SETUP | -0.656ns| 4.656ns| 123| 31325 ec_1ghz_adc/adc_clk_dcm" derived from NE | HOLD | 0.118ns| | 0| 0 T "spec_1ghz_adc/spec_1ghz_adc/adc_clk_bu | | | | | f" PERIOD = 4 ns HIGH 50% | | | | | ---------------------------------------------------------------------------------------------------------- TS_epb_clk = PERIOD TIMEGRP "epb_clk" 88 | SETUP | 0.134ns| 11.229ns| 0| 0 MHz HIGH 50% | HOLD | 0.360ns| | 0| 0 ---------------------------------------------------------------------------------------------------------- NET "spec_1ghz_adc/spec_1ghz_adc/adc_clk_ | MINLOWPULSE | 1.000ns| 3.000ns| 0| 0 buf" PERIOD = 4 ns HIGH 50% | | | | | ---------------------------------------------------------------------------------------------------------- NET "epb_cs_n_IBUF" MAXDELAY = 4 ns | MAXDELAY | 2.366ns| 1.634ns| 0| 0 ---------------------------------------------------------------------------------------------------------- NET "spec_1ghz_adc/spec_1ghz_adc/adc_clk_ | N/A | N/A| N/A| N/A| N/A buf" PERIOD = 4 ns HIGH 50% | | | | | ---------------------------------------------------------------------------------------------------------- I see with this that I won't even be able to compile an interleaved design, what else I can try? Thank you, Daniel H. On Fri, 25 Feb 2011 10:58:47 -0800, Henry Chen wrote: Hi Daniel, It looks like you might have put 2000 into the "ADC clock rate" setting in the ADC yellow block. This will try to run the FPGA at 500MHz, which explains the timing error (it's very difficult to run the FPGA beyond 350MHz for a complex DSP design). I'm guessing you want to sample at 2GS/s, in which case you would put 1000 into the "ADC clock rate" box, and check the "ADC interleave mode" box, which will give you the effective 2GHz sampling rate. It will also run the FPGA at a much more manageable 250MHz. What you put into the "ADC clock rate" box indicates the frequency of the actual sampling clock signal you would connect to the ADC board, rather than the effective sampling rate. For the iADC it can't go much beyond 1GHz. Sorry that it's kind of confusing! Thanks, Henry On 2/25/2011 7:56 AM, Daniel Esteban Herrera Peña wrote: Hi everyone, I could sucessfully synthesize the spectrometer example, now I tried to change input frequency from the original 800MHz to 2000MHz using interleave mode, in order to avoid major changes in the design, I connected o0, o2, o4 and o6 in the pfb block (putting a terminator on the rest on the ADC outputs), after some minutes compiling a timing error appears, very similar that I had before but because of a low freq input clock, this time I'm trying to work with a higher value than design, the error is as follow: Asterisk (*) preceding a constraint indicates it was not met. This may be due to a setup or hold violation. ---------------------------------------------------------------------------------------------------------- Constraint | Check | Worst Case | Best Case | Timing | Timing | | Slack | Achievable | Errors | Score ---------------------------------------------------------------------------------------------------------- * PERIOD analysis for net "spec_2ghz_adc/sp | SETUP | -0.618ns| 2.618ns| 1949| 324926 ec_2ghz_adc/adc_clk_dcm" derived from NE | HOLD | -0.179ns| | 2718| 251622 T "spec_2ghz_adc/spec_2ghz_adc/adc_clk_bu | MINPERIOD | -0.222ns| 2.222ns| 393| 87245 f" PERIOD = 2 ns HIGH 50% duty cycle cor | MINLOWPULSE | 0.000ns| 2.000ns| 0| 0 rected to 2 nS HIGH 1000 pS | MINHIGHPULSE| 0.000ns| 2.000ns| 0| 0 ---------------------------------------------------------------------------------------------------------- * NET "spec_2ghz_adc/spec_2ghz_adc/adc_clk_ | MINPERIOD | -0.221ns| 2.221ns| 1| 221 buf" PERIOD = 2 ns HIGH 50% | | | | | ---------------------------------------------------------------------------------------------------------- This same adc_clk_buf and adc_clk_dcm gave me some headaches before with low clock frequency, but that time David George advice me to change in xps_lib/XPS_ROACH_base/pcores/adc_interface_v1_01_a/hdl/vhdl/adc_interface.vhd variables FS_FREQUENCY_MODE and DLL_FREQUENCY_MODE from HIGH to LOW. Now those variables are set in HIGH, so how can I make ADC/ROACH happy with this 2GHz input clock? Cheers, Daniel H. -- -------------------------------- Daniel Esteban Herrera Peña Ingeniero Civil Electrónico Universidad de Concepción, Chile. (41)236-0289 842-38325 --------------------------------

