issalig escribió: ↑15 May 2022, 16:53Está bien que los tests sean exigentes, pero creo que estaría bien tener unos tests "funcionales" que nos informen que funcionarán o no al ponerlos en un ordenador.
Estamos embarrancados en un problema exclusivamente lingüistico y es difícil de solucionar mientras no se comprenda plenamente la semántica. Que pase el test solo implica que cumple con unas especificaciones, dar como resultado OK y BAD quizás sea una mala elección de los términos porque induce a pensar que están bien, que están mal, pero en sentido estricto ¿qué significa este bien o este mal? Quizás podríamos usar PASSED y FAILED por ser más aproximado a la realidad y que solo indica que se pasa o no el test.
Las especificaciones son las que están en las hojas de datos de los fabricantes de las memorias y, además, en nuestro test son forzosamente más laxas porque el Nano no nos permite ir todo lo rápido que deberíamos, pero ¿cuáles serían las apropiadas para que funcionen en un ordenador concreto? Tendríamos que definirlas para poder codificarlas pero creo que va a depender de cada ordenador, de cada memoria y de la combinación ordenador-memoria, no creo que podamos establecer un criterio fijo, al menos a este nivel. Como habrás leído en el documento de las RAM de 250ns, las memorias están absolutamente fuera de especificaciones pero funcionan, el porqué queda en el aire o es una simple especulación y como tal no podemos programarla.
issalig escribió: ↑15 May 2022, 16:53Lo digo porque de 10 memorias 4164 que funcionan en un cpc6128 sólo 1 pasa los tests del tester
Como digo siempre, en principio el test siempre será el principal sospechoso, no olvidemos que está en pruebas y no podemos confiar al 100% en él. Dicho esto aquí con las TMS-15 que todas pasan bien todos los tests en el ordenador con las ROMs de diagnóstico tengo un 40% que no pasan nuestro test. Hasta ahí es más o menos lo que has dicho pero después he probado a escribir ciertos datos en toda la memoria y al leerlos para después comprobarlos, indefectiblemente son diferentes. Lo verifico otra vez con el
dump en tarjeta TF de DRAMs del RCT Pro y el mismo resultado, hay celdas que no almacenan los bits, que cuando se realiza el test están fijas a un valor. Incluso añadiendo
pull-ups a todas las salidas y/o condensadores de desacoplo adicionales por si andaban "debiluchas" se confirma el comportamiento aunque después en un uso normal probablemente -lo que no deja de ser una conjetura- con accesos aleatorios a unas y otras filas o columnas más distantes, aún estando debilitadas, responden bien. ¿Están bien las memorias? Ni en sueños, podrán funcionar en el ordenador si se reinstalan pero pueden darse por muertas aunque ellas no lo sepan porque el día menos pensado, más pronto que tarde, petarán. Después de más de 40 años, ya se pueden sentir orgullosas de haber dado servicio y aguantado todo ese tiempo.
issalig escribió: ↑15 May 2022, 16:53De hecho voy a pedir unas KM4164-12 para probar.
Todas las KM4164B-15 que he probado, tanto las de @Gomas48K como las mías, pasan el test exceptuando la @Gomas48K#11 que se fundió por error.
issalig escribió: ↑15 May 2022, 16:53Si pasa el test básico y no el complejo pues saber que va a funcionar e indicar la salud de la memoria como "MEDIA"
Con mucha más facilidad podríamos codificar un test informal y rápido que no someta a tanto estrés la memoria, ¿en qué podría consistir? Tal vez en comprobar unas cuantas direcciones arbitrarias pero bien dispersas, para no agobiar al chip, simulando de esa burda manera el comportamiento de un ordenador (y quedaría pendiente acordar con qué tiempos) pero creo que no es nuestro objetivo porque para eso lo suyo es hacerles pasar un test con una ROM de diagnóstico ya instaladas en el ordenador, que las comprobarán en una situación más próxima a la real. De momento con OK/BAD, PASSED/FAILED creo que nos vale, el "medio bien", "medio mal", "regulera tirando a maleja", es un asunto aparte. ¿Que podría programarse un test que fuera repitiéndose aumentando los tiempos aún no cumpliendo especificaciones? Seguro que sí, pero con otro micro con más memoria flash y RAM que con el Nano el código está más apretado que las tuercas de un submarino aparte que las temporizaciones en el orden de los ns no son triviales al no existir un comando como el equivalente al
delay en ms o µs, la solución actual se basa en utilizar conjuntos fijos de instrucciones en código máquina cuyo tiempo de ejecución sea conocido y aún así nuestro mínimo absoluto, nuestro "cuanto" temporal es de 62.5ns, demasiado grande.
Como es habitual, si priorizamos la fiabilidad (imprescindible si, por ejemplo, se va a soldar el chip) estamos obligando a que memorias que funcionarían perfectamente en el ordenador no pasarían el test y, viceversa, si priorizamos que sean funcionales en el caso de memorias debilitadas con fatiga de material, sería pan para hoy, hambre para mañana porque funcionarían un tiempo para irremisiblemente fallar más tarde.
Aclaro por último que por favor no se interprete nada de lo dicho como una negativa tajante, toda idea es bienvenida y no nos vamos a cerrar cerrilmente a ningún plan establecido o idea preconcebida. Este tocho es solo reflexionar en "voz alta", asumir que todo está mal de entrada, compartirlo y entre todos verificarlo y encontrar los problemas. Tranquilamente vamos avanzando y ya veremos qué sale de todo esto.