# Increase to Queue Size not acted on

**URL:** <https://forum.uvvm.org/t/increase-to-queue-size-not-acted-on/488>\
**Category:** VVC Framework\
**Created:** [April 9, 2025, 9:43am UTC](https://forum.uvvm.org/t/increase-to-queue-size-not-acted-on/488 "2025-04-09T09:43:11Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pete](https://avatars.discourse-cdn.com/v4/letter/p/3ab097/32.png) [@Pete](https://forum.uvvm.org/u/Pete)\
**Post date:** [April 9, 2025, 9:43am UTC](https://forum.uvvm.org/t/increase-to-queue-size-not-acted-on/488/1 "2025-04-09T09:43:11Z")

</div>

Hi,

I’m getting the following error:

> UVVM:  
> UVVM: \*\*\* TB\_WARNING #1 \*\*\*  
> UVVM: 12875098160 ns UART\_VVC,1,RX  
> UVVM: Queue is now at 950 of 1000 elements.  
> UVVM:  
> UVVM:  
> UVVM: =========================================================================================================================================================================  
> UVVM: \*\*\* TB\_ERROR #1 \*\*\*  
> UVVM: 12875098160 ns UART\_VVC,1,RX  
> UVVM: check\_value() =\> Failed. Boolean was false. ‘add() into generic queue (of size 1000) when full’  
> UVVM:

I have increased the queue sizes using the generic method:

i1\_uart\_vvc : entity bitvis\_vip\_uart.uart\_vvc  
generic map(  
GC\_INSTANCE\_IDX =\> 1,  
GC\_UART\_CONFIG =\> C\_UART\_BFM\_CONFIG,  
GC\_CMD\_QUEUE\_COUNT\_MAX =\> 5000,  
GC\_CMD\_QUEUE\_COUNT\_THRESHOLD =\> 4900,  
GC\_RESULT\_QUEUE\_COUNT\_MAX =\> 5000,  
GC\_RESULT\_QUEUE\_COUNT\_THRESHOLD =\> 4900  
)

and, when that didn’t work, for good measure, also using the shared variable:

```
shared_uart_vvc_config(RX, 1).cmd_queue_count_max := 5000;
shared_uart_vvc_config(TX, 1).cmd_queue_count_max := 5000;
shared_uart_vvc_config(RX, 1).cmd_queue_count_threshold := 4900;
shared_uart_vvc_config(TX, 1).cmd_queue_count_threshold := 4900;

shared_uart_vvc_config(RX, 1).result_queue_count_max := 5000;
shared_uart_vvc_config(TX, 1).result_queue_count_max := 5000;
shared_uart_vvc_config(RX, 1).result_queue_count_threshold := 4900;
shared_uart_vvc_config(TX, 1).result_queue_count_threshold := 4900;

```

The log is showing that the size of the queue has increased but the error is still triggering:

UVVM: ID\_CONSTRUCTOR 0.0 ns UART\_VVC,1,TX VVC instantiated for channel TX  
UVVM: ID\_CONSTRUCTOR\_SUB 0.0 ns UART\_VVC,1,TX Command queue instantiated and will give a warning when reaching 5000 elements in queue.  
UVVM: ID\_CONSTRUCTOR\_SUB 0.0 ns UART\_VVC,1,TX Result queue instantiated and will give a warning when reaching 5000 elements in queue.  
UVVM: ID\_CONSTRUCTOR 0.0 ns UART\_VVC,1,RX VVC instantiated for channel RX  
UVVM: ID\_CONSTRUCTOR\_SUB 0.0 ns UART\_VVC,1,RX Command queue instantiated and will give a warning when reaching 5000 elements in queue.  
UVVM: ID\_CONSTRUCTOR\_SUB 0.0 ns UART\_VVC,1,RX Result queue instantiated and will give a warning when reaching 5000 elements in queue.

There aren’t any later ID\_CONSTRUCTOR\_SUB log entries.

The problem seems to occur when I am using fetch\_result. It seems like the command or result is not being cleared off the queue. Is there something else I need to do to ensure the queue gets cleared down - note that flush\_command\_queue() doesn’t seem to make any difference, perhaps pointing to an issue with the Results queue.

I had the problem a couple of days ago and got around it by getting rid of un-needed calls to fetch\_result, but I have now added more tests where I do need to be able to receive and inspect the contents of the messages.

The test bench is reasonably large, it runs for 12778094550.0 ns before failing. The TB is sending and receiving a 32 byte message in and out of the DUT at 10Hz.

UVVM tag: 2025.03.25  
ModelSim: SE-64-2021.3

Any help or workarounds would be appreciated.

Many thanks,  
Pete

---

<div class="post-metadata">

**Author:** ![Pete](https://avatars.discourse-cdn.com/v4/letter/p/3ab097/32.png) [@Pete](https://forum.uvvm.org/u/Pete)\
**Post date:** [April 10, 2025, 8:35am UTC](https://forum.uvvm.org/t/increase-to-queue-size-not-acted-on/488/2 "2025-04-10T08:35:12Z")

</div>

Hi again,

I’ve got around the problem by modifying the queue declaration in UVVM-2025.03.25/uvvm\_util/src/generic\_queue\_pkg.vhd to be:

> package generic\_queue\_pkg is
> 
> generic(type t\_generic\_element;  
> scope : string := C\_SCOPE;  
> GC\_QUEUE\_COUNT\_MAX : natural := 5000; – 1000;  
> GC\_QUEUE\_COUNT\_THRESHOLD : natural := 4900); – 950);

However, this doesn’t make much sense as the code that is used to change the size of the queue looks good - it changes the correct variable, and that variable is used throughout as expected.

So something weird is going on - maybe I have a compiler problem??

Also, there is still the problem that the entries do not appear to be being removed from the queue and causing it to fill up in the first place.

Confused, but able to move on…

Cheers,  
Pete

---

<div class="post-metadata">

**Author:** ![Marius](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.uvvm.org/marius/32/43_2.png) [@Marius](https://forum.uvvm.org/u/Marius)\
**Post date:** [April 10, 2025, 3:04pm UTC](https://forum.uvvm.org/t/increase-to-queue-size-not-acted-on/488/3 "2025-04-10T15:04:17Z")

</div>

Hi, thank you for the report. I agree this seems a bit strange - we will have to investigate what is happening. Having a quick look at the code, I do not see why there should be an issue with setting the queue size.  
The issue with the queue filling up seems to be a bug. I will create a ticket so that we can follow up this issue.

---

<div class="post-metadata">

**Author:** ![Erick](https://avatars.discourse-cdn.com/v4/letter/e/bbce88/32.png) [@Erick](https://forum.uvvm.org/u/Erick)\
**Post date:** [September 5, 2025, 7:27am UTC](https://forum.uvvm.org/t/increase-to-queue-size-not-acted-on/488/4 "2025-09-05T07:27:39Z")

</div>

> [@Pete](#):
>
> 25.03.25

Hi Pete,

I was trying to replicate this issue with a simple test where I first send some UART data in one VVC and then receive it in another one:

```auto
for i in 1 to 1001 loop
  uart_transmit(UART_VVCT, C_UART_1_VVC_IDX, TX, x"AF", "Send data to UART 0");
end loop;

for i in 1 to 1001 loop
  uart_receive(UART_VVCT, C_UART_2_VVC_IDX, RX, "Receive data from UART 1");
  await_completion(UART_VVCT, C_UART_2_VVC_IDX, RX, 1 ms, "Wait for receive to finish");
end loop;

```

And I manage to get the warning and error:

> UVVM: \*\*\* WARNING #1 \*\*\*
> 
> UVVM: 0 ns UART\_VVC,0,TX
> 
> UVVM: Queue is now at 950 of 1000 elements.
> 
> UVVM:
> 
> UVVM: \*\*\* WARNING #2 \*\*\*
> 
> UVVM: 1046060 ns UART\_VVC,1,RX
> 
> UVVM: Queue is now at 950 of 1000 elements.
> 
> UVVM: =========================================================================================================================================================================
> 
> UVVM: \*\*\* TB\_ERROR #1 \*\*\*
> 
> UVVM: 1101060 ns UART\_VVC,1,RX
> 
> UVVM: check\_value() =\> Failed. Boolean was false. ‘add() into generic queue (of size 1000) when full’
> 
> UVVM: =========================================================================================================================================================================

However, when I increase the queue sizes in the VVCs generics, the warnings and error disappear:

```auto
  i1_uart_vvc : entity bitvis_vip_uart.uart_vvc
    generic map(
      GC_INSTANCE_IDX => C_UART_1_VVC_IDX,
      GC_UART_CONFIG => C_UART_BFM_CONFIG_DEFAULT,
      GC_CMD_QUEUE_COUNT_MAX => 5000,
      GC_CMD_QUEUE_COUNT_THRESHOLD => 4900,
      GC_RESULT_QUEUE_COUNT_MAX => 5000,
      GC_RESULT_QUEUE_COUNT_THRESHOLD => 4900
    )
    port map(
      uart_vvc_rx => uart_vvc_rx_1,
      uart_vvc_tx => uart_vvc_tx_1
    );

  uart_vvc_rx_2 <= uart_vvc_tx_1 after 10 ns;
  uart_vvc_rx_1 <= uart_vvc_tx_2 after 10 ns;

  i2_uart_vvc : entity bitvis_vip_uart.uart_vvc
    generic map(
      GC_INSTANCE_IDX => C_UART_2_VVC_IDX,
      GC_UART_CONFIG => C_UART_BFM_CONFIG_DEFAULT,
      GC_CMD_QUEUE_COUNT_MAX => 5000,
      GC_CMD_QUEUE_COUNT_THRESHOLD => 4900,
      GC_RESULT_QUEUE_COUNT_MAX => 5000,
      GC_RESULT_QUEUE_COUNT_THRESHOLD => 4900
    )
    port map(
      uart_vvc_rx => uart_vvc_rx_2,
      uart_vvc_tx => uart_vvc_tx_2
    );

```

I also tested using the fetch\_result and I see that the result\_queue queue empties completely if I run the same number of fetch commands.

I am using a newer version of Modelsim PE 2025.1, but I also tried with GHDL and NVC.

Perhaps you could share a short version of your testbench to replicate the issue?

---

<div class="post-metadata">

**Author:** ![Pete](https://avatars.discourse-cdn.com/v4/letter/p/3ab097/32.png) [@Pete](https://forum.uvvm.org/u/Pete)\
**Post date:** [September 9, 2025, 2:34pm UTC](https://forum.uvvm.org/t/increase-to-queue-size-not-acted-on/488/5 "2025-09-09T14:34:41Z")

</div>

Hi Erick,

Thanks for looking at the problem, I’ve now moved project so I don’t have the setup anymore.

I was using a pretty old version of ModelSim so I think it was probably a compiler problem of some sort.

Thanks again,

Pete
