Decode the values for pullup/pulldown/keeper for each DDR pin
authorBrad Griffis <bgriffis@ti.com>
Fri, 6 Nov 2015 20:12:56 +0000 (14:12 -0600)
committerBrad Griffis <bgriffis@ti.com>
Fri, 6 Nov 2015 20:12:56 +0000 (14:12 -0600)
am335x-ddr-analysis.dss

index 8d6fa11d984ca2b99f02557d7ec26c95c416e214..be764dffbf5ac793d016eb6ea995682234d411a6 100644 (file)
@@ -41,6 +41,30 @@ function printRegisterValue(ds, name, addr)
        return value; // return the register value for interrogation\r
 }\r
 \r
+function interpret_cmd_phy_macro(value, index)\r
+{\r
+       WD1 = (value >> (21+index)) & 1;\r
+       WD0 = (value >> (10+index)) & 1;\r
+       WD = (WD1 << 1) | WD0;\r
+       if (WD == 0) return_string = "Pullup/Pulldown disabled\n";\r
+       if (WD == 1) return_string = "Weak pullup enabled\n";\r
+       if (WD == 2) return_string = "Weak pulldown enabled\n";\r
+       if (WD == 3) return_string = "Weak keeper enabled\n"; \r
+       return return_string;\r
+}\r
+\r
+function interpret_data_phy_macro(value, index)\r
+{\r
+       WD1 = (value >> (20+index)) & 1;\r
+       WD0 = (value >> (10+index)) & 1;\r
+       WD = (WD1 << 1) | WD0;\r
+       if (WD == 0) return_string = "Pullup/Pulldown disabled\n";\r
+       if (WD == 1) return_string = "Weak pullup enabled\n";\r
+       if (WD == 2) return_string = "Weak pulldown enabled\n";\r
+       if (WD == 3) return_string = "Weak keeper enabled\n"; \r
+       return return_string;\r
+}\r
+\r
 // Build a filename that includes date/time\r
 var today = new Date();\r
 var year4digit = today.getFullYear();\r
