In reply to Karmapanchal:
it is okay. covergroup cg_param is implemented with overridden sample function which accepts two arguments “mode” and “dut_type”. These two arguments can be passed with any type-compatible variables or parameters down to your design hierarchy.
covergroup cg_param with function sample (int mode, dutT dut_type);
..
endgroup