Coverpoint bins for 64bits wide value

In reply to Luca Iovinella:

This is because unsized numeric literals are implicitly 32-bit integer types. The result of 2**64 is 32 bit number 32’b0. And you should not be using int or longint if your values are unsigned.

typedef bit [63:0] uint64_t;

covergroup cg_val (string name, uint64_t min, max) with function sample (uint64_5 value);
  cp_value: coverpoint value
  { 
    bins min = {min};
    bins val[10] = {[min+1 : max-1]};
    bins max = {max};
  }
endgroup: cg_val