@@ -131,6 +155,17 @@ if ( (reg_val & 0x300) == (3 << 8) ) {file.write("half thevenin termination\n");
 \r
 // CONTROL: DDR_CMD0_IOCTRL\r
 reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_CMD0_IOCTRL", 0x44E11404);\r
+file.write("  * ddr_ba2 " + interpret_cmd_phy_macro(reg_val, 0));\r
+file.write("  * ddr_wen " + interpret_cmd_phy_macro(reg_val, 1));\r
+file.write("  * ddr_ba0 " + interpret_cmd_phy_macro(reg_val, 2));\r
+file.write("  * ddr_a5 " + interpret_cmd_phy_macro(reg_val, 3));\r
+file.write("  * ddr_ck " + interpret_cmd_phy_macro(reg_val, 4));\r
+file.write("  * ddr_ckn " + interpret_cmd_phy_macro(reg_val, 5));\r
+file.write("  * ddr_a3 " + interpret_cmd_phy_macro(reg_val, 6));\r
+file.write("  * ddr_a4 " + interpret_cmd_phy_macro(reg_val, 7));\r
+file.write("  * ddr_a8 " + interpret_cmd_phy_macro(reg_val, 8));\r
+file.write("  * ddr_a9 " + interpret_cmd_phy_macro(reg_val, 9));\r
+file.write("  * ddr_a6 " + interpret_cmd_phy_macro(reg_val, 10));\r
 file.write("  * Bits 9:5 control ddr_ck and ddr_ckn\n");\r
 file.write("    - Slew ");\r
 if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");}\r
@@ -150,6 +185,16 @@ file.write("    - Drive Strength " + drive_strength_mA + " mA\n");
 \r
 // CONTROL: DDR_CMD1_IOCTRL\r
 reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_CMD1_IOCTRL", 0x44E11408);\r
+file.write("  * ddr_a15 " + interpret_cmd_phy_macro(reg_val, 1));\r
+file.write("  * ddr_a2 " + interpret_cmd_phy_macro(reg_val, 2));\r
+file.write("  * ddr_a12 " + interpret_cmd_phy_macro(reg_val, 3));\r
+file.write("  * ddr_a7 " + interpret_cmd_phy_macro(reg_val, 4));\r
+file.write("  * ddr_ba1 " + interpret_cmd_phy_macro(reg_val, 5));\r
+file.write("  * ddr_a10 " + interpret_cmd_phy_macro(reg_val, 6));\r
+file.write("  * ddr_a0 " + interpret_cmd_phy_macro(reg_val, 7));\r
+file.write("  * ddr_a11 " + interpret_cmd_phy_macro(reg_val, 8));\r
+file.write("  * ddr_casn " + interpret_cmd_phy_macro(reg_val, 9));\r
+file.write("  * ddr_rasn " + interpret_cmd_phy_macro(reg_val, 10));\r
 file.write("  * Bits 4:0 control ddr_15, ddr_a[12:10], ddr_a7, ddr_a2, ddr_a0, ddr_ba1, ddr_casn, ddr_rasn\n");\r
 file.write("    - Slew ");\r
 if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");}\r
@@ -161,6 +206,13 @@ file.write("    - Drive Strength " + drive_strength_mA + " mA\n");
 \r
 // CONTROL: DDR_CMD2_IOCTRL\r
 reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_CMD2_IOCTRL", 0x44E1140C);\r
+file.write("  * ddr_cke " + interpret_cmd_phy_macro(reg_val, 0));\r
+file.write("  * ddr_resetn " + interpret_cmd_phy_macro(reg_val, 1));\r
+file.write("  * ddr_odt " + interpret_cmd_phy_macro(reg_val, 2));\r
+file.write("  * ddr_a14 " + interpret_cmd_phy_macro(reg_val, 4));\r
+file.write("  * ddr_a13 " + interpret_cmd_phy_macro(reg_val, 5));\r
+file.write("  * ddr_csn0 " + interpret_cmd_phy_macro(reg_val, 6));\r
+file.write("  * ddr_a1 " + interpret_cmd_phy_macro(reg_val, 8));\r
 file.write("  * Bits 4:0 control ddr_cke, ddr_resetn, ddr_odt, ddr_csn0, ddr_[a14:13], ddr_a1\n");\r
 file.write("    - Slew ");\r
 if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");}\r
@@ -172,6 +224,16 @@ file.write("    - Drive Strength " + drive_strength_mA + " mA\n");
 \r
 // CONTROL: DDR_DATA0_IOCTRL\r
 reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_DATA0_IOCTRL", 0x44E11440);\r
+file.write("  * ddr_d8 " + interpret_data_phy_macro(reg_val, 0));\r
+file.write("  * ddr_d9 " + interpret_data_phy_macro(reg_val, 1));\r
+file.write("  * ddr_d10 " + interpret_data_phy_macro(reg_val, 2));\r
+file.write("  * ddr_d11 " + interpret_data_phy_macro(reg_val, 3));\r
+file.write("  * ddr_d12 " + interpret_data_phy_macro(reg_val, 4));\r
+file.write("  * ddr_d13 " + interpret_data_phy_macro(reg_val, 5));\r
+file.write("  * ddr_d14 " + interpret_data_phy_macro(reg_val, 6));\r
+file.write("  * ddr_d15 " + interpret_data_phy_macro(reg_val, 7));\r
+file.write("  * ddr_dqm1 " + interpret_data_phy_macro(reg_val, 8));\r
+file.write("  * ddr_dqs1 and ddr_dqsn1 " + interpret_data_phy_macro(reg_val, 9));\r
 file.write("  * Bits 9:5 control ddr_dqs1, ddr_dqsn1\n");\r
 file.write("    - Slew ");\r
 if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");}\r
@@ -191,6 +253,16 @@ file.write("    - Drive Strength " + drive_strength_mA + " mA\n");
 \r
 // CONTROL: DDR_DATA1_IOCTRL\r
 reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_DATA1_IOCTRL", 0x44E11444);\r
+file.write("  * ddr_d0 " + interpret_data_phy_macro(reg_val, 0));\r
+file.write("  * ddr_d1 " + interpret_data_phy_macro(reg_val, 1));\r
+file.write("  * ddr_d2 " + interpret_data_phy_macro(reg_val, 2));\r
+file.write("  * ddr_d3 " + interpret_data_phy_macro(reg_val, 3));\r
+file.write("  * ddr_d4 " + interpret_data_phy_macro(reg_val, 4));\r
+file.write("  * ddr_d5 " + interpret_data_phy_macro(reg_val, 5));\r
+file.write("  * ddr_d6 " + interpret_data_phy_macro(reg_val, 6));\r
+file.write("  * ddr_d7 " + interpret_data_phy_macro(reg_val, 7));\r
+file.write("  * ddr_dqm0 " + interpret_data_phy_macro(reg_val, 8));\r
+file.write("  * ddr_dqs0 and ddr_dqsn0 " + interpret_data_phy_macro(reg_val, 9));\r
 file.write("  * Bits 9:5 control ddr_dqs0, ddr_dqsn0\n");\r
 file.write("    - Slew ");\r
 if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");}\r