Assigning different clock for a interface array

In reply to jie:

There is a problem with the expression {“rx_vif_”, i} in these two statements:

if (!uvm_config_db#(virtual type_rx_if)::get(this, "", {"rx_vif_", i}, sigs [ i ])) begin
uvm_config_db#(virtual type_rx_if)::set(uvm_root::get(), "*", {"rx_vif_", i}, rx_vif [ i ]);

Since i is an int, not a string , the concatenation is treated as an integral concatenation creating an 88-bit value “rx_vif_” . This integral expression gets converted back to a string, but the first character in the expression truncates the string. Even when the last character goes to 1,2,3,… etc., the argument to the get/set method only sees “rx_vif_”.
Technically, this implicit conversion from an integral to a string type is illegal and the compiler should have flagged it as an error. However, because of bug compatibility that vendors are sometimes forced to implement, most simulators will not flag this error by default.

The correct way to write this expression is $sformatf(“rx_vif_%0d”,i)