Monday, July 6, 2009

ISE 11.2 and Partitions

Recently I thought to speed up my FPGA compilation times. One method of doing this is by using "Partitions." The idea behind a partition is that you mark a module or hierarchy of modules as a partition and that partition gets processed once and that's it. Unless of course you modify the partition in which case it is synthesized / mapped / placed and routed again.

Wouldn't it be nice if things worked as they were supposed to?

So partitions in ISE are going to be removed in version 12.1 and they will then only be available in PlanAhead. This means that Xilinx won't fix any of the many wonderful bugs in their partition implementation.

Two bugs that I've experienced with partitions:
1. Modify a source file that causes ISE's automated uninitiated parsing of source files to fail and all partition information may be removed. That depends on how badly the parsing failed. This sucks as ISE will parse your source files as soon as you set focus back onto ISE, and of course you may not be done editing your source files at that moment. (It should be noted that I use an external editor for my source files.)
2. INTERNAL_ERROR:Xst:cmain.c:3446: -
I don't know what this error is but it won't let my partitions work...

I've of course removed all partitions from the design.

hoping you have better experience with partitions


  1. I stopped using Partitions a while ago because it was too buggy. I found it did work only on very simple partitions, for example modules with small area and not too many interface signals.
    Anything more complex - memory controller, Xilinx PCI Express core, Ethernet MAC - would either fail or simply not work (even if the build was clean).

  2. My first attempts at partitioning were complete failures as you can't partition a module that includes an Endpoint Block Plus for PCIe instance. Partitions are also problematic with MIGs if you have multiple MIGs with DQs in the same column. I separated my code to build partitions that got around all these issues, and still the whole partitioning system is buggy. As I said previously I no longer partition anything... it's a complete waste of time.

  3. I just got the same internal error after setting up partitions. Wouldn't it be great if FPGA tools didn't suck?

  4. Same error, no f... idea on how to fix it.
    Yes indeed, it would be great if they did not suck.

  5. Yet another good reason for using Altera FPGAs instead of Xilinx. In their synthesis tool "Quartus", partitions work perfectly :-).

  6. Ah, but Altera FPGAs don't include FIFO logic in their memory blocks, nor do they have distributed memory...
    And I enjoy the ability to instantiate Xilinx primitives directly without having to use wizards and other such things.
    I guess each vendor has their advantages and disadvantages.