Hello All,
I am trying to write explicit bins for IO commands with size as multiple of 512 ( upto 256K ). I am aware that with clause helps us define bins for such scenarios
Other values of io_size are illegal
// Asume 'io_size' is 19-bit
coverpoint tr.io_size {
bins io_size[] = {[512:262144]} with ( item % 512 == 0 );
// Non-multiple of 512 and all values greater than 256K are illegal
illegal_bins io_size_ill = default ; }
As per LRM ::
“The default specification defines a bin that catches the values of the coverage point that do not lie within any of the defined bins. The default is useful for catching unplanned or invalid values.”
(Q1) Would this mean that for io_size values from [0:511] , [513:255] , … [ 2,62,145:524287] would fall under default ?
(Q2) Can illegal_bins be combined with default bins ?
(Q3) Would this an alternative for illegal_bin ‘io_size_ill’ ? ::
// Asume 'io_size' is 19-bit
coverpoint tr.io_size {
bins io_size[] = {[512:262144]} with ( item % 512 == 0 );
// Non-multiple of 512 and all values greater than 256K are illegal
illegal_bins io_size_ill = {[0:$]} with ( item % 512 != 0 );
}
(Q4) For the explicit bins ‘io_size’ what is the bit width used for the state values ?
// Asume 'io_size' is 19-bit
coverpoint tr.io_size {
bins io_size[] = {[512:262144]} with ( item % 512 == 0 );
}
(a) Do the state values 512 , 262144 ( as well as value 512 within with_clause ) use 19-bit width ( as 'io_size is 19-bit ) ?
(b) Can user specify the values in non-decimal format eg: hexadecimal or octal
// Asume 'io_size' is 19-bit
coverpoint tr.io_size {
bins io_size[] = {['h200:'h40000]} with ( item % 'h200 == 0 );
}
Would the hexadecimal values use 19-bit-width ?