Hi all, I am targeting my design on Acex EP1K100QC208-3 FPGA. I did most of my development using Leonardo Spectrum synthesizer(2002) and Max +2. My license for leonardo expired, and I decided to use Quartus II(v3.0). When I compile using Quartus, Iam getting a negative slack time for one of my clock. when I compiled the same FPGA code using LS and Max
+2, I did not have any timing issues . In the compiler settings, I have enabled the "optimize i/o cell register placement for timing" option. I also tried different synthesis tool in quartus (FPGA express, LS,..) but I could not get the timing right. Can anyone help me?
Hi Manfred, Thanks for your response. I am using the dedicated clock pin 79. I had a look at other threads for optimizing the speed. Some one mentioned that by increasing the seed in the fitter setting might increase the speed, but, they also mentioned that there will only be a slight improvement, and I saw a slight increase in the speed(not good enough). Any other suggestions? Thanks for your time.
If you are going to play with the seed, you need to try several settings before you can say it won't work.
I once worked on a real b--ch of a design and my coworker set up a script that would run multiple passes overnight. That was the only way we ever got the thing working. he also had to write AWK scripts to parse the timing results since this was MaxPlus2 and the thing pretty well sucked for timing analysis. I believe Quartus is much better now. But it left a bad taste in my mouth for Altera software. I'll get over it some day...
Rick "rickman" Collins
Turn off "optimize i/o cell register placement for timing". That option enables some aggressive optimizations for registered IO timing. These optimizations can hurt internal clock frequencies (fmax). If you are meeting your IO (Tsu & Tco) timing, but missing a clock timing constraint, turning this option off may help.
Changing the fitter seed can let you search for a better fit. Usually things only improve a few % if you search over several seeds, but on some designs the gains can be larger.
You can automatically search for a better fit with the Design Space Explorer (DSE) script that ships with Quartus. It will automatically sweep the fitter seed for you, and turn on some hidden try-harder options for placement, and save the best fit. For newer familes like Stratix & Cyclone, it will also experiment with different forms of physical synthesis and register packing, but those optimizations are not available for the ACEX 1K family.
Hi Vaughn, Thanks for the information. I tried DSE, and I am geeting and error saying "Error: DSE does not support the ACEX1K family!".
Yes, Iam meeting the IO (Tsu & Tco) timing. I turned of the "optimize i/o cell register placement for timing", but it did not make any difference.
Did you mean optimization technique? The optimization technique is set for speed.
I have set all my timing constraints.
I could synthesize my code for Acex 1K100 using Leonardo without any timing issues. I used MAx +2 to complie the EDIF file generated by Leonardo. By using quartus, is there anyway that I could get the same speed that I got from LS and max +2? Thanks for your time.
Apparently it didn't in QII 3.0. Sorry. I tried it in 4.0 and it worked, so I assumed it did in 3.0 as well, but apparently it was only recently ported to the ACEX 1K family. QII 4.0 will be out in 2-3 months. Until then, you can try manually changing the fitter seed, as a poor man's DSE. It's unlikely to help you much if the problem is poor synthesis making you very far from timing though.
Ok. Either you don't have registered IOs (in which case that algorithm does nothing) or it's working well and not hurting your Fmax.
Yes, it is called Optimization Technique in QII 3.0. Sorry, the version on my computers is 4.0 (in development), and we renamed the option there.
Since you're using a different synthesis tool and a newer place and route tool, there's no way to guarantee the same timing. Mostly QII beats MaxPlus2 handily for 10K designs, but there are always a few designs it does worse on.
If your speed is considerably worse, I suspect you are seeing a synthesis quality problem, since you switched synthesis tools. If you look at the critical path from the timing analyzer output, and double-click on each hop in the critical path, you can see if
There are a lot of hops on the critical path (more than there were in MaxPlusII). That probably indicates poor synthesis. You may be able to re-code your HDL to get better synthesis. Or you could synthesize with Leonardo and bring that into Quartus, since it sounds like you got good results with Leonardo.
There aren't that many hops (logic levels) on the critical path, but they use a lot of interconnect on each hop. This indicates poor place & route, and changing the fitter seed may help.
If you generate a .qar of your design and send it in I'll file a software problem report on it, and hopefully we can find some optimization flaw. Sending in what timing you achieved in MaxPlus2 would also be helpful. But without seeing the design I'm out of ideas.