Básicos de la UVM secuencia de simulación de consulta
-
22-12-2019 - |
Pregunta
Tengo un par de problemas con un básico de la UVM basado TB estoy tratando de entender las secuencias y de su funcionamiento.
- bvalid es ser escogido siempre como 0 en el controlador al que se actualiza en el elemento de respuesta
- Par de mensajes de error de los últimos 2 transacciones (# UVM_ERROR @ 18:uvm_test_top.axi_agent1.axi_base_seqr1@@axi_base_seq1 [uvm_test_top.axi_agent1.axi_base_seqr1.axi_base_seq1] Respuesta de la cola de desbordamiento, la respuesta fue abandonado)
Aquí está el enlace a la compilación de código de EDA zona de juegos infantil http://www.edaplayground.com/x/3x9
Alguna sugerencia sobre lo que me falta??
Gracias
venkstart
Solución
Tener un vistazo a la especificación de $urandom_range es una muestra de la firma como: function int unsigned $urandom_range( int unsigned maxval, int unsigned minval = 0 )
.Cambiar su llamada para $urandom_range(1, 0)
y debería funcionar.
El segundo error proviene del hecho de que usted está enviando las respuestas desde el controlador y no les recogiendo en su secuencia.Esta es la línea que hace es: seq_item_port.item_done(axi_item_driv_src);
.Ya sea sólo de hacer seq_item_port.item_done();
(no enviar las respuestas) o poner una llamada a get_response()
dentro de la secuencia después de finish_item()
.Lo que suele hacer es actualizar los campos de la solicitud original y solo llame item_done()
.Por ejemplo, si empiezo una transacción de lectura, en mi conductor me gustaría conducir las señales de control y espere a que el DUT para responder, la actualización de la data
campo de la solicitud con los datos que tengo de el DUT y llame a item_done()
en mi controlador para marcar la solicitud como hecho.De esta forma si necesito estos datos en mi secuencia (para restringir el futuro de elemento, por ejemplo) que la tengo.