I haven't been able to get my code to boot/run out of Point2Point IPLB1 BRAM in my EDK 11.2 system on a Virtex-4 FX60 using 1 PPC405. I want to have a small bit of data in DSOCM BRAM, the rest in P2P DPLB1 BRAM, and all instructions in P2P IPLB1 BRAM.
The following alternative setups work (boot and run sucessfully):
1) Some data in DSOCM (16kB 0x00000000->0x00003FFF); everything else (instruction, data, and boot code) in shared DPLB0/IPLB0 BRAM (128kB 0xFFFE0000->0xFFFFFFFF).
2) Some data in DSOCM (16kB 0x00000000->0x00003FFF); rest of data in P2P DPLB1 BRAM(128kB 0x40020000->0x4003FFFF); .text, .init, .fini, and boot code in ISOCM BRAM (16kB 0xFFFFC000->0xFFFFFFFF).
Modifying 2) above to add a P2P IPLB1 BRAM, even without putting anything in it, breaks it. I haven't gotten a debugger on this yet, so I can't tell where in the boot process it is failing.
If I instead disconnect instruction memory from IPLB1 and connect it in a shared DPLB0/IPLB0 configuration (with DPLB1 still hooked up P2P to my data BRAM), it works.
Anybody have a clue as to what could be going on? Are there restrictions on running from P2P IPLB1?