In reply to vickydhudashia:
The issue is the Max index of the queue is 20 .
So q[21] , q[22] , q[23] don’t exist
The Error arises since your constraint tries to access such invalid indexes .
Constraint Guard is helpful such cases ( Refer LRM for more info )
constraint q_c {
q.size == 21;
foreach (q[i])
{
q[i] inside {[1:4]};
//q[i] == 1 -> q[i+1] != 1 -> q[i+2] != 1;
if (q[i] == 1)
{
if( i < 19 ) // Constraint Guard
{
q[i+1] != 1;
q[i+2] != 1;
}
}
//q[i] == 2 -> q[i+1] != 2 -> q[i+2] != 2 -> q[i+3] != 2;
if (q[i] == 2)
{ if( i < 18 ) // Constraint Guard
{
q[i+1] != 2;
q[i+2] != 2;
q[i+3] != 2;
}
}
}
}