Not all simulators support real number randomization (or it requires a separate license). As such, real numbers are not declared as `rand` by default.
This behavior can be changed by throwing the following define during verilog compilation:
+define+pb_real_rand=rand
UVM does not provide object field macros for queues of type real. Thus, real number queues will not print, pack/unpack, or compare, copy, etc.
Groups have been deprecated in the protocol buffer specification.
The allow_alias option on enums will create illegal enumerations in SystemVerilog as for a given enumeration type, each enumeration constant must have a unique value.
UVM does not provide object field macros for nested arrays. Thus, these fields will not print, pack/unpack, or compare, copy, etc.
To make randomization as easy as possible, class members do not use the `local` modifier or setters and getters. This makes it impossible to make know if a field has been manually initialized. If an object is randomized or created from deserialization, all required field are marked as initialized.
The previously mentioned about required fields means that multiple fields in a oneof may be serialized which could cause errors in parsers in different languages when deserializing.