We have an iMX8MN design with DDR4 running at 1200MHz clock. Our chip is AS4C512M16D4. Training and stress test work under mscale (v3.1) as well as the new iMX Configuration Tool (v9). All the tests pass. However when we generate the ddr4 data and integrate it with u-boot, the training on start-up fails.
The u-boot is imx_v2020.04_5.4.70_2.3.0 which is in the latest iMX Yocto recipe.
The design has plenty of margin because we also pass in mscale and the iMX config tool at higher frequencies so this is not a hardware issue.
By enabling printfs I realized that we pass the 2400 rate training but fail at 1336 (668 MHz) which is training for low frequency set point. I then decided to reuse the training data from the iMX8MN EVK which is for a Micron chip and copied over their training data and settings which is for 1066 (533 MHz) and we were able to pass training and boot. However we fail memory testing running memtester in Linux as well as random kernel panics. So something is clearly amiss here.
A few questions:
1. Is there a way for the iMX Configuration Tool to genreate array format DDR training data for u-boot instead of the older code format?
2. When we compare the register values in the output files generated why is there some discrepency between the values generated by MScale tool (v3.1) and the iMX Configuration Tool (v9) for the same settings that were imported from the RPA (v4)?
3. Is there a way to disable frequency set point and only run the memory at a single frequency, say 1200MHz?
4. Why are we able to pass stress tests in the bring-up tools but fail with memtester? The iMX Configuration Tool has tests that check the entire memory and we pass those. The eye diagrams also look good, as generated by that tool.
5. Is the iMX Configuration Tool meant to replace MScale? It seems to be doing the same thing and has more tests.
Did you ever get this to work ? I am using the same DDR4 ram on a board based on the imx8mn_ddr4_evk and are seeing the exact same issues: stress test with mtest and u-boot mtest works flawlessly, but I get crashes and hangs in linux whenever I actually do something (e.g stress-ng). Training data from configuration tool generated non-compilable code, but after fixing it the training fails.
I'm stumped and I really hope you figured out what the issue was