software descargar concatenar verilog

descargar - verilog software



Tarea automática Verilog (4)

Significa que la tarea es reentrante: los elementos declarados dentro de la tarea se asignan dinámicamente en lugar de compartirse entre diferentes invocaciones de la tarea.

Ya ves, algunos de nosotros hacemos Verilog ... (ugh)

¿Qué significa si una tarea se declara con la palabra clave automática en Verilog?

task automatic do_things; input [31:0] number_of_things; reg [31:0] tmp_thing; begin // ... end endtask;

Nota: Esta pregunta es principalmente porque tengo curiosidad si hay programadores de hardware en el sitio. :)


La palabra clave "automática" también le permite escribir funciones recursivas (desde verilog 2001). Creo que deberían ser sintetizables si tocan fondo, pero no estoy seguro de si tienen soporte de herramientas.

¡Yo también, hago verilog!


Como dicen Will y Marty, la automática estaba destinada para funciones recursivas.

Si se llama a una función normal (es decir, no automática) con diferentes valores y el simulador la procesa en el mismo segmento de tiempo, el valor devuelto es indeterminado. ¡Eso puede ser un error bastante difícil de detectar! Esto es solo un problema de simulación, cuando se sintetiza la lógica será correcta.

Hacer la función automática corrige esto.


"automático" de hecho significa "reentrada". El término en sí es robado de los lenguajes de software; por ejemplo, C tiene la palabra clave "auto" para declarar variables que se asignan en la pila cuando se ejecuta el ámbito en el que está, y luego se desasigna, de modo que múltiples invocaciones del mismo alcance no ver los valores persistentes de esa variable. La razón por la que puede que no haya oído hablar de esta palabra clave en C es que es la clase de almacenamiento predeterminada para todos los tipos :-) Las alternativas son "estáticas", lo que significa "asignar esta variable estáticamente (a una única ubicación global en la memoria), y se refieren a esta misma ubicación de memoria durante la ejecución del programa, independientemente de cuántas veces se invoque la función "y" volátil ", lo que significa" esto es un registro en otro lugar en mi SoC o algo en otro dispositivo que no tengo control, compilador, no optimice las lecturas para mí, incluso cuando crea que conoce mi valor de lecturas anteriores sin escrituras intermedias en el código ".

"automático" está destinado para funciones recursivas, pero también para ejecutar la misma función en diferentes hilos de ejecución al mismo tiempo. Por ejemplo, si "bifurca" N bloques diferentes (usando el enunciado tenedor-> unión de Verilog), y hace que todos invoquen la misma función al mismo tiempo, surgen los mismos problemas que una función que se hace llamar recursivamente.

En muchos casos, su código estará bien sin declarar la tarea o función como "automática", pero es una buena práctica ponerlo ahí a menos que específicamente lo necesite de otra manera.