In reply to ben@SystemVerilog.us:
Three things that the language requires to be in new()
- An implicit or explicit call to super.new() as the first statement to handle non-default constructor arguments.
- Assignments to const class members that do not already have declaration initializations.
- Embedded covergroup constructors.
I believe the embedded covergroup restriction has to do the fact that the covergroup is really part of the class type, and its construction has to be in synchronization with the class construction. And there are problems with per-class-type covergroup collection as well of the construction of all covergroups is not synchronized.