Altera_Forum
Honored Contributor
13 years agoHelp - Quartus never completes Analysis/Synthesis
Hi - I'm dead-in-the-water after 3 hours of debugging. I have a small (21K ALUT) design on a Stratix-IV FPGA. It's a DSP design, and in
several places I re-use a small parameterized module called "shft_rnd_sat". (you can guess what it does 8-}). I recently put it in 1 additional place in the design (to replace a shift-only operation), and now the compile stalls 46% of the way in. It runs in excess of 30 minutes stuck at this point (it normally takes 2 minutes to get past this point). I've isolated it down to a single line of code - the round. I have this unconditional line data_in_shift_rnd <= (data_in (data_in_len -1 downto rshift)) + ((data_in_len-rshift-1 downto 1 => '0') & '1'); If I change it to data_in_shift_rnd <= (data_in (data_in_len -1 downto rshift)) + ((data_in_len-rshift-1 downto 1 => '0') & '0'); or even data_in_shift_rnd <= (data_in (data_in_len -1 downto rshift)) or ((data_in_len-rshift-1 downto 1 => '0') & '1'); everything works fine. I made a copy of the module that is instantiated only in the 1 new place, and changing only that copy as noted above is sufficient to turn on/off the problem. ALSO - I should mention that my design has a top-level that is little more than a generate statement with 8 instantiations of a 2.6K ALUT 'main' module which (down the hierarchy a bit) contains the troubling module. If I work with the 'main' module alone it compiles fine, however, when I try to build with 2 or more main modules instantiated (either using a generate or explicit instantiation), then it hangs. It's very predictable and repeatable. Without the problem it gets past this point in 2 minutes. With the problem it runs at least 30 minutes. (It might converge overnight but that's not a fix as it will make it hard to move forward). I don't know how to go about debugging it. I've tried recoding the module a few different ways to no avail. Any ideas? Anyone? Thanks! /j (running 64b Quartus 11.2 SP2 on CentOS)