Probando la integridad de SRAM

Estoy probando una placa que tiene SRAM externa. Aparentemente, la SRAM es relativamente sensible al calor de soldadura del proceso de fabricación, por lo que se deben realizar pruebas cuidadosas para verificar la integridad de la SRAM en las placas recién fabricadas.

¿Cuál es la mejor manera (bare-metal) de probar SRAM? Tengo un controlador que inicializa la SRAM para acceso de lectura/escritura. Mi primer pensamiento es ejecutar pruebas como:

1) Establezca todos los bits en SRAM en 1 y verifique que SRAM se haya escrito correctamente. 2) Escriba los dígitos de Pi en SRAM y verifique que la escritura se haya realizado correctamente.

¿Hay otros tipos de pruebas que debería considerar?

Hay muchas pruebas de RAM disponibles. Algunos serán específicos de la organización de la memoria RAM que está utilizando. PERO lo que realmente debe hacer es determinar las condiciones en las que se debe soldar la RAM y monitorear su línea de producción para ASEGURARSE de que estas condiciones sean las correctas. Y luego pruébelo también :-)
@JobyTaffey, Me alegro de no ser el único que ama a Ganssle.

Respuestas (1)

He escrito algunas pruebas de RAM antes que han despertado algunos errores. Esto es lo que hice:

Integridad del bus de datos: ¿están conectadas todas las líneas de datos? Primero, escriba todos los 0 en una dirección y léala, asegúrese de que sean todos 0. En segundo lugar, escriba todos los 1 en una ubicación de memoria, léalo y asegúrese de que todos los 1. Esto le dirá rápidamente si una de sus líneas simplemente no está conectada. Pero esa no es toda la historia. Puede ser que varias líneas estén puenteadas entre sí o con VCC o tierra. Por eso también haces la siguiente prueba.

Prueba de caminar 1/caminar 0: la idea es ejercitar cada bit en su línea de datos y solo ese bit. Entonces, si tiene un bus de datos de 8 bits de ancho, comience escribiendo 00000001 en una dirección de memoria, luego vuelva a leerlo y verifique que obtenga el mismo valor, luego 00000010, luego 00000100 y así sucesivamente, escribiendo un 1 en cada línea individualmente hasta que haya probado cada línea. Luego haces una prueba de 0 caminando: primero escribes 11111110 y confirmas, luego 11111101 y confirmas, etc.

Esta prueba se puede realizar solo una vez; no necesita repetirla para cada dirección de memoria que tenga; solo garantiza que el bus de datos esté correctamente conectado.

Integridad de la línea de direcciones: para probar el bus de direcciones, debe escribir un valor único en cada dirección de memoria a la que pueda acceder, luego regrese y verifique que los datos en cada dirección sean correctos. Si sus líneas de dirección no son correctas, verá datos incorrectos recuperados de la memoria. Por ejemplo, digamos que tengo 8 líneas de direccionamiento de memoria y la primera está en cortocircuito a VCC. Si trato de escribir en la ubicación 00000000, en realidad escribirá en 00000001 debido al corto. Luego intentaré escribir de 0x01 a 00000001 y funcionará. Sin embargo, cuando llegue el momento de verificar los datos en cada dirección, si trato de acceder a la ubicación 00000000, en realidad accederé a la ubicación 00000001 debido a lo corto, y recuperaré un valor de 0x01 en lugar de 0x00 e inmediatamente detectaré el error.

Es exagerado, pero ha detectado algunos errores insidiosos que nos habrían hecho tropezar en gran medida.

Lo que las pruebas anteriores NO harán es decirle si alguna de sus líneas de dirección son mensajes. Estas pruebas NO harán es decirle si

Me gusta este conjunto de pruebas, el único cambio que sugeriría es que realmente quieren hacer la prueba de ceros/unos para caminar en todas las ubicaciones de memoria, ya que existe la preocupación de que se dañe la SRAM si leo la pregunta correctamente.
Gracias por esto. Realmente no entiendo tu última frase. ¿Podrías aclararlo por favor?