GPIO_CHECK_STABLE is not ignoring changes on bits I define as don't care. Bug?

I have 5 signals of an SLV hooked up to a GPIO VVC. They are outputs of the DUT. I just want to make sure that the MSB has remained stable ‘0’ for the previous 5 ms. Here is a snippet of my code:
wait for 5 ms;
gpio_check_stable(GPIO_VVCT, 1, “0----”, 5 ms, “Make sure no IRQ_OUT occurs”, ERROR);
await_completion(GPIO_VVCT, 1, 100 * C_CLK_PERIOD);

The Questa simulator shows an error

UVVM: =================================================================================================================================================

UVVM: *** ERROR #1 ***

UVVM: 5168790 ns GPIO_VVC,1

UVVM: gpio_check_stable(x"0X", 5000000 ns) => Failed. Switched from x01 to x03 500 ns ago. Expected stable for 5000000 ns

Why is is monitoring changes on the don’t care bits?

Hi,
We will need to investigate this issue. Thanks for reporting.

Regards,
Marius

Hi Marius, Has any progress been made on this? Were you able to recreate it? Thanks Gary

Hi Gary,
I don’t think this issue has been addressed yet, but I’ve increased its priority to high. I’ll keep you updated on how it progresses.

Br,
Marius

Hi,

We have looked into the issue. As you stated, we also observed that gpio_check_stable does not ignore changes in the don’t-care bits of an SLV. The gpio_check_stable() procedure calls the check_stable() procedure and it uses the last_event attribute to store the time since the last event on a signal. Since last_event is applied to the entire SLV (slv’last_event), it records the time of the last event on any bit within the vector. This is why gpio_check_stable does not ignore don’t-care bits and alerts an error.

However, we do not see an easy way to retrieve last_event on a single element of an SLV. We attempted to do so using a for-loop with indexing, (i.e., slv(i)'last_event), but encountered a compile error stating:

error: prefix of 'last_event attribute must be a static name

The only way this works is if the vector length is fixed before compilation and the index is known at elaboration time, e.g., slv(0)'last_event, slv(1)'last_event, etc. If you know any workaround for this limitation, please let us know.

You may use the std_logic overload variant of check_stable(), which is defined in methods_pkg.vhd to check the stability of a single bit. However, we are unsure if this would be sufficient for your application.

Therefore, we concluded that it is not possible to ignore changes in don’t-care bits in an SLV using the gpio_check_stable / check_stable procedure. Nevertheless, we noticed that some comments in the implementation might be misleading, and the GPIO documentation does not clearly specify on using don’t-care bits in an SLV. To address this, we will update the documentation and implementation comments for clarity.

If you have any further questions, please let us know.

Best regards,
Jusong / The UVVM Team