Declarar cola en verilog

2

Escribí un código simple para declarar una cola y usarlo en verilog, pero siempre da un error cuando uso la herramienta de sintetización ISE 14.6.

module queues; 
byte qu [$] ;

initial
begin
qu.push_front(2);
qu.push_front(12);
qu.push_front(22);
qu.push_back(11);
qu.push_back(99);
$display(" %d ",qu.size() );
$display(" %d ",qu.pop_front() );
$display(" %d ",qu.pop_back() );
qu.delete(3);
$display(" %d ",qu.size() );
end
endmodule

Estos son los errores:

  1. Error de sintaxis cerca de "$"
  2. el byte es un tipo desconocido
  3. Módulo ignorado debido a errores anteriores.

Entonces, ¿cuál será el problema? ¿Hay alguna biblioteca que deba incluirse? !!

    
pregunta sepeee

1 respuesta

5

Las colas son SystemVerilog y no son sintetizables. Las colas están destinadas solo para ser utilizadas en simulación para verificación y modelado de comportamiento.

Si desea que se sintetice una funcionalidad de cola, debe crear una matriz de tamaño fijo y administrar el (los) puntero (s).

SystemVerilog y Verilog tienen características que solo se pueden usar en simulación. El lenguaje en sí mismo proporciona requisitos sobre lo que debe y no debe ser sintetizable. Depende del creador del sintetizador decidir que puede admitir. La mayoría de los sintetizadores tienen un soporte muy similar (nadie quiere ser superado por un competidor). Pero algunas cosas son intrínsecamente difíciles o poco prácticas de sintetizar. En general, para poder sintetizarse, la definición y los atributos deben ser estáticos. Una cola tiene un tamaño dinámico, por lo tanto no es sintetizable.

    
respondido por el Greg

Lea otras preguntas en las etiquetas