Announcement

Collapse
No announcement yet.

DDR3 memory routing

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • DDR3 memory routing

    Hello,

    I was looking at the beaglebone black project and I have a question about ddr3 memory routing.
    If I understand the High Speed signals rules in lesson 4 (advanced pcb layout course), each signal group has to be routed same way. But in beaglebone black project, for example the data signal group is not routed the same way, I mean it uses different layers(top, L3 and bottom). For example, DDR_D2 is routed on top layer and DDR_D0 on layer 3(see screenshot). The board works apparently(i dont have it at home). my question is how the board can work this way?

    here is the screenshot of the board on which i just highlighted the data signal group:
    Click image for larger version

Name:	memoryRouting_BBB.PNG
Views:	470
Size:	100.5 KB
ID:	3000 Click image for larger version

Name:	memoryRouting_BBB_2.PNG
Views:	327
Size:	88.8 KB
ID:	3001

  • #2
    It is normally a compromise when you don't have the space to do it on a single layer (Top + 1 internal layer). The problem in this case is that the signals travel with a different speed on the different layers and you should take this into account if you want to achieve tight timing tolerances. Then it is not enough anymore to make all signals the same length - the faster signals will need to be shorter to compensate. This complicates the length matching quite a bit. A part of the story is that there is no very easy way to accurately know the speed of the signals on the particular layers. Calculators - like Saturn PCB can give you an approximation of that.

    The engineers who designed Beaglebone are good enough to know about that and consider if it will be a problem. If you don't consider it, you might be lucky and everything could be fine because it happened that you fit in the tolerances, but you might not be that lucky in other cases...

    Comment


    • ljo
      ljo commented
      Editing a comment
      Thank you @mairomaster.
      Ok in this case for my project i will do my best to route signals same way.

  • #3
    Yep, you can do that, but I never do it. Once we outsourced memory layout and the guy was lazy and did not followed this rule. When we run memory tests in environmental chamber, some boards were failing at -20C.

    They probably tested beaglebone and it is probably just fine.

    But be careful. I know, that many engineers do not extensively test their boards and many developers think it is normal when a board occasionally freezes / crashes / reset. Especially young engineers think, that once a board is running on your table in your lab for 1 hour, that everything is done perfectly and everything is working. After time they usually find out, that may not really be true and some problems only can be found when the boards are running under high stress conditions.

    Comment


    • #4
      Ok thank you robertferanec.
      I have also an other question:
      In the micron design guide they said:
      "Systems using FBGA-packaged DDR components typically split PCB planes between VDD and VSS such that DQ, DQS, DM, and clock signals maintain a VSS reference, while address, command, and control signals maintain a VDD reference"
      For me it means that i can use for the adress control command class the vdd plane as a reference instead of gnd plane, am i right? Is there any pb if i dont use a gnd plane for reference?

      Comment


      • #5
        That sounds interesting, can you provide a link to the design guide?

        My guess would be that this is valid for a low layer count boards (4-6 layers) where you might not have enough ground planes. Using power plane as a reference is a bit tricky and I am trying to avoid it when I can.

        Robert can give a better opinion on this, he as good experience with DIMM modules and other related stuff.

        Comment


        • #6
          here is the link:

          https://www.google.fr/url?sa=t&rct=j...24272578,d.ZGg

          Comment


          • #7
            Yes, mairomaster is right. I have seen using this technique mostly on 6 layer PCBs. For example, there is many decoupling capacitors between VDD-VSS which are short circuits for high speed signals. Also, you may want to place VTT decoupling capacitors between VTT-VSS and VTT-VDD.

            One guy told me once, that for DDR3 ADD/CTL/CMD signals, the VDD reference plane may be even better as GND, but this is not confirmed.

            If possible, I try to avoid using power planes as reference planes. Usually, the plane which is closer to the signal layer, I use as a solid GND plane and this is my good reference plane. The plane which is further from the signal layer, I try to have as GND, if not possible, it may also be a Power plane.

            Comment


            • #8
              I have just read this in the am3358 ti soc datasheet. It was written in minuscule :

              "Additional bypass capacitors are required when using the VDDS_DDR plane as the reference plane to allow the return current to jump between the VDDS_DDR plane and the ground plane when the net class switches layers at a via"

              So you are right. I know that i can do it but if i can avoid i will do otherwise.

              Thank you!

              Comment


              • #9
                Originally posted by ljo View Post
                Ok thank you robertferanec.
                I have also an other question:
                In the micron design guide they said:
                "Systems using FBGA-packaged DDR components typically split PCB planes between VDD and VSS such that DQ, DQS, DM, and clock signals maintain a VSS reference, while address, command, and control signals maintain a VDD reference"
                For me it means that i can use for the adress control command class the vdd plane as a reference instead of gnd plane, am i right? Is there any pb if i dont use a gnd plane for reference?
                I had similar question and found answer here, thanks!

                Originally posted by mairomaster
                The problem in this case is that the signals travel with a different speed on the different layers and you should take this into account if you want to achieve tight timing tolerances.
                What about symmetrical board? If board has symmetrical structure we have corresponding layer for each layer with exactly the same signal speed (?). If we use this pair of symmetrical layers may be we shouldn't worry about track length on each of layers?
                Or is it misconception?

                Comment


                • #10
                  Yes, if you are using two symmetrical layers, you shouldn't worry.

                  Comment


                  • #11
                    What about symmetrical board? If board has symmetrical structure we have corresponding layer for each layer with exactly the same signal speed (?). If we use this pair of symmetrical layers may be we shouldn't worry about track length on each of layers?
                    Or is it misconception?
                    as mairomaster mentioned, yes, you should be fine with symetrical PCB, but double check if the signal layers are using same Er materials around them. Don't forget, this will only mean, that signals will travel the same speed inside your PCB. TOP and BOTTOM will always have different speed comparing to the speed inside (even for symetrical PCB)

                    Comment


                    • #12
                      hello,

                      For information related to the question I asked in the beginning of this topic:

                      I asked in the ti forum the following question:
                      "I have a question about routing ddr3 signals on different layers. I saw that in bbb in a same group for example dq0 the signals are routed on different layers. I dont understand how it works since the signals travel in different speed betwen outer layers and inner layerS. Can someone explain me?"

                      this is the answer from one guy from ti:

                      "The difference in speed propagation can be ignored at these trace lengths and frequencies."

                      For information the maximum DDR CLK speed in am3358 is 400MHZ. There is only one ddr chip and it is placed very close to the processor(max trace length less than 900 mils).

                      What do you think?

                      Comment


                      • #13
                        The clock of the board which I mentioned before (the one not routed properly and failing memory test at -20C) was 533MHz.

                        About the TI comment, I think nothing. I am pretty sure there are situation where you can ignore some stuff, but I do not see any reason why I should be ignoring it when I know how it should be done properly.

                        When someone look at your work, they should see, that you really like what you do and you try to do it right. And I rather length match the board, than risking of spending hundreds of hours with debugging randomly failing board .... and in the worst case re-designing the board completely.

                        Comment


                        • #14
                          Originally posted by ljo View Post
                          Each signal group has to be routed same way. But in beaglebone black project, for example the data signal group is not routed the same way, I mean it uses different layers(top, L3 and bottom). For example, DDR_D2 is routed on top layer and DDR_D0 on layer 3(see screenshot). The board works apparently(i dont have it at home). my question is how the board can work this way?
                          "Routing groups the same way", "keeping the same number vias", etc. are simplifications.
                          The real goal in high speed routing is to bring the signal in time and in shape. If you are so lucky as to have at hand good SI tools like Hyperlynx, then you can do whatever you like, as long as your signal meet the delay budget and pass the eye diagram and other requirements.
                          Even the "length match" rule is misleading and we, engineers, should not be mistaken by simplifications... We match delays, not physical length. Here comes why the advice of "same layers, same number of vias, etc." - this way we ensure the delay would be proportional to the length. But even this is wrong: For the same total length, a straight trace will have less impedance (and less delay) than other with accordions.

                          Comment


                          • #15
                            "Routing groups the same way", "keeping the same number vias", etc. are simplifications.
                            I completely agree

                            If you are so lucky as to have at hand good SI tools like Hyperlynx, then you can do whatever you like, as long as your signal meet the delay budget and pass the eye diagram and other requirements.
                            This is completely true, however you may want to consider couple of things (not only expensive software and time spent by simulation)...

                            Very often happen, that your PCB is not manufactured by same PCB manufacturer over the whole life of the board. Very often different PCB manufacturer has to adjust PCB stackup. If PCB is length matched based on delay, any changes in PCB stackup may influence individual signal delay and what can happen, you change PCB manufacturer and your PCB suddenly stops working reliably.

                            I had a case, when a board which was 100% passing simulations, had memory issues and memory was not working reliably. This was the layout done based on delay (I mentioned that board in the previous discussion). However, I have never had a failing board which was length matched based on "group routed the same way".

                            Of course, even when you are doing length matching based on "groups being routed the same way", you should keep in mind, that the main goal of doing this, is because of signal delay, not because you would like to have all signals the same length. Everybody should definitely understand what is behind length matching.

                            Comment

                            Working...
                            X