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);
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.