Forum Discussion

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

Logic Utilization with Incremental Compilation

Hi guys,

I notice that after a few times of re-compiling (after tiny changes in timing and logic), the logic utilization (LU) increases around 15% (specifically for my design, LU increases from 35% to 41%).

The strange thing is when I wipe out the db and incremental_db folder, the logic utilization goes back to 35%.

I'm using Quartus11 with incremental compilation. Does it sort-of sacrifice the area for fast recompilation?

2 Replies

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

    Adding partitions(whether there is an /incremental_db or not, which is where that information is stored) can make designs larger. The reason is that synthesis preserves all ports of a partition. For example, you may have a hierarchy that drives ports on another hierarchy but you just tie it off(drive it with a 1 or 0), allowing the downstream logic in the second hierarchy to get synthesized out. If you put a partition on one of the hierarchies(and thereby the other hierarchy is in another partition), synthesis won't rip out the downstream logic because the downstream logic is synthesized independently of the other partition. That is the whole goal of partitions, so allow independent synthesi and place and route.

    Now, your case sounds different, as having the partitions still gives the smaller design, but using the /incremental_db makes it larger. That's where it stores the post-synthesis and post-fit netlists for re-use. The only guess I have is that you were re-using a netlist that was old(there is an option to ignore changes in the source, which in older versions was post-fit(strict)). By deleting the /incremental_db, it has to re-synthesize and may make it smaller. Just a guess. You would have to do some detective work on which partitions got larger, if it occured in synthesis or place-and-route, and if it was re-using a synthesis or fit netlist(and if it matched what was being re-used).
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Adding partitions(whether there is an /incremental_db or not, which is where that information is stored) can make designs larger. The reason is that synthesis preserves all ports of a partition. For example, you may have a hierarchy that drives ports on another hierarchy but you just tie it off(drive it with a 1 or 0), allowing the downstream logic in the second hierarchy to get synthesized out. If you put a partition on one of the hierarchies(and thereby the other hierarchy is in another partition), synthesis won't rip out the downstream logic because the downstream logic is synthesized independently of the other partition. That is the whole goal of partitions, so allow independent synthesi and place and route.

    Now, your case sounds different, as having the partitions still gives the smaller design, but using the /incremental_db makes it larger. That's where it stores the post-synthesis and post-fit netlists for re-use. The only guess I have is that you were re-using a netlist that was old(there is an option to ignore changes in the source, which in older versions was post-fit(strict)). By deleting the /incremental_db, it has to re-synthesize and may make it smaller. Just a guess. You would have to do some detective work on which partitions got larger, if it occured in synthesis or place-and-route, and if it was re-using a synthesis or fit netlist(and if it matched what was being re-used).

    --- Quote End ---

    Hi,

    Thanks for some tip. I'll make some experiments and see if I can draw any conclusion.