How to get array of coverpoints

You can’t use a generate statement inside a covergroup. But you can declare an array of covergroups each with a single coverpoint:

   bit [1:0] ptr[192];
   covergroup ptr_val_cg(ref bit [1:0] ptr);
      coverpoint ptr { bins ptr_val = {0,1,2};}
   endgroup 

   ptr_val_cg ptr_cg[192];
   initial begin
      foreach (ptr[i])
	ptr_cg[i] = new(ptr[i]);
   end