Hi folks,
I'm trying to get the modular partial reconfig flow going (as per XAPP
290). Details below - if anyone has any suggestions I'm all ears! I'm doing this all with ISE 6.1.02i (trying under both Linux and Windows XP, same behaviour/problems).As a first test, I successfully modularised my design, and implemented it using the modular flow described in the ISE documentation (Chapter 4 of the Development System Reference Guide). This all worked as expected.
Next, I inserted the partial reconfig bus_macro between my two modules, and created a set of placement constraints that ngdbuild would be happy with. My toplevel design complies with all of the guidelines and rules I can find in the various bits of documentation about the partial reconfig flow (my hard-copy of XAPP290 is very well worn!).
I can perform top level initial budgeting without errors or warnings (except the expected "assuming such-and-such is a module").
Doing active module implementation - I can MAP and PAR the individual modules, and export the PIMs. PAR reports failure due to some signals being unrouted. This concerned me, however I see that the same happens in the example distributed with XAPP290...
I can perform final assembly on the pims and my toplevel, and it MAPs and PARs succesfully (all signals routed in final assembly implementation). There is one strange message in this final PAR during guide file processing:
WARNING:Guide:147 - Design contains an unroutable situation due to existing islands. This may be caused by having an invalid NCD as input. Verify that the input NCD's were implemented correctly.
However eventually PAR completes without errors or more warnings.
Now here's the really wierd bit - if I try to load the placed and routed toplevel NCD file into either fpga_editor, or even bitgen, it causes that program to crash. Doing it on Linux I get a segfault, and on windows I get the standard "error in this application".
So, somehow, the tools have build such a broken NCD file that it crashes the other tools. The "progressive" NCDs produced during the various lead-up phases seem OK - I can load them into FPGA editor etc.
A couple of questions:
(1) should the active module implementation phase "fail" with unrouted signals? I thought the purpose of the bus_macro was to lock all of them down, but seeing this behaviour in XAPP290 makes me wonder.
(2) Has anyone ever seen bitgen or fpga_editor choke on an NCD produced by the implementation tools?
(3) Is there some other step I need to take to get this going?
If anyone has any ideas, please let me know.
Thanks,
John