I haven't used ROACH DRAM in a long while, but I do recall testing it beyond
256MB (not very thoroughly though; wrote a counter from fabric and read back
1024MB... took many minutes) when I implemented the read_dram function in corr:
def read_dram(self, size, offset=0,verbose=False):
"""Reads data from a ROACH's DRAM. Reads are done up to 1MB at a time.
The 64MB indirect address register is automatically incremented as
necessary.
It returns a string, as per the normal 'read' function.
ROACH has a fixed device name for the DRAM (dram memory).
Uses bulkread internally.
@param self This object.
@param size Integer: amount of data to read (in bytes).
@param offset Integer: offset to read data from (in bytes).
@return Binary string: data read.
"""
According to my notes, DRAM represents a 64MB chunk of the 256MB FPGA block. An
offset (indirect page address register) is auto-incremented by this python
function as needed. So you should be able to read beyond 256MB. You can tell
this function's old though... it pre-dates the whole logging infrastructure!
YMMV.
Jason
On 25 Feb 2014, at 9:30, Marc Welz <[email protected]> wrote:
> On Mon, Feb 24, 2014 at 7:57 PM, G Jones <[email protected]> wrote:
>> Hi,
>> Sorry to repost this. Just curious if anyone has experience using more than
>> 256 MB of FPGA DRAM on the ROACH, in particular through the PPC interface.
>
> The PowerPC's virtual memory subsystem maps things in 256Mb regions/segments,
> and only one is used to access the FPGA(*) - so you will probably have
> to implement
> some sort of windowing/base+offset scheme.
>
> (The address space of the PowerPC is pretty constrained)
>
> regards
>
> marc
>