This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DDR3 connecting to C6-

I've just about finished laying out the first bank of DDR3 memory on the C6 Integra.  We are using x16 memory and I have swapped around some of the data bits.  I have currently gone outside of the byte lane, but stayed inside of the part, of course.  For example, I swapped D0 and D12.  D0 and D12 are in two different byte lanes, but inside the same DDR3 part and all of the traces for the part data lines and clocks are all equal (all 22 lines).  Is this a violation on the C6 Integra?  

 

I believe this centers around the DDR3 controller and whether it supports read-modify-write operations at the byte level.  If this is the case, I need to ripup what I've done and redo it, keeping inside the byte-lane when swapping.  I need an answer to this quickly if you can get it for me.

  • Michael,

    Data swizzling (rearranging the data bits within a byte, i.e. device D0 pin goes to memory D2 pin) is okay.  Byte swapping is also OK. The EMIF data bytes do not have to go to the "same" data bytes on the DDR memory devices, but the entire byte (data bits, data mask and DQS) must go to the same byte on the DDR device. In other words, it is okay for byte1 of the DDR device to be connected to our device's byte0, but *all* of byte0 needs to go to byte1 of the memory device. Keep the entire bytes together and there will be no issue.

    Regards,
    Marc

  • Hi Marc,

    Just to confirm that I understand the swapping options correctly. 

    Could you please confirm that the description below is correct for lane and bit swapping.

    Regards

    Manie

    For a x16 DRAM, a byte lane swap is defined as making ALL of the substitutions below:

     

          Lower byte lane <=> Upper byte lane

                  DQ07:00 <=> DQ15:08

                      LDM <=> UDM

    diff pair LDQS, LDQS* <=> diff pair UDQS, UDQS*

     

    In addition, the following bit swaps are allowable for x4, x8, or x16 DDR2 or DDR3 devices:

     

                        Any of these bits: DQ0, DQ1, DQ2, DQ3, DQ4, DQ5, DQ6, DQ7

    may be swapped with any of these bitsDQ0, DQ1, DQ2, DQ3, DQ4, DQ5, DQ6, DQ7

     

                        Any of these bits: DQ08, DQ09, DQ10, DQ11, DQ12, DQ13, DQ14, DQ15

    may be swapped with any of these bits: DQ08, DQ09, DQ10, DQ11, DQ12, DQ13, DQ14, DQ15

  • Yes, that looks correct.

    Regards,
    Marc