i.MX 93: DDR timing configuration and DDR Tool versions

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX 93: DDR timing configuration and DDR Tool versions

480 Views
wooosaiiii
Contributor III

Hi,

we have a i.MX93 board with 1GiB of LPDDR4X RAM.

Previously we created lpddr4x_timing.c file with DDR Tool v3.1.0_7.4.

However recently we updated the tools and created lpddr4x_timing.c file with DDR Tool v3.3.0_7.8-d1cdb7d3 DDR PHY FW2022.01.

We compared files and noticed that files differ.

Here is a diff:

 

 #include <linux/kernel.h>
@@ -18,7 +18,7 @@
 	{0x4e300080, 0x80000412},
 	{0x4e300084, 0x0},
 	{0x4e300114, 0x1002},
-	{0x4e300260, 0x80},
+	{0x4e300260, 0x4080},
 	{0x4e300f04, 0x80},
 	{0x4e300800, 0x43b30002},
 	{0x4e300804, 0x1f1f1f1f},
@@ -37,9 +37,9 @@
 static struct dram_fsp_cfg ddr_dram_fsp_cfg[] = {
 	{
 		{
-			{0x4e300100, 0x24A0321B},
+			{0x4e300100, 0x24A0421B},
 			{0x4e300104, 0xF8EE001B},
-			{0x4e300108, 0x2F2E3233},
+			{0x4e300108, 0x2F263233},
 			{0x4e30010C, 0x0005C18B},
 			{0x4e300124, 0x1C790000},
 			{0x4e300160, 0x00009102},
@@ -49,17 +49,17 @@
 			{0x4e300254, 0x00FE00FE},
 			{0x4e300258, 0x00000008},
 			{0x4e30025C, 0x00000400},
-			{0x4e300300, 0x224F2213},
+			{0x4e300300, 0x224F2215},
 			{0x4e300304, 0x00FE2213},
 			{0x4e300308, 0x0A380E3D},
 		},
 		{
 			{0x01, 0xE4},
 			{0x02, 0x36},
-			{0x03, 0x22},
+			{0x03, 0xE2},
 			{0x0b, 0x44},
-			{0x0c, 0x1E},
-			{0x0e, 0x12},
+			{0x0c, 0x1F},
+			{0x0e, 0x11},
 			{0x16, 0x04},
 		},
 		0,
@@ -68,7 +68,7 @@
 		{
 			{0x4e300100, 0x124F2100},
 			{0x4e300104, 0xF877000E},
-			{0x4e300108, 0x1816E4AA},
+			{0x4e300108, 0x181AE4AA},
 			{0x4e30010C, 0x005101E6},
 			{0x4e300124, 0x0E3C0000},
 			{0x4e300160, 0x00009101},
@@ -82,10 +82,10 @@
 		{
 			{0x01, 0xB4},
 			{0x02, 0x1B},
-			{0x03, 0x22},
+			{0x03, 0xE2},
 			{0x0b, 0x44},
-			{0x0c, 0x1E},
-			{0x0e, 0x12},
+			{0x0c, 0x1F},
+			{0x0e, 0x11},
 			{0x16, 0x04},
 		},
 		0,
@@ -94,7 +94,7 @@
 		{
 			{0x4e300100, 0x00051000},
 			{0x4e300104, 0xF855000A},
-			{0x4e300108, 0x6E620A48},
+			{0x4e300108, 0x6E660A48},
 			{0x4e30010C, 0x0031010D},
 			{0x4e300124, 0x04C50000},
 			{0x4e300160, 0x00009100},
@@ -108,10 +108,10 @@
 		{
 			{0x01, 0x94},
 			{0x02, 0x9},
-			{0x03, 0x22},
+			{0x03, 0xE2},
 			{0x0b, 0x44},
-			{0x0c, 0x1E},
-			{0x0e, 0x12},
+			{0x0c, 0x1F},
+			{0x0e, 0x11},
 			{0x16, 0x04},
 		},
 		1,
@@ -211,17 +211,17 @@
 	{0x120008, 0x1d3},
 	{0x220008, 0x9c},
 	{0x20088, 0x9},
-	{0x200b2, 0x104},
+	{0x200b2, 0x10c},
 	{0x10043, 0x5a1},
 	{0x10143, 0x5a1},
 	{0x11043, 0x5a1},
 	{0x11143, 0x5a1},
-	{0x1200b2, 0x104},
+	{0x1200b2, 0x10c},
 	{0x110043, 0x5a1},
 	{0x110143, 0x5a1},
 	{0x111043, 0x5a1},
 	{0x111143, 0x5a1},
-	{0x2200b2, 0x104},
+	{0x2200b2, 0x10c},
 	{0x210043, 0x5a1},
 	{0x210143, 0x5a1},
 	{0x211043, 0x5a1},
@@ -240,10 +240,8 @@
 	{0x200f5, 0x0},
 	{0x200f6, 0x0},
 	{0x200f7, 0xf000},
-	{0x1004a, 0x500},
-	{0x1104a, 0x500},
 	{0x20025, 0x0},
-	{0x2002d, 0x0},
+	{0x2002d, 0x1},
 	{0x12002d, 0x0},
 	{0x22002d, 0x0},
 	{0x2002c, 0x0},
@@ -357,8 +355,6 @@
 	{0x200f5, 0x0},
 	{0x200f6, 0x0},
 	{0x200f7, 0x0},
-	{0x1004a, 0x0},
-	{0x1104a, 0x0},
 	{0x20025, 0x0},
 	{0x2002d, 0x0},
 	{0x12002d, 0x0},
@@ -1239,7 +1235,7 @@
 	{0xd0000, 0x0},
 	{0x54003, 0xe94},
 	{0x54004, 0x4},
-	{0x54006, 0x14},
+	{0x54006, 0x15},
 	{0x54008, 0x131f},
 	{0x54009, 0xc8},
 	{0x5400b, 0x4},
@@ -1247,26 +1243,26 @@
 	{0x5400f, 0x100},
 	{0x54012, 0x110},
 	{0x54019, 0x36e4},
-	{0x5401a, 0x22},
-	{0x5401b, 0x1e44},
-	{0x5401c, 0x1208},
+	{0x5401a, 0xe2},
+	{0x5401b, 0x1f44},
+	{0x5401c, 0x1108},
 	{0x5401e, 0x4},
 	{0x5401f, 0x36e4},
-	{0x54020, 0x22},
-	{0x54021, 0x1e44},
-	{0x54022, 0x1208},
+	{0x54020, 0xe2},
+	{0x54021, 0x1f44},
+	{0x54022, 0x1108},
 	{0x54024, 0x4},
 	{0x54032, 0xe400},
-	{0x54033, 0x2236},
+	{0x54033, 0xe236},
 	{0x54034, 0x4400},
-	{0x54035, 0x81e},
-	{0x54036, 0x12},
+	{0x54035, 0x81f},
+	{0x54036, 0x11},
 	{0x54037, 0x400},
 	{0x54038, 0xe400},
-	{0x54039, 0x2236},
+	{0x54039, 0xe236},
 	{0x5403a, 0x4400},
-	{0x5403b, 0x81e},
-	{0x5403c, 0x12},
+	{0x5403b, 0x81f},
+	{0x5403c, 0x11},
 	{0x5403d, 0x400},
 	{0xd0000, 0x1}
 };
@@ -1277,7 +1273,7 @@
 	{0x54002, 0x1},
 	{0x54003, 0x74a},
 	{0x54004, 0x4},
-	{0x54006, 0x14},
+	{0x54006, 0x15},
 	{0x54008, 0x121f},
 	{0x54009, 0xc8},
 	{0x5400b, 0x4},
@@ -1285,26 +1281,26 @@
 	{0x5400f, 0x100},
 	{0x54012, 0x110},
 	{0x54019, 0x1bb4},
-	{0x5401a, 0x22},
-	{0x5401b, 0x1e44},
-	{0x5401c, 0x1208},
+	{0x5401a, 0xe2},
+	{0x5401b, 0x1f44},
+	{0x5401c, 0x1108},
 	{0x5401e, 0x4},
 	{0x5401f, 0x1bb4},
-	{0x54020, 0x22},
-	{0x54021, 0x1e44},
-	{0x54022, 0x1208},
+	{0x54020, 0xe2},
+	{0x54021, 0x1f44},
+	{0x54022, 0x1108},
 	{0x54024, 0x4},
 	{0x54032, 0xb400},
-	{0x54033, 0x221b},
+	{0x54033, 0xe21b},
 	{0x54034, 0x4400},
-	{0x54035, 0x81e},
-	{0x54036, 0x12},
+	{0x54035, 0x81f},
+	{0x54036, 0x11},
 	{0x54037, 0x400},
 	{0x54038, 0xb400},
-	{0x54039, 0x221b},
+	{0x54039, 0xe21b},
 	{0x5403a, 0x4400},
-	{0x5403b, 0x81e},
-	{0x5403c, 0x12},
+	{0x5403b, 0x81f},
+	{0x5403c, 0x11},
 	{0x5403d, 0x400},
 	{0xd0000, 0x1}
 };
@@ -1315,7 +1311,7 @@
 	{0x54002, 0x102},
 	{0x54003, 0x270},
 	{0x54004, 0x4},
-	{0x54006, 0x14},
+	{0x54006, 0x15},
 	{0x54008, 0x121f},
 	{0x54009, 0xc8},
 	{0x5400b, 0x4},
@@ -1323,26 +1319,26 @@
 	{0x5400f, 0x100},
 	{0x54012, 0x110},
 	{0x54019, 0x994},
-	{0x5401a, 0x22},
-	{0x5401b, 0x1e44},
-	{0x5401c, 0x1200},
+	{0x5401a, 0xe2},
+	{0x5401b, 0x1f44},
+	{0x5401c, 0x1100},
 	{0x5401e, 0x4},
 	{0x5401f, 0x994},
-	{0x54020, 0x22},
-	{0x54021, 0x1e44},
-	{0x54022, 0x1200},
+	{0x54020, 0xe2},
+	{0x54021, 0x1f44},
+	{0x54022, 0x1100},
 	{0x54024, 0x4},
 	{0x54032, 0x9400},
-	{0x54033, 0x2209},
+	{0x54033, 0xe209},
 	{0x54034, 0x4400},
-	{0x54035, 0x1e},
-	{0x54036, 0x12},
+    {0x54035, 0x1f},
+    {0x54036, 0x11},
 	{0x54037, 0x400},
 	{0x54038, 0x9400},
-	{0x54039, 0x2209},
+    {0x54039, 0xe209},
 	{0x5403a, 0x4400},
-	{0x5403b, 0x1e},
-	{0x5403c, 0x12},
+	{0x5403b, 0x1f},
+	{0x5403c, 0x11},
 	{0x5403d, 0x400},
 	{0xd0000, 0x1}
 };
@@ -1353,7 +1349,7 @@
 	{0xd0000, 0x0},
 	{0x54003, 0xe94},
 	{0x54004, 0x4},
-	{0x54006, 0x14}	{0x54006, 0x15},
 	{0x54008, 0x61},
 	{0x54009, 0xc8},
 	{0x5400b, 0x4},
@@ -1362,26 +1358,26 @@
 	{0x54010, 0x2080},
 	{0x54012, 0x110},
 	{0x54019, 0x36e4},
-	{0x5401a, 0x22},
-	{0x5401b, 0x1e44},
-	{0x5401c, 0x1208},
+	{0x5401a, 0xe2},
+	{0x5401b, 0x1f44},
+	{0x5401c, 0x1108},
 	{0x5401e, 0x4},
 	{0x5401f, 0x36e4},
-	{0x54020, 0x22},
-	{0x54021, 0x1e44},
-	{0x54022, 0x1208},
+	{0x54020, 0xe2},
+	{0x54021, 0x1f44},
+	{0x54022, 0x1108},
 	{0x54024, 0x4},
 	{0x54032, 0xe400},
-	{0x54033, 0x2236},
+	{0x54033, 0xe236},
 	{0x54034, 0x4400},
-	{0x54035, 0x81e},
-	{0x54036, 0x12},
+	{0x54035, 0x81f},
+	{0x54036, 0x11},
 	{0x54037, 0x400},
 	{0x54038, 0xe400},
-	{0x54039, 0x2236},
+	{0x54039, 0xe236},
 	{0x5403a, 0x4400},
-	{0x5403b, 0x81e},
-	{0x5403c, 0x12},
+	{0x5403b, 0x81f},
+	{0x5403c, 0x11},
 	{0x5403d, 0x400},
 	{0xd0000, 0x1}
 };
