Escribí un código simple para declarar una cola y usarlo en verilog, pero siempre da un error cuando uso la herramienta de síntesis 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:
Entonces, ¿cuál será el problema? ¿Hay alguna biblioteca que debería incluirse?
Las colas son SystemVerilog y no son sintetizables. Las colas están destinadas únicamente a ser utilizadas en simulación para verificación y modelado de comportamiento.
Si desea sintetizar una funcionalidad de cola, debe crear una matriz de tamaño fijo y administrar los punteros.
SystemVerilog y Verilog tienen características que solo se pueden usar en simulación. El lenguaje en sí proporciona requisitos sobre lo que debe y no debe ser sintetizable. Depende del creador del sintetizador decidir que puede soportar. La mayoría de los sintetizadores tienen un soporte muy similar (nadie quiere ser superado por un competidor). Pero algunas cosas son inherentemente difíciles o poco prácticas de sintetizar. En general, para ser sintetizable, la definición y los atributos deben ser estáticos. Una cola tiene un tamaño dinámico, por lo tanto, no es sintetizable.
byte [7:0] qu[$:255];
fue diseñada para ser sintetizable. Puede haber una herramienta que lo soporte.
usuario02222022
sepeee
tom carpintero