Altifigence Academy

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.

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:

text
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvp

Registra 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ósticoPregunta
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:

text
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.sv

Es 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:

text
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.

Tu elección se aplica a este navegador. Puedes cambiarla en el pie de página.