Forum Discussion
IC is designed for bottom up approaches too. There are two extremes for boundaries. One is the flat approach, where everything(synthesis, fit, etc.) has to be redone on every compile. There are a lot of benefits to this, but as we all know, it takes longer to redo everything. The other side is where the boundary is set up to be completely independent of what occurs in the other partitions. It is synthesized independent of the other partitions, which is what IC currently does. In between is a gray area. For example, checking if passed parameters are changed. Second checking if minor synthesis across boundaries could be accepted(like passing a not-gate). Or checking if a pin being driven from another partition is tied to GND or VCC. It quickly gets extremely complicated though.
(For example, the VCC or GND one is a good example. I have seen people want an output port of one partition that is tied off to have the logic it drives in other partitions to be synthesized away. I've seen other people want the opposite, because on another build they may hook it up, and they don't want to have to resynthesize/fit the other partition.) I can see how parameters(and that's about the only thing I can think of besides some physical stuff), could be checked, but it currently doesn't work that way. There are also other caveats(what if the parameter is passed but isn't used, what if a new parameter is created.) I personally like the current implementation in that it is straightforward, understandable and direct. My experience with tools that try to figure out a lot tends to lead me scratching my head on why or why not it did something. (I'm probably paranoid, as example, I never use Post-Fit but always Post-Fit(Strict)). I understand what you're saying, but consider it far from unusable. Note that you really don't want a ton of partitions. You want a handful at most(I have cases with more, but for other reasons...), and I do tend to think of them as separate "designs". If they are truly dependent on each other compile to compile, they should be in the same partition.