35 / 37 · Concepto
Compilación, lint y síntesis: alcance de los diagnósticos
Fija archivos, top y lenguaje; distingue sintaxis, anchura y latches de la verificación funcional.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Fija qué se pidió comprobar
Un resultado necesita lista de fuentes, top, parámetros, modo de lenguaje y versión. Compila el DUT con dependencias y el banco como top de simulación separado; no sintetices su generador de reloj ni confundas un módulo no instanciado con el probado. Estos ejemplos usan un subconjunto sintetizable práctico. El soporte cambia entre simuladores y motores de producto; .sv no garantiza todas las características.
Compilar no prueba los requisitos
Puede detectar sintaxis, módulos faltantes y referencias inválidas, pero no la aritmética ni la prioridad de reset. Simular compara los escenarios ejercitados. PASS respalda esas comparaciones con esa fuente y herramienta. Para el laboratorio:
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvpRegistra ambas salidas. Ejecutar un sim.vvp anterior tras un fallo de compilación produce un PASS engañoso; crea salida nueva por configuración y detente si no compila.
Revisa causas
| Diagnóstico | Pregunta |
|---|---|
| Módulo faltante | ¿Archivo incluido y nombre correcto? |
| Truncamiento | ¿Qué bits, acarreo o signo se pierden? |
| Latch inferido | ¿Qué camino combinacional omite asignación? |
| Varios controladores | ¿Quién es propietario de la señal? |
| Señal sin usar | ¿Intencional o conexión ausente? |
| Lazo combinacional | ¿Vuelve a la entrada sin registro? |
No silencies todo para limpiar el log. Corrige causas o documenta una excepción estrecha, intencional y probada. Las categorías dependen de versión. La referencia oficial de Verilator explica WIDTH y LATCH. Si está instalado, añade:
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.svEs una ruta propuesta, no afirmación de que se ejecutó. Separa comandos realmente usados y sugeridos.
Síntesis es otra frontera
Una comprobación genérica con Yosys:
yosys -p 'read_verilog -sv modulo_tick.sv periodic_accumulator.sv; hierarchy -check -top periodic_accumulator; proc; opt; check -assert; stat'Comprueba front end y estructura genérica, no recursos de FPGA concreta, colocación, enrutamiento, cierre temporal o aceptación de fabricación. Mapeo tecnológico y restricciones requieren otro flujo.
Práctica: separa copias defectuosas del DUT entregado
Crea copias desechables con nombre hijo incorrecto, suma de nueve bits truncada a ocho y una asignación combinacional omitida. Comprueba qué herramienta detecta cada caso y cuál exige prueba funcional. Un aviso de anchura puede ser intencional y un latch puede compilar. Compara comportamiento con requisitos. Conserva un fallo relevante y la fuente restaurada; diagnósticos inexplicados siguen abiertos.