[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [partial-reconfig] Integrating Microblaze in PR design



Hi David,

I'm sorry to hear you are having such a hard time with this. PlanAhead is supposed to make PR "just work", but it sounds like you are just jumping through a set of different, but equally painful hoops that I went through 3 years ago. That was the reason I put this stuff aside after demonstrating the ICAP driver with manually-created fpga_editor "blinkenled" partial bitstreams.

It's also the reason I tell any of our students even considering dynamic/partial reconfig work to forget about it. If they have enough persistence to convince me otherwise, then maybe they have enough to deal with the hassles that go with it!

Enough whining from me - scanning your description of the issue I can't help but be scared by a mixing of 8.1 and 8.2 tools. I realise you had issues with bitinit/data2mem in 8.2 - maybe that is the best problem to be tackled, since it can be most neatly "captured" and duplicated (e.g. in a webcase - see below).

In the mixed tool situation - When you get microblaze pipeline stalls can you issue the XMD reset "rst" command, then use the 'dow' command to load a new ELF image?

Have you been able to use XMD to manually drive the various bits of the design - read/write the DDR, put characters out the uart, that sort of thing?

Similarly can you run the various TestApp_XXXX standalone apps generated by EDK?

In terms of where to go for help, are there any official support channels for PlanAhead?

It sounds crazy, but have you considered raising a webcase? There seems to be a shift at Xilinx recently whereby things must have a webcase before anyone can act - perhaps its an attempt to accurately measure support effort or something, I'm not sure.

My best suggestion is probably to wrap up your 8.2-generated bitstreams and ELF files etc into an easy-to-reproduce failure report for data2mem.

Cheers

John

David Montminy wrote:

I've have had little success putting both the MicroBlaze and my
partial reconfiguration circuit on the same Virtex II-Pro.  This
really is the last step before I can start testing some really
interesting methods for relocating cores in the Virtex II Pro
(provided I've installed John Williams drivers correctly).  This for a
master's thesis which should wrap up in early January, but if I can't
get the Microblaze to work I may have to throw out much of the work I
have done this semester.

I'm hoping that by explaining the processing I am using here, someone
will be able to point out my fatal flaw.  I continue to have the same
problem in 8.2 where data2mem crashed when I try to add the bootloop
to the bitstream.

I have been able to get 8.1 to produce a bitstream that I can add the
bootloop to but it crashes (ERROR:MDT – MicroBlaze Pipeline Stalled…)
after I load the image.bin file and start the MicroBlaze with XMD.  It
also stalls if I add MemoryTest to the bitstream (and start a zero).
The bitstreams produced by EDK works fine so I don't think it's the
design of my Microblaze.  Here's what I have to do to it to work using
EDK 8.1, ISE 8.1.01i_PR_8 and PlanAhead 8.2.2.

1.      Create the system as usual using BSB.

2.      Generate the netlist

3.      Take the system.vhd file produced by EDK and add my static
portions, reconfigurable components and bus macros.  Remove the DCM
wrappers component declarations and change the DCM wrapper instances
to DCM instances.  Add I/O buffers for all of the pins using the
static portion of my reconfigurable circuit.

4.      Update EDK's data/system.ucf file to include pins used by
static portion of reconfigurable circuit as well as LOC constraints
and I/O buffers.  I have found that the GROUP/AREA information must be
included for PlanAhead design rule checks to pass (otherwise it thinks
that reconfigurable modules are connected to all pins).

5.      Adjust system_xst.prj to the following (again required to get
PlanAhead to pass design rule checks).  Normally iobuf is no, but
isn't it required for the top-level design?

run
-opt_mode speed
-opt_level 1
-p xc2vp30ff896-7
-top system
-ifmt MIXED
-ifn system_xst.prj
-ofn ../implementation/system.ngc
-hierarchy_separator /
-iobuf YES
-sd {../implementation}

6.      Run  xst –ifn system_xst.scr

7.      Copy implementation/system.ngc to the /top directory of the
reconfigurable design.

8.      Copy the ngc files for all other components of the MicroBlaze
in the implementation to the /base directory of the partial
reconfiguration design.

9.      Create a new project in PlanAhead using top/system.ngc as the
top level file.  Include the presynthesized static modules of the PR
design, the modules of the microblaze and one version of each
reconfigurable module in the netlist path.

10.     Specify the FPGA.

11.     Add a UCF file that contains all constraints.

12.     Adjust any physical constraints that don't pass the PlanAhead
design rules.  This usually includes placement of DCM and BUFGs.

13.     Run the partial reconfiguration process in PlanAhead using the
default settings

14.     Take the static_full.bit file produced and add the bootloop
using bitinit

15.     Use XMD to download image.bin and start the processor.

All I've had to work on is the limited instructions for adding an EDK
design to a partial reconfiguration design on the Xilinx Early Access
PR website.  Does anyone know of a better source for instructions?
I've attached my system.vhd and the UCF file from PlanAhead which is
also used in xst in case someone can find the time to look that them.

Your help is very much appreciated,

Dav
id

___________________________
partial-reconfig mailing list
partial-reconfig@xxxxxxxxxxxxxx
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/partial-reconfig/