Si a, b, c y d son variables, esto no se ejecuta en paralelo:
a := b;
c := a;
Pero ¿qué pasa con lo siguiente:
a := b;
c := d;
¿Estas declaraciones se ejecutan de forma concurrente o secuencial?
Si a, b, c y d son variables, esto no se ejecuta en paralelo:
a := b;
c := a;
Pero ¿qué pasa con lo siguiente:
a := b;
c := d;
¿Estas declaraciones se ejecutan de forma concurrente o secuencial?
Cuando no hay dependencia entre dos asignaciones en un proceso de VHDL, como en el segundo ejemplo, el sintetizador puede elegir cómo deducir la lógica del código siempre que la salida sea equivalente y cumpla con las restricciones proporcionadas.
En la práctica, las dos sentencias se ejecutarán en paralelo, ya que el sintetizador comprobará que no están conectadas y creará una lógica separada para manejar las dos asignaciones.
La mejor manera que encuentro para entender cómo el sintetizador está inferiendo la lógica de su código VHDL es observar la representación esquemática de la salida de la herramienta después de los pasos de elaboración y síntesis para un diseño simple y ajustar las cosas para ver cómo cambia.
Lea otras preguntas en las etiquetas vhdl