Plan de testing¶
El oráculo de todo lo que sigue es el modelo dorado. La métrica de rigor es única: comparación bit a bit, nunca inspección visual.
Niveles¶
| Nivel | Qué | Herramienta | Cuándo corre |
|---|---|---|---|
| L0 | Unidades del RTL custom | cocotb + Verilator | Cada push |
| L1 | Integración con IP de Xilinx | cocotb + xsim | Cada push (nocturno si es lento) |
| L2 | Hardware-in-the-loop: vector → placa → comparación bit-exacta con NumPy | Runner sobre ZedBoard | Cada merge a main |
| L3 | Subsistema: matriz de timing, perfiles SSI, throughput | Scripts + osciloscopio | Por hito |
| L4 | Sistema: rayos end-to-end hasta un stub de DSP | Banco completo | Por hito |
L0 usa Verilator porque es gratis y rápido; L1 usa xsim porque los cores del DDC son cajas negras que Verilator no puede elaborar. Un único runner cocotb cubre los dos backends — ver D-05.
Suite de aceptación del DDC¶
Autoría de los especialistas de dominio. Cada caso se ejecuta en L0/L1 (simulación) y en L2 (placa), y los dos resultados deben coincidir con el modelo NumPy bit a bit.
- Tono puro en el centro de banda: amplitud, fase y frecuencia de salida dentro de tolerancia.
- Barrido de tono a lo largo de toda la banda de Nyquist, incluyendo los bordes y el punto de aliasing.
- Dos tonos: verificación de rechazo de imagen y de productos de intermodulación.
- Respuesta al impulso y respuesta al escalón de la cadena completa.
- Respuesta de banda de paso y atenuación de banda eliminada frente a la plantilla.
- Compensación de droop del CIC dentro de tolerancia.
- Comportamiento en saturación: entrada a fondo de escala, entrada sobre-escala, reporte de overflow.
- Robustez: offset DC, desbalance I/Q inyectado, ruido gaussiano a varios SNR.
- Conmutación 125 ↔ 250 m: continuidad y ausencia de artefactos en el rayo de transición.
- Retune del NCO en caliente (camino AFC): amplitud del transitorio y tiempo de asentamiento.
- Conteo de bins correcto en ambos modos y en todas las extensiones de rango.
Suite de timing¶
- Producto cartesiano completo: 4 triggers × 3 anchos de pulso × PRF {200, 326, 500, 651, 999, 1200} × modos de pulso.
- Jitter de trigger medido en fabric y con osciloscopio; los dos deben concordar — si no concuerdan, uno de los dos métodos está mal y hay que saber cuál.
- Estabilidad del periodo sobre 10⁶ PRIs.
- Alineación entre el trigger y el primer bin de rango.
- Cambio de PRF en caliente: sin PRI corta ni larga espuria.
- Rechazo de combinaciones ilegales de PRF × rango con el código de error correcto (D-09).
Suite SSI¶
Tres implementaciones independientes, porque una sola no da confianza — ver Z3. Los cinco perfiles de movimiento de antena: rotación constante, aceleración, wrap de 360°, parada y glitch.
El criterio de aceptación no es «az/el correcto» sino az/el correcto con error temporal acotado y medido, porque la parte sutil es la latencia de la lectura SSI frente al instante del trigger.
Inyección de fallos¶
El catálogo original lista pérdida de link JESD, que aquí no existe. Los sustitutos tienen la misma forma de fallo, que es lo que importa para validar la respuesta del sistema:
| Fallo del plan original | Sustituto en ZedBoard | Comportamiento esperado |
|---|---|---|
| Pérdida de link JESD204B | Underrun de la fuente de muestras (SSA) | BITE lo reporta, el gating se detiene limpiamente, recuperación sin reset |
| Overrun de DMA | Idéntico: consumidor del PS ralentizado a propósito | Descarte contabilizado, sin corrupción, BITE |
| Glitch de encoder | Timeout SSI, trama corta, salto de Gray | Rayo marcado como az/el inválido, no descartado |
| Pérdida de reloj | Pérdida de lock de MMCM | BITE, parada segura |
| — | Pérdida de link Ethernet y reconexión | Reconexión sin reset de la placa |
| — | Configuración inválida desde el par remoto | Rechazo con código, estado anterior preservado |
Las dos últimas filas son fallos que el plan original no cubría y que esta plataforma sí permite ejercitar, porque el 1GbE y el plano de control son reales.
Endurecimiento¶
- Soak de 72 h a peor caso de PRF y rango.
- Campaña de throughput sintética, desacoplada del fabric dilatado — ver Fases, Z5.
Métrica de rigor¶
Ninguna prueba pasa por «se ve razonable». Toda salida del DDC se compara bit a bit con el modelo NumPy. Si hay discrepancia, o el RTL está mal o el modelo está mal; en los dos casos hay un bug real y hay que encontrarlo. Este es el beneficio concreto de sustituir el loopback analógico por un modelo dorado: el oráculo es exacto, no estadístico.