@@ -1997,69 +1993,3 @@
 	.fsp_cfg_num = ARRAY_SIZE(ddr_dram_fsp_cfg),
 };

 

 

Due to changes, our internal policy requires us to re-run climate chamber test when DDR configuration changes. This takes a lof of effort so we would like to avoid it if possible.

Questions:

1) Is there any changelog for DDR Tool to see what has changed between versions?

2) Where can we refer in documentation for register addresses and values?

3) Do you recommend updating to newly generated DDR timing? Where there any bugfixes / improvements?

 

Thanks for your answers,

BR,

Primoz

 

 

0 Kudos
Reply
6 Replies

387 Views
wooosaiiii
Contributor III

@Rita_Wang thanks for your replies.

However, I still have an additional question.

Can you help us understand what:

/* PHY Initialize Configuration */
static struct dram_cfg_param ddr_ddrphy_cfg[] = {
...
	{0x1004a, 0x500},
	{0x1104a, 0x500},
...
};

This part does?

Where can we find information about registers 0x1004a and 0x1104a?

Maybe it is documented in i.MX93 TRM but we cannot find it?

Thanks in advance,

BR,

Primoz

0 Kudos
Reply

445 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

1) Is there any changelog for DDR Tool to see what has changed between versions?

A: Sorry we do not have, details you can refer to the user guide we supply.https://www.nxp.com/design/designs/config-tools-for-i-mx-applications-processors:CONFIG-TOOLS-IMX

