`timescale 1 ns/ 1 ps
module pruebas;
logic [3:0] a ,b,c;
logic clk;
logic [3:0] cola [$];
logic [3:0] cola_limited [$:3];
int tamanyo;
int tamanyo_limited;
initial
begin
@(posedge clk) a=1;
$display("empezamos a escribir elementos por la derecha en ambas colas");
cola_limited.push_back(a);
cola.push_back(a);
tamanyo_limited=cola_limited.size();
tamanyo=cola.size();
$display("cola1=",cola);
$display("cola2=",cola_limited);
@(posedge clk) a=2;
cola_limited.push_back(a);
cola.push_back(a);
tamanyo_limited=cola_limited.size();
tamanyo=cola.size();
$display("cola1=",cola);
$display("cola2=",cola_limited);
@(posedge clk) a=3;
$display("empezamos a escribir elementos por la izquierda en ambas colas");
cola_limited.push_front(a);
cola.push_front(a);
tamanyo_limited=cola_limited.size();
tamanyo=cola.size();
$display("cola1=",cola);
$display("cola2=",cola_limited);
@(posedge clk) a=4;
cola_limited.push_front(a);
cola.push_front(a);
tamanyo_limited=cola_limited.size();
tamanyo=cola.size();
$display("cola1=",cola);
$display("cola2=",cola_limited);
@(posedge clk) a=5;
cola_limited.push_back(a);
cola.push_back(a);
tamanyo_limited=cola_limited.size();
tamanyo=cola.size();
$display("cola1=",cola);
$display("cola2=",cola_limited);
@(posedge clk) ;
$display("empezamos a leer elementos de cola1 por la izquierda");
$display("empezamos a leer elementos de cola2 por la derecha");
b=cola_limited.pop_back();
c=cola.pop_front();
tamanyo_limited=cola_limited.size();
tamanyo=cola.size();
$display("cola1=",cola);
$display("cola2=",cola_limited);
@(posedge clk) ;
b=cola_limited.pop_back();
c=cola.pop_front();
tamanyo_limited=cola_limited.size();
tamanyo=cola.size();
$display("cola1=",cola);
$display("cola2=",cola_limited);
end
initial
begin
clk=0;
forever #50 clk=~clk;
end
endmodule