En primer lugar os incluyo un vídeo para que podáis ver los diferentes tipos de arrays disponibles en systemverilog trabajando con una herramienta de verificación. Es importante para que veais las diferentes características de estos tipos de arrays y los mecanismos de visualización diferentes que aporta questasim para los mismos
Si deseamos ver una simulación del funcionamiento de las colas podemos fijarnos el siguiente vídeo que simula el código que se adjunta a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
`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 |