2) Where can we refer in documentation for register addresses and values?

A:They are generate by the tool.

3) Do you recommend updating to newly generated DDR timing? Where there any bugfixes / improvements?

A:If your board work well, you can not update it.

0 Kudos
Reply

336 Views
cstoidner
Contributor II

Hello @Rita_Wang ,

as colleague from Primoz I like to point out why that question is so important to us.

You wrote:

> If your board work well, you can not update it.

It is very likely that errors due to an incorrect or incomplete DDR configuration will not occur in tests the laboratory, but at some point in the field with customers. In addition, such errors are then practically impossible to reproduce or debug.

In our opinion, the DDR RAM configuration is simply too complex and too important to only try out with blackbox tests. We must be able to professionally understand and decide whether it is correct and complete. Unfortunately, we miss the information mentioned for this.

So can you please check if you can find the reason for that change in the DDR Tool? Or can you please at least provide information about the registers 0x1004a and 0x1104a, as Primoz has asked above (or below)?

Thanks in advance,
Christoph

0 Kudos
Reply

288 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Hi @cstoidner Sorry for late reply @Are you using the Config Tools for i.MX Applications Processorshttps://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-developm...on our website?

From i.MX93 we using this tool.

0 Kudos
Reply

280 Views
cstoidner
Contributor II

Yes, those are the "ConfigTools" we use. More precise, we use currently "Rev 16".

0 Kudos
Reply

240 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Rev 16 will be OK to using.

0 Kudos
Reply