{"id":157,"date":"2018-02-12T18:29:26","date_gmt":"2018-02-12T18:29:26","guid":{"rendered":"https:\/\/ninedotconnectssandbox.com\/blog\/?p=157"},"modified":"2020-08-29T18:22:44","modified_gmt":"2020-08-29T18:22:44","slug":"ddr3-analysis-bit-swapping-justification","status":"publish","type":"post","link":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/2018\/02\/12\/ddr3-analysis-bit-swapping-justification\/","title":{"rendered":"DDR3 Analysis &#8211; Bit Swapping Justification"},"content":{"rendered":"<p style=\"text-align: left;\">Authored by:\u00a0 Tom Cassidy and Sean Kelly<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-thumbnail wp-image-169 alignleft\" src=\"https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Toms-Portrait-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" \/><img loading=\"lazy\" decoding=\"async\" class=\"size-thumbnail wp-image-168 alignleft\" src=\"https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Seans-Portrait-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" \/><\/p>\n<p style=\"text-align: left;\">The following analysis and write up were performed by Nine Dot Connects reviewing a DDR3 layout in which the option for pin swapping was being considered.\u00a0 This is one of the many examples of the services provided to our customers.<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align: left;\">Because signal integrity is so important to the operation of high-speed DDR3 design, and because the manufacturers of DDR3 devices are aware of the difficulties involved in high-speed impedance controlled PCB layout, they provided the flexibility of bit swapping within byte lanes to facilitate clean layout and good signal integrity.\u00a0 In particular, bit swapping allows the traces to be routed without needing to change layers.\u00a0 This greatly improves the signal integrity and thus the higher likelihood of producing a working design.<\/p>\n<p style=\"text-align: left;\">Bit swapping within DDR3 byte lanes is an accepted industry practice.\u00a0 The following is an excerpt from the Xilinx UG9333 Zynq-7000 PCB Design Guide, page 66:<\/p>\n<p style=\"text-align: left;\">https:\/\/www.xilinx.com\/support\/documentation\/user_guides\/ug933-Zynq-7000-PCB.pdf<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-163\" src=\"https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Xilinx-DDR-table.jpg\" alt=\"\" width=\"665\" height=\"346\" srcset=\"https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Xilinx-DDR-table.jpg 665w, https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Xilinx-DDR-table-300x156.jpg 300w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><\/p>\n<p style=\"text-align: left;\">As the description of table 5-2 expresses, Xilinx specifically allows the use of both bit swapping and byte swapping.\u00a0 \u00a0All bit swapping must be done within the same byte groups, and all byte groups (DQ, DQS, and DM) must be swapped as a whole.<\/p>\n<p style=\"text-align: left;\">It should be noted that bit swapping within the ACC (Address, Clock, and Control) group is not allowed.<\/p>\n<p style=\"text-align: left;\"><strong>Additional Information:<\/strong><\/p>\n<p style=\"text-align: left;\">The JEDEC standard JESD79-3 states that a DDR3 memory device must either provide write-leveling feedback on all data pins or on the least significant bit (LSB) of the byte lane. If only one bit is used then all of the other bits must be set to 0.<\/p>\n<p style=\"text-align: left;\">NOTE: This JEDEC standard is referring to the memory devices themselves, not the memory controller.\u00a0 This often causes confusion, as one might read it as saying that the LSB must be wired one-to-one between memory device and controller.\u00a0 This is not the case.<\/p>\n<p style=\"text-align: left;\">Since there is not much consistency among memory vendors as to which feedback style used, most memory controllers perform a logic \u2018OR\u2019 on all of the bits in the data byte.\u00a0 This allows the memory controller to detect the feedback bit on any of the bits within the byte, thus supporting a full bit swapping within the byte lane.<\/p>\n<p style=\"text-align: left;\">From the Xilinx UG586 Zynq-7000 Series Memory Interface Solutions document:<\/p>\n<p style=\"text-align: left;\">https:\/\/www.xilinx.com\/support\/documentation\/ip_documentation\/mig_7series\/v4_2\/ug586_7Series_MIS.pdf<\/p>\n<p style=\"text-align: left;\">\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-164\" src=\"https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Write-Leveling.png\" alt=\"\" width=\"848\" height=\"524\" srcset=\"https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Write-Leveling.png 848w, https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Write-Leveling-300x185.png 300w, https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Write-Leveling-768x475.png 768w, https:\/\/ninedotconnectssandbox.com\/blog\/wp-content\/uploads\/2018\/02\/Write-Leveling-825x510.png 825w\" sizes=\"auto, (max-width: 848px) 100vw, 848px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Authored by:\u00a0 Tom Cassidy and Sean Kelly The following analysis and write up were performed by Nine Dot Connects reviewing a DDR3 layout in which the option for pin swapping was being considered.\u00a0 This is one of the many examples of the services provided to our customers.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[118,117,120,123,124,32,119,121,122],"class_list":["post-157","post","type-post","status-publish","format-standard","hentry","category-deep-pcb","tag-bit-swapping","tag-ddr3","tag-ddr4","tag-fpga","tag-jedec","tag-pcb","tag-pin-swapping","tag-xilinx","tag-zynq-7000"],"_links":{"self":[{"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=157"}],"version-history":[{"count":11,"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/157\/revisions"}],"predecessor-version":[{"id":474,"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/157\/revisions\/474"}],"wp:attachment":[{"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ninedotconnectssandbox.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}