A raíz de una conversación privada me gustaría hacer algunos comentarios recurrentes acerca de este proyecto centrados especialmente en la placa v1.02f que, con unos y otros, hemos hablado por canales privados, algo que agradezco no sabéis cómo.
Cuando han aparecido problemas con las pruebas han estado comúnmente relacionados con una tensión de alimentación baja en exceso ⁽¹⁾ o ruido pero no son las únicas causas. Por nuestra parte hemos utilizado diferentes estrategias para intentar centrar el problema, cambiar o puentear el diodo de protección, añadir un condensador relativamente grande, etc. pero no quisiera que eso se interpretara como una prueba inequívoca de un fallo en la tensión de alimentación o que esta fuera la única fuente de problemas porque otras veces ha estado relacionado con problemas en otras partes de la placa que fuerzan que baje la tensión (como un corto o similar) y, de hecho, tenemos testers funcionando a +4.125V pasando miles de tests sin falsos positivos ni negativos, lo que es de esperar con un consumo normal alrededor de los 25-45mA.
Me llama la atención una interpretación muy difundida que, en mi opinión, es confusa. Un ZX Spectrum y sus tests (p.e. DiagROM) o incluso con una SmartCard son más tolerantes ante fallos que las pruebas de estrés que realizan los testers especializados ⁽²⁾. Tests como DiagROM y similares son mucho más lentos y el periodo entre accesos a un bit concreto de un mismo chip es muy superior al de un tester especializado.
Dispongo, o he dispuesto, de las DRAMs dudosas que me habéis enviado ⁽³⁾ y todas han pasado por varios testers especializados, el DRAM Tester M.G. Rev.4/2021, el RCT Pro y el VdR Tester v1.02f. En la enorme mayoría de casos los resultados han coincidido y en los que no, se trataba usualmente del M.G. que pasaba con éxito tests sobre memorias que en los otros fallaban alguno de los tests. No hay ni que decir que estas tablas y estas memorias son las que se usan a modo de calibración para el firmware.
En cuanto al espinoso asunto de falsos positivos y falsos negativos en el tester VdR hay que considerar que si en un tester en buen estado forzamos algún tipo de interferencia exterior maliciosa (p.e. electromagnética, tocando los pines libres de J4, los nodos F-Z, etc.), afectando a la escritura o lectura de los pines digitales del Nano, se van a obtener inequívocamente falsos negativos porque bits que debían ser escritos en la DRAM como 0s se escriben como 1s o, de forma complementaria, bits que debían ser leídos como 0s se leen como 1s. Esta parte es clara pero muy difícilmente una interferencia, intencionada o no, va a generar falsos positivos porque como sabemos el tester VdR primero rellena la memoria con 1s, después lee toda la memoria y confirma que lee solo 1s para a continuación rellenar la memoria con 0s y después leerla para comprobar que todos son 0s. Una interferencia intencionada debería ser muy precisa para alterar la escritura de
todos los bits y también la lectura durante la primera fase en la que se escriben y leen los 1s para, en el momento exacto, pasar a una segunda fase y alterar la escritura y la lectura de
todos los bits a 0. La palabra clave es "
todos" porque esta hipotética interferencia debería alterar todos los bits en ambas fases del test. Así que siendo una situación casi imposible, una serie de falsos positivos va a implicar lamentablemente un tester defectuoso.
Tema completamente diferente sería que una mala interpretación de algunos resultados concretos nos haya llevado a hablar de falsos positivos en el caso de una memoria DRAM que, por plantear una tesis plausible, normalmente falla pero rara vez funciona.
Otro aspecto a determinar es ¿qué tasa de falsos negativos consideraríamos tolerable? Partiendo de que tenemos ¿4? testers que no dan ni un falso negativo en pruebas de 6000 tests con 4116 y 4164, éste sería el nivel si me preguntaran por mi preferencia pero siendo más pragmáticos diría que una relación de falsos negativos de 1 por 1000 es suficientemente buena como para no preocuparse más.
Respecto a las disquisiciones sobre las posibles ampliaciones del sistema de
wiring y un hipotético diseño con el objetivo de que cualquier posible modificación no requiera ni soldar, ni desoldar, ni hacer cortes en las pistas, definitivamente no entendería cómo esto podría realizarse excepto si están todos los componentes en una
mega-breadboard (o varias) unidos por varias decenas de cables de
breadboard, también es difícil conseguirlo sin introducir más ruido u otros problemas derivados de los cables como diferencias en la velocidad de propagación de las señales. En lo personal, solo pensar en una placa con nuevas tiras de 10 pines a cada lado del Nano, otras a cada lado de las hileras de fusible-zeners y un mínimo de 19 cables DuPont hembra-hembra cruzando de lado a lado ⁽⁴⁾, me aterroriza.
Por último, si tenéis alguna/s memoria/s en las que notáis un comportamiento anómalo extraordinario, si os apetece no dudéis en ponerme en antecedentes sobre estas "piezas" y enviármelas para probarlas en todos los testers que tengo por aquí, entre los de las placas v1.02f, v1.05c, M.G., RCT Pro,... son 5 o 6 opciones que, por suerte, suelen coincidir en sus resultados. En los casos más llamativos hasta me planteo hacer un vídeo desde cero para dejar pública constancia.
⁽¹⁾ Que en teoría podría producir que el Nano confundiera los niveles lógicos de 0s y 1s.
⁽²⁾ Cualquier tester de memorias especializado, no solo el de este proyecto.
⁽³⁾ Excepto las recibidas explícitamente como donaciones iré devolviendo el resto en los próximos envíos que os haga.
⁽⁴⁾ Modificaciones que aún dejarían el diseño muy lejos del objetivo mencionado (que para todos y cada uno de los componentes instalados e incluso los nuevos no requiera soldar, desoldar, modificar pistas...).