<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LayerscapeのトピックLS1046a DDR ECC Error Injection</title>
    <link>https://community.nxp.com/t5/Layerscape/LS1046a-DDR-ECC-Error-Injection/m-p/1666403#M12639</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I'm attempting to verify that the error detection software we've developed works as expected.&amp;nbsp; To that end, I'm trying to manually induce an ECC error in RAM using the LS1046a DDR Memory Controller.&lt;/P&gt;&lt;P&gt;Using register descriptions as a guide, I've pieced together the following procedure.&amp;nbsp; Unfortunately, no errors are detected.&amp;nbsp; Any ideas?&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Boot into U-Boot&lt;/LI&gt;&lt;LI&gt;Attach a Lauterbach debugger, and break execution&lt;/LI&gt;&lt;LI&gt;Verify DDR_SDRAM_CFG[ECC_EN] is 1 (ECC enabled)&lt;/LI&gt;&lt;LI&gt;Set DDR_SDRAM_CFG_3[ECC_FIX_EN] to 1 (enable ECC fixing)&lt;/LI&gt;&lt;LI&gt;Verify DDR_SDRAM_CFG_3[ECC_SCRUB_INT] is 0x0 (disable ECC scrubbing)&lt;/LI&gt;&lt;LI&gt;Verify DATA_ERR_INJECT_HI is 0 (do not inject data errors)&lt;/LI&gt;&lt;LI&gt;Verify DATA_ERR_INJECT_LO is 0 (do not inject data errors)&lt;/LI&gt;&lt;LI&gt;Set ECC_ERR_INJECT[EEIM] to 0x01 (inject 1 bit ECC parity errors)&lt;/LI&gt;&lt;LI&gt;Set ECC_ERR_INJECT[EIEN] to 1 (error injection enabled)&lt;/LI&gt;&lt;LI&gt;Verify ERR_DISABLE is 0 (all error detection enabled)&lt;/LI&gt;&lt;LI&gt;Set ERR_SBE[SSBET] to 1 (scrubbed single-bit error threshold)&lt;/LI&gt;&lt;LI&gt;Set ERR_SBE[SBET] to 1 (single-bit error threshold)&lt;/LI&gt;&lt;LI&gt;Resume execution&lt;/LI&gt;&lt;LI&gt;In U-Boot, run `mw 0xa0000000 1` (initialize a word to 0x1; the DDR controller should automatically inject a 1 bit error to the ECC parity bits)&lt;/LI&gt;&lt;LI&gt;In U-Boot, run `md 0xa0000000` (read the same word back; the DDR controller should automatically detect and fix the parity error, and set a flag in ERR_DETECT)&lt;/LI&gt;&lt;LI&gt;Check ERR_DETECT (an error flag should be set, but never is)&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Thanks for your time.&lt;/P&gt;</description>
    <pubDate>Thu, 08 Jun 2023 19:56:09 GMT</pubDate>
    <dc:creator>zwolbers-blue</dc:creator>
    <dc:date>2023-06-08T19:56:09Z</dc:date>
    <item>
      <title>LS1046a DDR ECC Error Injection</title>
      <link>https://community.nxp.com/t5/Layerscape/LS1046a-DDR-ECC-Error-Injection/m-p/1666403#M12639</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I'm attempting to verify that the error detection software we've developed works as expected.&amp;nbsp; To that end, I'm trying to manually induce an ECC error in RAM using the LS1046a DDR Memory Controller.&lt;/P&gt;&lt;P&gt;Using register descriptions as a guide, I've pieced together the following procedure.&amp;nbsp; Unfortunately, no errors are detected.&amp;nbsp; Any ideas?&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Boot into U-Boot&lt;/LI&gt;&lt;LI&gt;Attach a Lauterbach debugger, and break execution&lt;/LI&gt;&lt;LI&gt;Verify DDR_SDRAM_CFG[ECC_EN] is 1 (ECC enabled)&lt;/LI&gt;&lt;LI&gt;Set DDR_SDRAM_CFG_3[ECC_FIX_EN] to 1 (enable ECC fixing)&lt;/LI&gt;&lt;LI&gt;Verify DDR_SDRAM_CFG_3[ECC_SCRUB_INT] is 0x0 (disable ECC scrubbing)&lt;/LI&gt;&lt;LI&gt;Verify DATA_ERR_INJECT_HI is 0 (do not inject data errors)&lt;/LI&gt;&lt;LI&gt;Verify DATA_ERR_INJECT_LO is 0 (do not inject data errors)&lt;/LI&gt;&lt;LI&gt;Set ECC_ERR_INJECT[EEIM] to 0x01 (inject 1 bit ECC parity errors)&lt;/LI&gt;&lt;LI&gt;Set ECC_ERR_INJECT[EIEN] to 1 (error injection enabled)&lt;/LI&gt;&lt;LI&gt;Verify ERR_DISABLE is 0 (all error detection enabled)&lt;/LI&gt;&lt;LI&gt;Set ERR_SBE[SSBET] to 1 (scrubbed single-bit error threshold)&lt;/LI&gt;&lt;LI&gt;Set ERR_SBE[SBET] to 1 (single-bit error threshold)&lt;/LI&gt;&lt;LI&gt;Resume execution&lt;/LI&gt;&lt;LI&gt;In U-Boot, run `mw 0xa0000000 1` (initialize a word to 0x1; the DDR controller should automatically inject a 1 bit error to the ECC parity bits)&lt;/LI&gt;&lt;LI&gt;In U-Boot, run `md 0xa0000000` (read the same word back; the DDR controller should automatically detect and fix the parity error, and set a flag in ERR_DETECT)&lt;/LI&gt;&lt;LI&gt;Check ERR_DETECT (an error flag should be set, but never is)&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Thanks for your time.&lt;/P&gt;</description>
      <pubDate>Thu, 08 Jun 2023 19:56:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS1046a-DDR-ECC-Error-Injection/m-p/1666403#M12639</guid>
      <dc:creator>zwolbers-blue</dc:creator>
      <dc:date>2023-06-08T19:56:09Z</dc:date>
    </item>
    <item>
      <title>Re: LS1046a DDR ECC Error Injection</title>
      <link>https://community.nxp.com/t5/Layerscape/LS1046a-DDR-ECC-Error-Injection/m-p/1666759#M12644</link>
      <description>&lt;P&gt;&lt;STRONG&gt;ECC&lt;/STRONG&gt; function is guaranteed by hardware, no chance for malfunction. &lt;STRONG&gt;Injection&lt;/STRONG&gt; test requires following sequence (this assumes &lt;STRONG&gt;DDR&lt;/STRONG&gt; controller is up with D_INIT bit set and cache disabled):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1) DATA_ERR_INJECT_LO = 00000001 (the LSbit of 64-bit word is going to be inverted);&lt;/P&gt;
&lt;P&gt;2) ERR_INJECT[EIEN]=1; enable &lt;STRONG&gt;injection&lt;/STRONG&gt; 2a) read back ERR_INJECT to make sure it has been written;&lt;/P&gt;
&lt;P&gt;3) write 0x0000000000000000 to some &lt;STRONG&gt;DDR&lt;/STRONG&gt; location (actually 0x0000000000000001 will be written due to above steps);&lt;/P&gt;
&lt;P&gt;4) repeat step 3 for a number of address locations to inject the number of single bit errors;&lt;/P&gt;
&lt;P&gt;5) ERR_INJECT[EIEN]=0; disable &lt;STRONG&gt;injection&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Reading of the location used in step 3 should result in value 0000000000000000 (LSbit is corrected). ERR_DETECT register should report&amp;nbsp; a single-bit &lt;STRONG&gt;ECC&lt;/STRONG&gt; error, ERR_SBE[SBEC] counts errors.&lt;/P&gt;</description>
      <pubDate>Fri, 09 Jun 2023 08:03:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS1046a-DDR-ECC-Error-Injection/m-p/1666759#M12644</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2023-06-09T08:03:47Z</dc:date>
    </item>
  </channel>
</rss>

