0 Replies Latest reply on Nov 22, 2010 11:44 AM by tedk

    What happens when you address unmapped memory

    tedk

      Recall that each LUT entry maps to 16MB of memory. There may not actually be 16MB of memory there to access. What happens if you try to access memory that is unmapped?

       

      One of our users came across this problem, and here is what he found. For example, what happens if you write to and then read from memory that is mapped to the MPB, but is beyond 16KB from the start address? Consider LUT entries 192 and 193 which map to the MPBs for the tiles at (x=0,y=0) and (x=1,y=0).

       

      {9'h000,3'b011,10'h000}; // 0xc0 (192): MPB Route for core x=0, y=0...address range is 0xC0000000 to 0xC0FFFFFF ... 16MB but MPB is only 16KB

      {9'h001,3'b011,10'h000}; // 0xc1 (193): MPB Route for core x=1, y=0...address range is 0xC10000000 to 0xC1FFFFFF...16MB but MPB is only 16KB

       

      What happens if you access an addr where 0xC0003FFF < addr < 0xC1000000?

       

      When you access one of the MPB address spaces (e.g. 0xC0 – MPB of X=0, Y=0), the upper address bits are don’t care.

      This means that only the lower 14 bits of the address will be evaluated (0x00000000 – 0x00003fff are valid addresses within the MPB). As all upper address bits are literally ignored, the address 0x4000 will give you the same result than address 0x0000! Thus, you will still get an answer to a read request to address 0x4000, but the result belongs to 0x0000.