Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
18 years ago

How to improve QuartusII compile time

Hi,

I am Altera Dist. FAE.

This specific costumer is suffering

from long compile time (5 hours)

for a design on StratixII180, 70%

utilization.

QuartusII version is 7.1.

In general, these are the tricks I am aware off:

- Incremental compilation

- More powerefull workstations (I will be happy

to have detailed suggestions regarding this point)

Any more suggestions?

Thank you anyway for reading this post.

17 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Another way to improve speed is to make the clock in your design as simple as possible when your are just testing. I don't know whether there is other way to improve it. We are suffering such long time wating too. Especially when the timing reqire is critical in the design.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I made a test with quartus 7.1

    The compile time on one core is 1h55,

    the compile time on both core is 1h37.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi,

    --- Quote Start ---

    Going from 32 bits to 64 bits will be slower as the instructions are longer.

    --- Quote End ---

    This is only sort of true. If you run 64-bit Quartus on a 64-bit OS (say, Windows), you will see a small increase in compile time (on the order of 10%). This is mostly due to the increase in the working set (active memory) of the program due to the increase in size of pointers from 32-bits to 64-bits.

    However, if you run 32-bit Quartus on 64-bit OS, you will see no slow down at all. The advantage of doing this is (a) you get access to 4 GB of memory (up from 2GB in 32-bit Windows and ~3.5GB in 32-bit Linux), and (b) 32-bit Quartus will use less memory than 64-bit Quartus.

    Unless you are compiling a full design into the largest Stratix III device with complex timing constraints, you should be fine with a 64-bit OS + 32-bit Quartus.

    Regards,

    Paul Leventis

    Altera Corp.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    I am Altera Dist. FAE.

    --- Quote End ---

    Nice to hear that even the Altera specialists are limited in Altera knowledge.:)

    Well, there is not much room for optimization: More CPU Power will lead to some 10% in performance, so people will have to wait for the forthcoming full hardware cpus, where all quartus code does not run on PCs but in an array of Stratix devices.;)

    In the meanwhile designers will have to work the "pipelined" way: Work at concurrent acting parts of the design, and having several simulations and synthesis processes running the same time (on different machines).
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Don't give up hope yet. Multicore processors are the way of the future (and the present). We are working on paralllelizing more and more of Quartus with each release. While it takes time to get appreciable gains, we're reaching the point where the multi-threaded compile gains are substantial.

    Regards,

    Paul Leventis

    Altera Corp.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Right, but still the improvements from now to the next day will be small, so what my words basically said, is thinking of working methods to get around with the current situation.

    Anyway, your sentence leads me to a new question:

    Paul, are there plans to also go the way to distributed installations on various machines?

    Apart from electronics, I am also working at graphics and audio and most of these progs nowadays have the possibility to let parts of the calculations be run on another PC/Workstation. In most cases, the additional PC works as a kind of "plugin". I would imagine, there are also activities e.g. within the placing process, which could be done completely concurrent. (?)
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi,

    The Design Space Explorer tool in Quartus will farm out multiple compilations to networked computers (with a built-in light-weight batch system or with LSF). This is the easiest, coarsest version of parallelism. Any time you can take a task a sub-divide it into large, fully independent tasks, then parallelism (fine or coarse-grained) works great, and is very scalable. But I don't think this is what you mean.

    Farming out work to other computers requires coarser-grained parallelism than what is being employed to take advantage of multiple CPUs in the same computer. For example, you could imagine that when performing timing analysis, the CAD software could analyse one clock domain on one CPU, and analyse another clock domain on another CPU. This is efficient in a system where the CPUs share memory -- the bandwidth from the CPUs to the memory (which contains the timing graph and other improtant information) is on the order of GB/s. However, if you were to try the same parallelism across computers, suddenly the software would have to send all that memory content (the timing graph) over a link (1 Gb/s, say) first... and this would probably not be worth the effort. On top of this, its a bit more of a pain to get a program to dole out work to other computers; you requiring some sort of batch computing environment or computing client, and one machine must manage the scheduling of tasks across the computing resources.

    I could see that perhaps if your design had multiple partitions (for example, in an incremental design flow) a CAD system could farm off synthesis and fitting for the various pieces to multiple machines. This is in effect what you are doing when you are using "team-based" design methodologies -- one engineer is doing one piece on their computer, while another is working on a different piece on another machine.

    Regards,

    Paul