En su ejemplo, a y b no están inicializados, pero supongo que desea una división con b := 0
en algún lugar, esta respuesta es solo para FPGA:
Desde el paquete numeric_std.vhd:
- NOTA: Si el segundo argumento es cero para el operador "/", una gravedad
Se emite un nivel de ERROR.
-- Id: A.21 function "/" (L,R: UNSIGNED ) return UNSIGNED;
Así que en la simulación esto debería fallar. Si no falla, deberías encontrar un simulador mejor.
En síntesis:
-
Vivado solo admite la división por potencias de 2 en versiones anteriores e intentará deducir una unidad Divider LogiCORE para otras, que no admite la división por un 0 constante (por lo que es un error de síntesis) y permite la opción detección de errores al intentar dividir por una variable que podría ser 0. No he intentado lo que sucede si desactiva esta inferencia en las ediciones actuales, pero sospecho que nuevamente solo acepta potencias de 2.
-
Los productos actuales de Quartus intentan inferir un divisor DSP con limitaciones extremadamente similares a las del divisor Xilinx. No tengo idea de lo que sucede cuando intenta sintetizarlo en LUT puras. Sé que la división se puede inferir para poderes no binarios y es horrible.
No intentes dividir por cero.